2016-09-22 09:21:53 +0000 2016-09-22 09:21:53 +0000
607
607

macOS продолжает спрашивать мою парольную фразу ssh с тех пор, как я перешёл в Sierra.

Раньше она запоминала пароль, но теперь каждый раз спрашивала его у меня.

Я читал, что мне нужно восстановить открытый ключ с помощью этой команды, что я и сделал:

ssh-keygen -y -f id_rsa > id_rsa.pub

, но она ничего не исправила.

Как заставить MacOS снова запомнить мою ключевую фразу?

Ответы (12)

1168
1168
1168
2016-12-19 12:04:25 +0000

В последней версии macOS (10.12.2) это легко исправить. Просто отредактируйте свой ~/.ssh/config и включите опцию UseKeychain:

Host *
    UseKeychain yes

Больше ничего менять не нужно. Теперь все работает так, как раньше, до последних обновлений. Вам не нужно добавлять ключи к ssh-agent.


Правка: Возможно, вам все же придется ввести ключевую фразу один раз. Если вы не знаете ее, следуйте эти инструкции , чтобы открыть ее.

193
193
193
2016-09-23 12:53:05 +0000

У меня была та же проблема. Брелок ключей MacOS Sierra продолжает запрашивать пароль. Ваш id_rsa должен быть зашифрован парольной фразой для безопасности. Затем попробуйте добавить ее в связку ключей ssh-add -K ~/.ssh/id_rsa

Если ваш ключ находится в папке, отличной от ~/.ssh, то подставьте его в правильную папку.

Блок ключей теперь знает ваш ключ ssh и, надеюсь, теперь все работает (мой работал).

75
75
75
2016-10-09 14:39:56 +0000

Это исправило мою похожую проблему:

/usr/bin/ssh-add -K

Это сохраняет парольные фразы в вашем брелоке для ключей. 0x2 и 0x2 и Обновление (спасибо @EasyCo): Это работает, но не сохраняется между перезагрузками. Решение @jukka-suomela на этой странице** работает между перезагрузками. Вы можете найти этот ответ здесь: https://superuser.com/a/1158050/234685

41
41
41
2016-10-29 17:16:24 +0000

Мне нужно было ввести правильную парольную фразу только один раз, и она начала работать. Проблема заключалась в том, что я не помнил свою оригинальную кодовую фразу SSH, но я восстановил ее, выполнив эти шаги с Github:

  • В Finder, найдите приложение Keychain Access.
  • В Keychain Access найдите SSH.
  • Двойной щелчок по записи для вашего SSH ключа, чтобы открыть новое диалоговое окно.
  • Диалог доступа к связке ключейВ левом нижнем углу выберите Показать пароль.
  • Вам будет предложено ввести пароль администратора. Введите его в диалоговое окно “Доступ к цепочке ключей”.
  • Ваш пароль будет показан.
19
19
19
2016-09-27 14:40:37 +0000

Ни одно из вышеперечисленных решений не работало после установки Sierra поверх El Capitan на новом MacBook Pro. Sierra по своей конструкции не сохраняет SSH-ключи в связке ключей. Решение

два решения сработало на мне. Одно из них - добавить команду ssh-add -A &> /dev/null в ~/.bash_профиль. Каждый раз при открытии терминала эта команда будет выполняться (часть &> /dev/null отправляет вывод команды в файл /dev/null).

Более сложным, но слегка хитрым решением является создание списка с командой, которая выполняется каждый раз при загрузке операционной системы, как предложено в Saving SSH keys in macOS Sierra keychain . Это включает в себя использование Xcode для создания файла.

18
18
18
2016-12-16 06:14:08 +0000

Одно из исправлений - добавить следующее в ~/.ssh/config файл:

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

Взято из: COPY15_with\https://www.reddit.com/r/osx/comments/52zn5r/difficultiessshagent__macos_sierra/ Плюсмотреть: https://apple.stackexchange.com/a/264974/3810

8
8
8
2016-09-22 10:58:21 +0000

Сегодня утром у меня была та же проблема, что и у тебя, после того, как я переехал в Сиерру. В моем случае файл id_rsa был зашифрован и после расшифровки работал как шарм.

  1. Убедитесь, что ваш файл id_rsa зашифрован следующей командой: cat ~/.ssh/id_rsa | head -2
  2. Если во второй строке написано Proc-Type: 4,ENCRYPTED, он зашифрован, и вы можете попробовать расшифровать его
  3. Важно: сделайте резервную копию оригинального файла id_rsa! Используйте команду cp ~/.ssh/id_rsa ~/.ssh/id_rsa.bak
  4. Расшифруйте ваш личный ключ с помощью команды openssl rsa -in ~/.ssh/id_rsa -out ~/.ssh/id_rsa.decrypted
  5. Удалите оригинальный ключ (rm ~/.ssh/id_rsa) и замените его расшифрованным: mv ~/.ssh/id_rsa.decrypted ~/.ssh/id_rsa

После этих шагов вы снова сможете использовать ssh.

8
8
8
2017-02-15 02:15:22 +0000

Здесь я попробовал ответить на несколько вопросов, но у меня все еще были проблемы с передачей удаленных ключей (например, при использовании capistrano). Чтобы решить эту проблему, я прочитал технический комментарий от Apple и сделал это моим конфигурационным файлом. Больше не спрашивайте мой пароль! _COPY10_index.html

Host *  
IdentityFile ~/.ssh/id_rsa  
IgnoreUnknown UseKeychain  
UseKeychain yes  
AddKeysToAgent yes
5
5
5
2017-01-02 00:05:33 +0000

У меня тоже была эта проблема при попытке развернуть какой-то код с помощью Capistrano . Очень расстраивает. Вот два метода, о которых я знаю, чтобы справиться с этой проблемой.

Метод 1: Добавить все известные ключи к SSH агенту.

Итак, одно решение, которое я нашел, это запуск ssh-add с опцией -A, которая добавляет все известные идентификаторы к SSH агенту, используя любые парольные фразы, хранящиеся в вашем связке ключей - подобно тому, как это делается:

ssh-add -A

Теперь это работает, но не будет сохраняться при перезагрузке. Так что если вы хотите больше никогда не беспокоиться об этом, просто откройте пользовательский файл ~/.bash_profile вот так:

nano ~/.bash_profile

И добавьте эту строку внизу:

ssh-add -A 2>/dev/null;

Теперь, когда вы открываете новое окно терминала, все должно быть хорошо!

Метод 2: Добавьте к агенту только те SSH ключи, которые находятся в связке ключей_.

Таким образом, хотя опция ssh-add -A должна работать в большинстве основных случаев, недавно я столкнулся с проблемой, когда у меня было 6-7 ящиков Vagrant (которые используют SSH ключи/идентификаторы для доступа), установленных на машине поверх более распространенных id_rsa.pub на месте.

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

Проблема в том, что ssh-add -A просто произвольно добавит к агенту каждый SSH ключ/идентификацию, даже если в этом нет необходимости; как, например, в случае с ящиками Vagrant.

Мое решение после долгих тестов выглядело следующим образом.

Сначала, если к вашему агенту добавлено больше SSH ключей/идентификаций, чем вам нужно - как показано в случае с ssh-add -l, то очистите их все от агента, как показано в случае с ~/.ssh/id_rsa.pub:

ssh-add -D

Сделав это, запустите SSH агент в качестве фонового процесса примерно так:

eval "$(ssh-agent -s)"

Теперь, это становится странным, и я не слишком уверен, почему. В некоторых случаях вы можете специально добавить ключ/идентификацию ssh-add -l к агенту примерно так:

ssh-add ~/.ssh/id_rsa.pub

Введите парольную фразу, нажмите кнопку Return и вы должны быть готовы к работе.

Но в других случаях простого запуска этого достаточно для добавления ключа/идентификации:

ssh-add -K

Если все работает, впишите .bash_profile и вы должны увидеть один единственный SSH ключ/идентификацию в списке.

Все в порядке? Теперь откройте свой -A:

nano ~/.bash_profile

И добавьте эту строку внизу; прокомментируйте или удалите версию UseKeychain, если она у вас есть:

ssh-add -K 2>/dev/null;

Это позволит перезагружать SSH ключ/идентификацию в SSH агент при каждом запуске/перезагрузке.

UPDATE: Apple теперь добавил опцию ssh-add -A в открытые параметры конфигурации SSH и также считает UseKeychain решением.

Начиная с macOS Sierra 10.12.2, Apple (я полагаю) добавил опцию man ssh_config config для конфигураций SSH. Проверка man-страницы (через ssh-add -A) показывает следующую информацию:

UseKeychain
        On macOS, specifies whether the system should search for
        passphrases in the user's keychain when attempting to use a par-
        ticular key. When the passphrase is provided by the user, this
        option also specifies whether the passphrase should be stored
        into the keychain once it has been verified to be correct. The
        argument must be ``yes'' or ``no''. The default is ``no''.

Которая сводится к тому, что Apple видит решение либо в добавлении .bash_profile к вашим UseKeychain как объяснено в этом билете Open Radar , либо в добавлении ~/.ssh/config как одной из опций для каждого пользователя 0x6&.

4
4
4
2017-01-28 08:58:48 +0000

Jukka Suomela ’(https://superuser.com/a/1158050/254433) верно, но если вы используете openssh, установленный с homebrew, то вам также нужно удалить его с помощью:

brew remove openssh

…чтобы вернуться к системному openssh по умолчанию, потому что доморощенный не поддерживает конфигурацию UseKeychain ssh.

2
2
2
2016-12-10 21:04:01 +0000

Вам нужен файл .plist, добавленный в ~/Library/LaunchAgents/ для запуска ssh-add -A при каждом запуске MacOS.

Есть одна команда, которая делает это (из SSH-клавиши в-macOS-Sierra-keychain ), которая:

curl -o ~/Library/LaunchAgents/ssh.add.a.plist https://raw.githubusercontent.com/jirsbek/SSH-keys-in-macOS-Sierra-keychain/master/ssh.add.a.plist
2
2
2
2017-01-01 23:56:10 +0000

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

Добавление в следующую строку в верхнем файле .ssh/config как на локальной, так и на удаленной машине работало на меня.

PubkeyAcceptedKeyTypes=+ssh-dss

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

19
5
16
13
6