Skip to main content

Создание нового ключа SSH и его добавление в ssh-agent

После проверки наличия существующих ключей SSH можно создать ключ SSH для проверки подлинности, а затем добавить его к агенту SSH.

Platform navigation

Сведения о парольных фразах ключа 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 Enterprise Server , чтобы включить аутентификацию операций с Git через SSH.

Если вы администратор сайта для экземпляр GitHub Enterprise Server, вы можете использовать тот же ключ для получения административного SSH-доступа к инстансу. Дополнительные сведения см. в разделе Доступ к административной оболочке (SSH).

  1. Откройте ТерминалТерминалGIT Bash.

  2. Вставьте текст ниже, заменив указанный в примере 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]
    
  3. В командной строке введите безопасную парольную фразу. Дополнительные сведения см. в разделе Работа с парольными фразами ключа 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 или другим внешним источником.

  1. Запустите агент SSH в фоновом режиме.

    $ eval "$(ssh-agent -s)"
    > Agent pid 59566
    

    В зависимости от среды может потребоваться использовать другую команду. Например, вам может потребоваться доступ с правами root, для чего необходимо выполнить sudo -s -H перед запуском агента SSH. Может также потребоваться использовать exec ssh-agent bashили exec ssh-agent zsh для запуска агента SSH.

  2. Если вы используете 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 HOSTNAME
        AddKeysToAgent yes
        UseKeychain yes
        IdentityFile ~/.ssh/id_ed25519
      

      Примечание.

      • Если вы решили не добавлять парольную фразу к ключу, следует опустить строку UseKeychain.
      • Если появится сообщение об ошибке Bad configuration option: usekeychain, добавьте дополнительную строку в раздел конфигурации Host *.HOSTNAME.
      Text
      Host HOSTNAME
        IgnoreUnknown UseKeychain
      
  3. Добавьте закрытый ключ 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).

  4. Добавьте открытый ключ SSH в учетную запись на GitHub. Дополнительные сведения см. в разделе Добавление нового SSH-ключа в ваш аккаунт GitHub.

Если у вас установлено приложение GitHub Desktop, его можно использовать для клонирования репозиториев, не прибегая к ключам SSH.

  1.        _В окне 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
    
  2. В окне терминала без повышенных разрешений добавьте закрытый ключ SSH в агент SSH. Если вы создали ключ с другим именем или добавляете существующий ключ с другим именем, замените id_ed25519 в команде именем файла закрытого ключа.

    ssh-add c:/Users/YOU/.ssh/id_ed25519
    
  3. Добавьте открытый ключ 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 системы, и поэтому не может общаться с сервисом Windows ssh-agent.

Чтобы убедиться, что Git использует агент, в котором вы храните учетные данные, заставьте Git использовать SSH-бинарный файл системы, запустив:

git config --global core.sshCommand "C:/Windows/System32/OpenSSH/ssh.exe"
  1. Запустите агент SSH в фоновом режиме.

    $ eval "$(ssh-agent -s)"
    > Agent pid 59566
    

    В зависимости от среды может потребоваться использовать другую команду. Например, вам может потребоваться доступ с правами root, для чего необходимо выполнить sudo -s -H перед запуском агента SSH. Может также потребоваться использовать exec ssh-agent bashили exec ssh-agent zsh для запуска агента SSH.

  2. Добавьте закрытый ключ SSH в ssh-agent.

    Если вы создали ключ с другим именем или добавляете существующий ключ с другим именем, замените id_ed25519 в команде именем файла закрытого ключа.

    ssh-add ~/.ssh/id_ed25519
    
  3. Добавьте открытый ключ SSH в учетную запись на GitHub. Дополнительные сведения см. в разделе Добавление нового SSH-ключа в ваш аккаунт GitHub.

Создание нового ключа SSH для аппаратного ключа безопасности

В macOS или Linux перед созданием нового ключа SSH может потребоваться обновить клиент SSH или установить новый клиент SSH. Дополнительные сведения см. в разделе Ошибка: неизвестный тип ключа.

  1. Вставьте аппаратный ключ безопасности в компьютер.

  2. Откройте ТерминалТерминалGIT Bash.

  3. Вставьте текст ниже, заменив адрес электронной почты в примере на адрес, связанный с вашим 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"
    
  4. При появлении соответствующего запроса нажмите кнопку на аппаратном ключе безопасности.

  5. При появлении запроса "Введите файл, в который нужно сохранить клавишу", нажмите клавишу ВВОД, чтобы принять расположение файла по умолчанию.

    > 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]
    
  6. При появлении соответствующего запроса введите парольную фразу и нажмите клавишу ВВОД.

    > Enter passphrase (empty for no passphrase): [Type a passphrase]
    > Enter same passphrase again: [Type passphrase again]
    
  7. Добавьте открытый ключ SSH в учетную запись на GitHub. Дополнительные сведения см. в разделе Добавление нового SSH-ключа в ваш аккаунт GitHub.

Дополнительные материалы

  •         [автозаголовок](/organizations/managing-programmatic-access-to-your-organization/github-credential-types)