Рекомендуемые стратегии использования Github PAT на RPi

RPi.stackexchange нашла этот вопрос ОТ для своего сайта и порекомендовала его здесь. Я не уверен, но попробую.

Переход на токены личного доступа на Github вызывает у меня серьезные головные боли, когда дело доходит до программирования и разработки на RPi. Проблема в том, как эффективно и безопасно предоставить PAT новому RPi. При новой установке я сначала запускаю git config --global credential.helper store, а затем извлекаю из неизвестного источника (например, NAS в моей локальной сети) копию .git-credentials, которая содержит (в виде открытого текста) мой жетон.

Этот метод достаточно эффективен (мне нужен только доступ к NAS), но явно небезопасен. Это также не подходит для общественных мест (например, я нормально делаю это с моими хобби-проектами дома в моей локальной сети, но в меньшей степени в моей исследовательской лаборатории, где студенты работают над своими собственными RPi и должны выполнять аналогичные задачи. ).

Существуют ли рекомендуемые стратегии для эффективного доступа push / pull к github, которые также делают разумную попытку (определяемую здесь как лучшую, чем открытый текст) для защиты PAT?

Проблема в том, как безопасно передать PAT?

Giulio Centorame 09.04.2021 22:23

@GiulioCentorame да, а также то, как они правильно (безопасно) хранятся в среде RPi / Linux.

bobthechemist 09.04.2021 22:26

Не могли бы вы подробнее рассказать, как вы хотите защитить их на самом Pi? Если вы собираетесь использовать их в неинтерактивном режиме, либо (а) вам нужно хранить учетные данные в виде открытого текста, либо (б) вам нужно сохранить учетные данные в зашифрованном виде, а затем сохранить ключ шифрования в виде открытого текста ... что в основном побеждает цель. От какой модели угрозы вы пытаетесь защитить себя?

larsks 09.04.2021 22:36

@larsks Меня больше всего беспокоит педагогика. Как упоминалось в вопросе, я использую этот процесс для своих хобби-проектов дома, и поэтому меня не волнует риск для безопасности. В условиях преподавания я хотел бы направлять студентов по передовым методам или, по крайней мере, предоставить пусть покупатель будет бдителен, чтобы они понимали риски, связанные с практикой.

bobthechemist 09.04.2021 22:42
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
4
14
2

Ответы 2

Ваша проблема состоит из двух частей: как не хранить ключ в виде обычного текста и как безопасно передать его на другое устройство (а).

Есть несколько способов зашифровать текстовый файл, например с openssl.

Чтобы перенести ключ с одного устройства на другое, если у вас есть доступ к интернет-соединению на RPi, вы можете использовать программу безопасной передачи, например Волшебная червоточина.

Оба решения требуют перехода, включающего передачу паролей, который может быть выполнен через другой канал связи и должен выполняться безопасно (например, устная передача пароля OpenSSL).

Есть несколько вариантов, которые вы можете использовать для предоставления доступа к репозиторию. Вы упомянули токены личного доступа, но если вам нужен доступ только к одному репозиторию, вам, вероятно, лучше использовать ключ развертывания с SSH. Это предоставит либо доступ только для чтения, либо доступ для чтения и записи к одному репозиторию и позволит избежать некоторых рисков для остальных ваших репозиториев, связанных с компрометацией этой единственной машины.

Вы можете сделать это, если Raspberry Pi сгенерирует ключ, захватит общедоступную часть по сети и добавит ее в качестве ключа развертывания с помощью API (для которого вы будете аутентифицироваться с помощью личного токена доступа на вашем локальном компьютере). Это было бы безопасно; только Raspberry Pi будет иметь секретную часть, и вам не нужно будет делиться какими-либо секретами по сети.

Если вы входите в Raspberry Pi через SSH, вы также можете просто использовать свой собственный SSH-ключ и перенаправить агент с ssh -A, а затем вы можете нажимать и извлекать без необходимости фактически копировать какие-либо учетные данные. Это тоже безопасно.

Если ваша проблема заключается в том, как защитить доступ к частному репозиторию, когда устройство открыто для общего доступа, то, как я уверен, вы уже догадались, безопасного способа сделать это нет.

Мне неясно, что вы делали раньше, но если бы вы просто вводили свой пароль при появлении запроса, вы все равно могли бы сделать это, скопировав и вставив PAT из диспетчера паролей, но, вероятно, проще использовать SSH ключ в этом случае.

Что касается вашего последнего абзаца - я использовал пароль. RPi, с которыми я работаю, не лишены головы. Я часто перезапускаю проекты из свежего образа, но если существует менеджер PW, который функционирует из интерфейса командной строки и представляет собой однострочную установку (apt-get), тогда это тоже будет жизнеспособным. Я попробую SSH, так как обычно ориентирован на один репозиторий для каждого проекта RPi.

bobthechemist 10.04.2021 00:56

Другие вопросы по теме