Как я могу надолго добавить свой закрытый ключ SSH в Keychain, чтобы он автоматически был доступен для ssh?

Кажется, что ssh-add -K ~/.ssh/id_rsa загрузит ваш ключ, но будет запрашивать пароль при каждом перезагрузке.

Я ищу решение, которое не потребует от меня повторного ввода пароля ключа между входами.

271 голос | спросил sorin 13 PMpFri, 13 Apr 2012 17:13:48 +040013Friday 2012, 17:13:48

5 ответов


453

В 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 . Вот как вы его настроили:

  1. Убедитесь, что вы выполнили первый шаг выше, чтобы сохранить ключ в цепочке ключей.

  2. Если вы еще этого не сделали, создайте файл ~/.ssh/config. Другими словами, в каталоге .ssh в вашем домашнем каталоге создайте файл с именем config.

  3. В этом файле .ssh/config добавьте следующие строки:

    Host *
      UseKeychain yes
      AddKeysToAgent yes
      IdentityFile ~/.ssh/id_rsa
    

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

    UseKeychain yes - ключевая часть, которая сообщает SSH, чтобы посмотреть в вашей ключевой цепочке OSX для ключевой фразы.

  4. Вот и все! В следующий раз, когда вы загрузите любое ssh-соединение, он попробует секретные ключи, которые вы указали, и он будет искать свою кодовую фразу в цепочке ключей OSX. Нет необходимости вводить парольную фразу.

ответил trisweb 26 AM00000040000003931 2016, 04:06:39
9

Вам каждый раз запрашивается пароль, потому что ваш «логин» связывается с цепочкой после неактивности и /или сна или в вашем случае перезагрузка. Есть два способа решить это для вас.

  1. Измените настройки для вашего «логина». Предполагая, что ваш ключ ssh хранится в цепочке «login».

    • Открыть доступ к брелокам
    • Выделите цепочку "login"
    • Щелкните правой кнопкой мыши или выберите опцию «логин» в цепочке
    • Снимите флажок «Блокировка после X минут бездействия» и флажки «Блокировать при смене».
  2. Сгенерировать другой ключ 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>

Больше не нужно запрашивать пароль для ключей.

ответил Matthew Sanabria 24 J000000Friday15 2015, 06:46:37
7

У меня была аналогичная проблема, потому что меня спрашивали КАЖДОЕ ВРЕМЯ для моей кодовой фразы в паб-ключе.

По предложению пользователя «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

ответил user2688272 19 TueEurope/Moscow2017-12-19T20:24:35+03:00Europe/Moscow12bEurope/MoscowTue, 19 Dec 2017 20:24:35 +0300 2017, 20:24:35
3

Кроме того, в macOS Sierra и HighSierra (не знаю о предыдущих версиях) запуск ssh-add -A заставит агента загрузить все ключи, чьи кодовые фразы хранятся в Keychain ... Очень удобно

ответил JJarava 5 AMpThu, 05 Apr 2018 11:40:32 +030040Thursday 2018, 11:40:32
-4

Добавить открытый ключ в:

.ssh/known_hosts

Открытый ключ обычно включен:

/home/user/.ssh/id_rsa.pub

Надеюсь, что поможет

ответил lluisi 20 PMpFri, 20 Apr 2012 15:04:56 +040004Friday 2012, 15:04:56

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132