Сведения о парольных фразах ключа SSH
Доступ к данным и запись в репозиториях можно получить в GitHub с помощью SSH (протокол Secure Shell). При подключении через SSH проверка подлинности выполняется с помощью файла закрытого ключа на локальном компьютере. Для получения дополнительной информации см. [AUTOTITLE](/authentication/connecting-to-github-with-ssh/about-ssh).
При создании ключа SSH можно добавить парольную фразу для расширенной защиты ключа. При использовании ключа необходимо ввести парольную фразу. Если ключ имеет парольную фразу, и вы не хотите вводить парольную фразу при каждом использовании ключа, можно добавить ключ в агент SSH. Агент SSH управляет ключами SSH и запоминает парольную фразу.
Если у вас еще нет ключа SSH, необходимо создать новый ключ SSH для проверки подлинности. Если вы не уверены, есть ли у вас ключ SSH, можно проверить наличие существующих ключей. Дополнительные сведения см. в разделе Проверка наличия существующих ключей SSH.
Если вы хотите использовать аппаратный ключ безопасности для аутентификации GitHub, вам необходимо сгенерировать новый SSH-ключ для вашего аппаратного ключа безопасности. При проверке подлинности с помощью пары ключей необходимо подключить аппаратный ключ безопасности к компьютеру. Дополнительные сведения см. в заметках о выпуске OpenSSH 8.2.
Создание нового ключа SSH
Вы можете создать новый ключ SSH на локальном компьютере. После генерации ключа можно добавить публичный ключ в аккаунт GitHub.com , чтобы включить аутентификацию операций с Git через SSH.
Примечание.
GitHub улучшил безопасность, убрав старые небезопасные типы ключей 15 марта 2022 года.
По состоянию на эту дату ключи DSA (ssh-dss) больше не поддерживаются. Невозможно добавить новые ключи DSA в личная учетная запись на GitHub.
Ключи RSA (ssh-rsa) с valid_after до 2 ноября 2021 г. могут продолжать использовать любой алгоритм подписи. Ключи RSA, созданные после этой даты, должны использовать алгоритм подписи SHA-2. Для использования сигнатур SHA-2 может потребоваться обновить некоторые старые клиенты.
-
Откройте ТерминалТерминалGIT Bash.
-
Вставьте текст ниже, заменив указанный в примере GitHub адрес электронной почты.
ssh-keygen -t ed25519 -C "your_email@example.com"Примечание.
Если вы используете устаревшую систему, которая не поддерживает алгоритм Ed25519, используйте следующую команду:
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"В результате будет создан новый ключ SSH, где в качестве метки будет использоваться указанный адрес электронной почты.
> Generating public/private ALGORITHM key pair.Когда появится запрос "Ввести файл, в котором сохранить ключ", можно нажать клавишу ВВОД , чтобы принять расположение файла по умолчанию. Обратите внимание, что если вы создали ключи SSH ранее, ssh-keygen может попросить переписать другой ключ, в этом случае рекомендуется создать пользовательский ключ SSH. Для этого введите расположение файла по умолчанию и замените id_ALGORITHM на имя пользовательского ключа.
> Enter a file in which to save the key (/Users/YOU/.ssh/id_ALGORITHM): [Press enter]> Enter file in which to save the key (/c/Users/YOU/.ssh/id_ALGORITHM):[Press enter]> Enter a file in which to save the key (/home/YOU/.ssh/id_ALGORITHM):[Press enter] -
В командной строке введите безопасную парольную фразу. Дополнительные сведения см. в разделе Работа с парольными фразами ключа SSH.
> Enter passphrase (empty for no passphrase): [Type a passphrase] > Enter same passphrase again: [Type passphrase again]
Добавление ключа SSH в ssh-agent
Перед добавлением нового ключа SSH в ssh-agent для управления ключами необходимо проверить наличие существующих ключей SSH и создать новый ключ SSH.
При добавлении ключа SSH в агент используйте команду macOS ssh-add по умолчанию, а не приложение, установленное macports, homebrew или другим внешним источником.
-
Запустите агент SSH в фоновом режиме.
$ eval "$(ssh-agent -s)" > Agent pid 59566В зависимости от среды может потребоваться использовать другую команду. Например, вам может потребоваться доступ с правами root, для чего необходимо выполнить
sudo -s -Hперед запуском агента SSH. Может также потребоваться использоватьexec ssh-agent bashилиexec ssh-agent zshдля запуска агента SSH. -
Если вы используете macOS Sierra 10.12.2 или более поздней версии, необходимо внести изменения в файл
~/.ssh/config, чтобы автоматически загружать ключи в ssh-agent и хранить парольные фразы в цепочке ключей.-
Сначала проверьте, существует ли файл
~/.ssh/configв расположении по умолчанию.$ open ~/.ssh/config > The file /Users/YOU/.ssh/config does not exist. -
Если файл не существует, создайте файл.
touch ~/.ssh/config -
Откройте файл
~/.ssh/config, а затем внесите в него изменения, чтобы он содержал следующие строки. Если файл ключа SSH имеет другое имя или путь, отличный от примера кода, измените имя файла или путь в соответствии с текущей настройкой.Text Host github.com AddKeysToAgent yes UseKeychain yes IdentityFile ~/.ssh/id_ed25519
Host github.com AddKeysToAgent yes UseKeychain yes IdentityFile ~/.ssh/id_ed25519Примечание.
- Если вы решили не добавлять парольную фразу к ключу, следует опустить строку
UseKeychain. - Если появится сообщение об ошибке
Bad configuration option: usekeychain, добавьте дополнительную строку в раздел конфигурацииHost *.github.com.
Text Host github.com IgnoreUnknown UseKeychain
Host github.com IgnoreUnknown UseKeychain - Если вы решили не добавлять парольную фразу к ключу, следует опустить строку
-
-
Добавьте закрытый ключ SSH в ssh-agent и сохраните парольную фразу в цепочке ключей. Если вы создали ключ с другим именем или добавляете существующий ключ с другим именем, замените id_ed25519 в команде именем файла закрытого ключа.
ssh-add --apple-use-keychain ~/.ssh/id_ed25519Примечание.
Параметр
--apple-use-keychainсохраняет парольную фразу в цепочке ключей при добавлении ключа SSH в агент SSH. Если вы решили не добавлять парольную фразу в ключ, выполните команду без параметра--apple-use-keychain.Вариант
--apple-use-keychainнаходится в стандартной версииssh-addApple. В версиях macOS до Монтерей (12.0)--apple-use-keychainи--apple-load-keychainфлаги использовали синтаксис-Kи-Aсоответственно.Если у вас нет стандартной
ssh-addверсии Apple, может появиться сообщение об ошибке. Дополнительные сведения см. в разделе Ошибка: ssh-add: недопустимый параметр - apple-use-keychain.Если вы продолжаете запрашивать парольную фразу, может потребоваться добавить команду в
~/.zshrcфайл (или~/.bashrcфайл для bash). -
Добавьте открытый ключ SSH в учетную запись на GitHub. Дополнительные сведения см. в разделе Добавление нового SSH-ключа в ваш аккаунт GitHub.
Если у вас установлено приложение GitHub Desktop, его можно использовать для клонирования репозиториев, не прибегая к ключам SSH.
-
_В окне PowerShell с_ повышенными привилегиями администратора убедитесь, что агент ssh запущен. Инструкции ssh-agent можно использовать в [AUTOTITLE](/articles/working-with-ssh-key-passphrases) или запустить вручную:# start the ssh-agent in the background Get-Service -Name ssh-agent | Set-Service -StartupType Manual Start-Service ssh-agent -
В окне терминала без повышенных разрешений добавьте закрытый ключ SSH в агент SSH. Если вы создали ключ с другим именем или добавляете существующий ключ с другим именем, замените id_ed25519 в команде именем файла закрытого ключа.
ssh-add c:/Users/YOU/.ssh/id_ed25519 -
Добавьте открытый ключ SSH в учетную запись на GitHub. Дополнительные сведения см. в разделе Добавление нового SSH-ключа в ваш аккаунт GitHub.
Устранение конфликтов SSH-агентов в Windows
В окружениях Windows родная реализация Windows OpenSSH и та, что включённая в Git for Windows (на базе MSYS2/Bash), могут сосуществовать.
Если вы настроите и сохраняете пароль в агенте Windows с помощью PowerShell, Git всё равно может запрашивать пароль во время операций вроде
git push. Это может происходить, когда Git for Windows использует свой включённыйssh.exe(из MSYS2) вместо клиента OpenSSH Windows системы, и поэтому не может общаться с сервисом Windowsssh-agent.Чтобы убедиться, что Git использует агент, в котором вы храните учетные данные, заставьте Git использовать SSH-бинарный файл системы, запустив:
git config --global core.sshCommand "C:/Windows/System32/OpenSSH/ssh.exe"
-
Запустите агент SSH в фоновом режиме.
$ eval "$(ssh-agent -s)" > Agent pid 59566В зависимости от среды может потребоваться использовать другую команду. Например, вам может потребоваться доступ с правами root, для чего необходимо выполнить
sudo -s -Hперед запуском агента SSH. Может также потребоваться использоватьexec ssh-agent bashилиexec ssh-agent zshдля запуска агента SSH. -
Добавьте закрытый ключ SSH в ssh-agent.
Если вы создали ключ с другим именем или добавляете существующий ключ с другим именем, замените id_ed25519 в команде именем файла закрытого ключа.
ssh-add ~/.ssh/id_ed25519 -
Добавьте открытый ключ SSH в учетную запись на GitHub. Дополнительные сведения см. в разделе Добавление нового SSH-ключа в ваш аккаунт GitHub.
Создание нового ключа SSH для аппаратного ключа безопасности
В macOS или Linux перед созданием нового ключа SSH может потребоваться обновить клиент SSH или установить новый клиент SSH. Дополнительные сведения см. в разделе Ошибка: неизвестный тип ключа.
-
Вставьте аппаратный ключ безопасности в компьютер.
-
Откройте ТерминалТерминалGIT Bash.
-
Вставьте текст ниже, заменив адрес электронной почты в примере на адрес, связанный с вашим GitHub аккаунтом.
ssh-keygen -t ed25519-sk -C "your_email@example.com"ssh-keygen -t ed25519-sk -C "your_email@example.com"ssh-keygen -t ed25519-sk -C "your_email@example.com"Примечание.
Если команда завершается ошибкой
invalid format, илиfeature not supported,вы можете использовать аппаратный ключ безопасности, который не поддерживает алгоритм Ed25519. Введите приведенную ниже команду.ssh-keygen -t ecdsa-sk -C "your_email@example.com" -
При появлении соответствующего запроса нажмите кнопку на аппаратном ключе безопасности.
-
При появлении запроса "Введите файл, в который нужно сохранить клавишу", нажмите клавишу ВВОД, чтобы принять расположение файла по умолчанию.
> Enter a file in which to save the key (/Users/YOU/.ssh/id_ed25519_sk): [Press enter]> Enter a file in which to save the key (c:\Users\YOU\.ssh\id_ed25519_sk):[Press enter]> Enter a file in which to save the key (/home/YOU/.ssh/id_ed25519_sk):[Press enter] -
При появлении соответствующего запроса введите парольную фразу и нажмите клавишу ВВОД.
> Enter passphrase (empty for no passphrase): [Type a passphrase] > Enter same passphrase again: [Type passphrase again] -
Добавьте открытый ключ SSH в учетную запись на GitHub. Дополнительные сведения см. в разделе Добавление нового SSH-ключа в ваш аккаунт GitHub.
Дополнительные материалы
-
[автозаголовок](/organizations/managing-programmatic-access-to-your-organization/github-credential-types)