Как я могу надолго добавить свой закрытый ключ SSH в Keychain, чтобы он автоматически был доступен для ssh?
Кажется, что ssh-add -K ~/.ssh/id_rsa
загрузит ваш ключ, но будет запрашивать пароль при каждом перезагрузке.
Я ищу решение, которое не потребует от меня повторного ввода пароля ключа между входами.
5 ответов
В OSX встроенный клиент ssh-add
имеет специальный аргумент для сохранения кодовой фразы секретного ключа в цепочке ключей OSX, что означает, что ваш обычный логин откроет его для использования с ssh. В OSX Sierra и позже вам также нужно настроить SSH, чтобы всегда использовать цепочку ключей (см. Шаг 2 ниже).
В качестве альтернативы вы можете использовать ключ без кодовой фразы, но если вы предпочитаете безопасность, которая, безусловно, приемлема для этого рабочего процесса.
Шаг 1 - Сохраните ключ в цепочке ключей
Сделайте это один раз:
ssh-add -K ~/.ssh/[your-private-key]
Введите ключевую кодовую фразу, и вас больше не будут просить ее.
(Если вы используете предварительную версию OSX, все готово, шаг 2 не требуется.)
Шаг 2 - Настройте SSH, чтобы всегда использовать цепочку ключей
Похоже, что OSX Sierra удалила удобное поведение сохранения ваших ключей между входами, а обновление до ssh больше не использует брелок по умолчанию. Из-за этого вам будет предложено ввести ключевую фразу для ключа после обновления и снова после каждого перезапуска.
Решение довольно простое и описано в этом комментарии к теме github . Вот как вы его настроили:
-
Убедитесь, что вы выполнили первый шаг выше, чтобы сохранить ключ в цепочке ключей.
-
Если вы еще этого не сделали, создайте файл
~/.ssh/config
. Другими словами, в каталоге.ssh
в вашем домашнем каталоге создайте файл с именемconfig
. -
В этом файле
.ssh/config
добавьте следующие строки:Host * UseKeychain yes AddKeysToAgent yes IdentityFile ~/.ssh/id_rsa
Измените
~/.ssh/id_rsa
на фактическое имя вашего личного ключа. Если у вас есть другие секретные ключи в каталоге~.ssh
, также добавьте строкуIdentityFile
для каждого из них. Например, у меня есть еще одна строка, которая читаетIdentityFile ~/.ssh/id_ed25519
для второго закрытого ключа.UseKeychain yes
- ключевая часть, которая сообщает SSH, чтобы посмотреть в вашей ключевой цепочке OSX для ключевой фразы. -
Вот и все! В следующий раз, когда вы загрузите любое ssh-соединение, он попробует секретные ключи, которые вы указали, и он будет искать свою кодовую фразу в цепочке ключей OSX. Нет необходимости вводить парольную фразу.
Вам каждый раз запрашивается пароль, потому что ваш «логин» связывается с цепочкой после неактивности и /или сна или в вашем случае перезагрузка. Есть два способа решить это для вас.
-
Измените настройки для вашего «логина». Предполагая, что ваш ключ ssh хранится в цепочке «login».
- Открыть доступ к брелокам
- Выделите цепочку "login"
- Щелкните правой кнопкой мыши или выберите опцию «логин» в цепочке
- Снимите флажок «Блокировка после X минут бездействия» и флажки «Блокировать при смене».
-
Сгенерировать другой ключ SSH без использования фразы.
- Открыть терминал.
- Введите команду:
ssh-keygen -t rsa -b 4096 -C <comment> -f <.ssh/id_rsa>
- -t для типа, -b - размер ключа, -C - комментарий, -f выходной файл (сначала необходимо создать каталоги)
- Не устанавливайте кодовую фразу.
- Импортировать SSH-ключ в цепочку «login» с помощью
ssh-add -K <path to ssh key>
Больше не нужно запрашивать пароль для ключей.
У меня была аналогичная проблема, потому что меня спрашивали КАЖДОЕ ВРЕМЯ для моей кодовой фразы в паб-ключе.
По предложению пользователя «trisweb» выше, я включил эти опции в ~ /.ssh /config:
Host *
UseKeychain yes
AddKeysToAgent yes
IdentityFile ~/.ssh/id_rsa
НО он все еще запрашивается каждый раз, когда я хочу использовать ssh.
В конце концов я включил «ssh -v» и нашел эту строку отладки:
debug1: key_load_private: некорректная парольная фраза для дешифрования закрытого ключа
Затем я открыл свой брелок в «Keychain Access.app», нашел ключ с именем «SSH: /Users/username/.ssh/id_rsa» и открыл его.
Я нажал «Показать пароль», чтобы раскрыть пароль, и действительно обнаружил, что ключевая фраза в брелоке была старой кодовой фразой.
Я обновил кодовую фразу в Keychain Access, и теперь работает без пароля.
Я мог бы также обновить кодовую фразу этой фразой:
ssh-keygen -p -f ~ /.ssh /id_rsa
Кроме того, в macOS Sierra и HighSierra (не знаю о предыдущих версиях) запуск ssh-add -A
заставит агента загрузить все ключи, чьи кодовые фразы хранятся в Keychain ... Очень удобно
Добавить открытый ключ в:
.ssh/known_hosts
Открытый ключ обычно включен:
/home/user/.ssh/id_rsa.pub
Надеюсь, что поможет