RPi.stackexchange нашла этот вопрос ОТ для своего сайта и порекомендовала его здесь. Я не уверен, но попробую.
Переход на токены личного доступа на Github вызывает у меня серьезные головные боли, когда дело доходит до программирования и разработки на RPi. Проблема в том, как эффективно и безопасно предоставить PAT новому RPi. При новой установке я сначала запускаю git config --global credential.helper store, а затем извлекаю из неизвестного источника (например, NAS в моей локальной сети) копию .git-credentials, которая содержит (в виде открытого текста) мой жетон.
Этот метод достаточно эффективен (мне нужен только доступ к NAS), но явно небезопасен. Это также не подходит для общественных мест (например, я нормально делаю это с моими хобби-проектами дома в моей локальной сети, но в меньшей степени в моей исследовательской лаборатории, где студенты работают над своими собственными RPi и должны выполнять аналогичные задачи. ).
Существуют ли рекомендуемые стратегии для эффективного доступа push / pull к github, которые также делают разумную попытку (определяемую здесь как лучшую, чем открытый текст) для защиты PAT?
@GiulioCentorame да, а также то, как они правильно (безопасно) хранятся в среде RPi / Linux.
Не могли бы вы подробнее рассказать, как вы хотите защитить их на самом Pi? Если вы собираетесь использовать их в неинтерактивном режиме, либо (а) вам нужно хранить учетные данные в виде открытого текста, либо (б) вам нужно сохранить учетные данные в зашифрованном виде, а затем сохранить ключ шифрования в виде открытого текста ... что в основном побеждает цель. От какой модели угрозы вы пытаетесь защитить себя?
@larsks Меня больше всего беспокоит педагогика. Как упоминалось в вопросе, я использую этот процесс для своих хобби-проектов дома, и поэтому меня не волнует риск для безопасности. В условиях преподавания я хотел бы направлять студентов по передовым методам или, по крайней мере, предоставить пусть покупатель будет бдителен, чтобы они понимали риски, связанные с практикой.





Ваша проблема состоит из двух частей: как не хранить ключ в виде обычного текста и как безопасно передать его на другое устройство (а).
Есть несколько способов зашифровать текстовый файл, например с openssl.
Чтобы перенести ключ с одного устройства на другое, если у вас есть доступ к интернет-соединению на RPi, вы можете использовать программу безопасной передачи, например Волшебная червоточина.
Оба решения требуют перехода, включающего передачу паролей, который может быть выполнен через другой канал связи и должен выполняться безопасно (например, устная передача пароля OpenSSL).
Есть несколько вариантов, которые вы можете использовать для предоставления доступа к репозиторию. Вы упомянули токены личного доступа, но если вам нужен доступ только к одному репозиторию, вам, вероятно, лучше использовать ключ развертывания с SSH. Это предоставит либо доступ только для чтения, либо доступ для чтения и записи к одному репозиторию и позволит избежать некоторых рисков для остальных ваших репозиториев, связанных с компрометацией этой единственной машины.
Вы можете сделать это, если Raspberry Pi сгенерирует ключ, захватит общедоступную часть по сети и добавит ее в качестве ключа развертывания с помощью API (для которого вы будете аутентифицироваться с помощью личного токена доступа на вашем локальном компьютере). Это было бы безопасно; только Raspberry Pi будет иметь секретную часть, и вам не нужно будет делиться какими-либо секретами по сети.
Если вы входите в Raspberry Pi через SSH, вы также можете просто использовать свой собственный SSH-ключ и перенаправить агент с ssh -A, а затем вы можете нажимать и извлекать без необходимости фактически копировать какие-либо учетные данные. Это тоже безопасно.
Если ваша проблема заключается в том, как защитить доступ к частному репозиторию, когда устройство открыто для общего доступа, то, как я уверен, вы уже догадались, безопасного способа сделать это нет.
Мне неясно, что вы делали раньше, но если бы вы просто вводили свой пароль при появлении запроса, вы все равно могли бы сделать это, скопировав и вставив PAT из диспетчера паролей, но, вероятно, проще использовать SSH ключ в этом случае.
Что касается вашего последнего абзаца - я использовал пароль. RPi, с которыми я работаю, не лишены головы. Я часто перезапускаю проекты из свежего образа, но если существует менеджер PW, который функционирует из интерфейса командной строки и представляет собой однострочную установку (apt-get), тогда это тоже будет жизнеспособным. Я попробую SSH, так как обычно ориентирован на один репозиторий для каждого проекта RPi.
Проблема в том, как безопасно передать PAT?