MacOS продолжает спрашивать идентификационную фразу для ssh ключа после обновления или перезагрузки

Недавно я обновил свою MacOS Sierra, и теперь команда ssh продолжает запрашивать идентификационную фразу каждый раз, когда я пытаюсь войти на мой удаленный сервер Linux / Unix:
Enter passphrase for key ‘/Users/vivek/.ssh/id_ed25519’: (Введите идентификационную фразу для ключа ‘/Users/vivek/.ssh/id_ed25519’:)
Как исправить обновление MacOS Sierra, которое продолжает разрывать ключи ssh в терминале?

Мой MacOS раньше всегда запоминал кодовую фразу ssh, но теперь он спрашивает ее каждый раз, когда я пытаюсь войти на локальный сервер FreeBSD nas или удаленный сервер Ubuntu при вводе:

$ ssh user@server
$ ssh vivek@server1.cyberciti.biz

Примеры возможных выводов данных:

MacOS продолжает спрашивать идентификационную фразу для ssh ключа после обновления или перезагрузки
Рисунок 01: Похоже моя MacOS Sierra не запоминает SSH ключи после mac перезагрузок.

Теперь давайте рассмотрим различные способы, как можно решить проблему со сбросом SSH ключа после обновления MacOS.

Метод #1: Решить вопрос, когда macOS продолжает запрашивать кодовую фразу ssh после обновления до Sierra или после перезагрузки

Вам необходимо использовать опцию UseKeychain в вашем файле ~/.ssh/config. С главной страницы ssh_config:

В macOS указывается, следует ли системе искать фразу в цепочке ключей пользователя при попытке использовать конкретный ключ. Когда кодовая фраза предоставляется пользователем, эта опция также указывает, должна ли кодовая фраза храниться в цепочке ключей, как только она будет проверена как правильная. Значение должен быть «да» или «нет». По умолчанию — нет.

Это самый простой способ решить данную проблему для всех пользователей Отредактируйте ваш ~/.ssh/config файл:

$ vi ~/.ssh/config

Добавьте следующую строчку в Host * раздел:

UseKeychain yes

Вот пример моего файла:

Host *
        ServerAliveInterval 10
        ControlPath ~/.ssh/controlmasters/%r@%h:%p
        ControlMaster auto
        ControlPersist yes
        ProtocolKeepAlives 120
        UseRoaming no
        UseKeychain yes

Сохраните и закройте файл. Это должно заставить ssh запомнить ключ пользователя в цепочки ключей:

$ ssh user@server
$ ssh vivek@server1.cyberciti.biz

Метод #2: Используйте ssh-agent/ssh-add для добавления всех известных ключей к агенту SSH.

Синтаксис, для использования SSH ключей на Linux / Unix / MacOS System,будет выглядеть следующим образом:

##  Create the key pair using ssh-keygen command ## 
ssh-keygen -t rsa
 
## Install the public key using ssh-copy-id command ##
ssh-copy-id -i $HOME/.ssh/id_rsa.pub vivek@server1.cyberciti.biz
 
## Update your shell profile file 
echo 'ssh-add -A 2>/dev/null' >> ~/.bash_profile
 
## Try it now 
eval $(ssh-agent)
ssh-add

Метод #3: Используйте keychain

OpenSSH предлагает аутентификацию RSA и DSA для удаленных систем без предоставления пароля. Keychain — специальный скрипт bash, призванный сделать аутентификацию на основе ключей невероятно удобной и гибкой. Он предлагает различные преимущества безопасности по сравнению с ключами без кодовой фразы.

Установите keychain следующим образом:

$ brew install keychain

Пример возможных выводов данных:

==> Using the sandbox
==> Downloading 
######################################################################## 100.0%
?  /usr/local/Cellar/keychain/2.8.3: 7 files, 106.2K, built in 3 seconds

Добавьте следующий код в свой профиль ssh (при условии, что вы используете файл id_rsa):

echo '/usr/local/bin/keychain $HOME/.ssh/id_rsa' >> ~/.bash_profile
echo 'source $HOME/.keychain/$HOSTNAME-sh'  ~/.bash_profile

Для получения большей информации ознакомьтесь с «keychain: Set Up Secure Passwordless SSH Access For Backup Scripts (keychain: установка безопасного безпарольного SSH доступа для резервных сценариев)»

Перевод: Анна Давыдова
Источник: cyberciti.biz

Это интересно:

Один комментарий

  1. Подскажите как вылечить macbook от такой болячки: после перезагрузки слетает ssh ключ и приходится руками заново добавлять: ssh-add -K ~/.ssh……

Оставить ответ

Ваш адрес email не будет опубликован. Обязательные поля помечены *