Вы только что обновили macOS только для того, чтобы обнаружить, что когда вы отправляете или извлекаете изменения из GitHub, он запрашивает «Введите кодовую фразу для ключа '/Users/username/.ssh/id_ed25519':», где имя пользователя — ваше имя пользователя, а id_ed25519 — ваш закрытый ключ.

Разочарованы тем, что все руководства по сохранению ключевой фразы SSH в цепочке ключей Apple устарели или отсутствуют ключевые инструкции? Был там, сделал это — вот почему этот учебник существует.

Итак, как мне это исправить?

Как сохранить парольную фразу закрытого ключа SSH в цепочке ключей Apple

Откройте приложение Терминал в разделе FinderПриложенияУтилитыТерминал.

Если вы используете macOS Monterey или macOS Ventura, введите это в Терминал:

ssh-add --apple-use-keychain --apple-load-keychain ~/.ssh/id_ed25519

Где id_ed25519 — ваш закрытый ключ. Нажмите клавишу return, как только убедитесь, что используете правильный закрытый ключ.

В macOS Sierra или более ранней версии введите в Terminal следующее:

ssh-add -KA ~/.ssh/id_rsa

Опять же, id_rsa должен быть вашим закрытым ключом. Убедитесь в этом и нажмите return.

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

Как настроить SSH-агент, чтобы он всегда использовал вашу цепочку ключей Apple

Если ваша операционная система старше macOS Sierra, вам не нужно выполнять этот шаг.

К сожалению, macOS Sierra и более поздние версии устранили поведение сохранения ваших ключей между входами в систему, а обновление SSH теперь по умолчанию обходит цепочку ключей.

Выполните следующие действия, чтобы решить эту проблему:

Убедитесь, что вы правильно выполнили инструкции в разделе Как сохранить ключевую фразу SSH в цепочке ключей Apple выше. Просто попробуйте нажать или получить из GitHub и посмотреть, будет ли он по-прежнему запрашивать парольную фразу вашего закрытого ключа.

Вам снова понадобится Терминал для следующих команд. Так что откройте его снова, если вы его закрыли.

Убедитесь, что у вас есть файл ~/.ssh/config. Вы можете проверить это, введя test -f ~/.ssh/config && echo "File exists." в Терминал.

Если слова «Файл существует.» не возвращаются предыдущей командой, создайте файл с именем config. Вы можете сделать это, набрав touch ~/.ssh/config и нажав клавишу return.

Теперь введите nano -w ~/.ssh/config в Терминал и убедитесь, что файл выглядит следующим образом:

Host *.github.com
    UseKeychain yes
    AddKeysToAgent yes
    IdentityFile ~/.ssh/id_ed25519

Измените ~/.ssh/id_ed25519 на фактическое имя файла вашего закрытого ключа. Если у вас есть другие закрытые ключи в вашем каталоге ~/.ssh, добавьте строку IdentityFile для каждого. Например, если у вас есть старый закрытый ключ, такой как id_rsa, добавьте IdentityFile ~/.ssh/id_rsa.

Не забудьте часть UseKeychain yes, поскольку она указывает SSH получить ключевую фразу-пароль из вашей цепочки для ключей Apple.

Если вы хотите сохранить ключевую фразу SSH для всех хостов (не только GitHub), измените строку Host *.github.com на Host *.

Теперь вы закроете и сохраните файл конфигурации SSH: нажмите control x, чтобы выйти, затем введите y и нажмите return, чтобы сохранить изменения.

Поздравляем!

Теперь ваши SSH-соединения будут использовать указанные закрытые ключи, а парольные фразы будут извлекаться из вашей цепочки ключей Apple. Попрощайтесь с необходимостью вводить парольную фразу закрытого ключа SSH каждый раз, когда вы взаимодействуете с GitHub.

Хотите нанять проверенных удаленных инженеров-программистов и других технических специалистов? Hyperion360 создает команды инженеров мирового класса для компаний из списка Fortune 500 и ведущих стартапов.