macOS продолжает спрашивать мою кодовую фразу ssh, так как я обновляюсь до Sierra
Раньше он запоминал кодовую фразу, но теперь он спрашивает ее каждый раз.
Я прочитал, что мне нужно восстановить открытый ключ с помощью этой команды, которую я сделал:
ssh-keygen -y -f id_rsa > id_rsa.pub
, но ничего не исправить.
Как я могу заставить macOS снова вспомнить мою кодовую фразу?
12 ответов
В последней версии macOS (10.12.2) это легко исправить. Просто отредактируйте свой ~/.ssh/config
и включите опцию UseKeychain
:
Host *
UseKeychain yes
Нет необходимости ничего менять. Теперь все работает так, как раньше работало до последних обновлений. Вам не нужно добавлять ключи к ssh-agent
.
Изменить: Возможно, вам еще нужно ввести парольную фразу. Если вы этого не знаете, следуйте эти инструкции , чтобы раскрыть его.
У меня была та же проблема. MacOS Sierra keychain продолжает запрашивать парольную фразу. Ваш id_rsa должен быть зашифрован парольной фразой для обеспечения безопасности. Затем попробуйте добавить его в цепочку ключей ssh-add -K ~/.ssh/id_rsa
Если ваш ключ находится в другой папке, чем ~/.ssh
, то замените нужную папку.
Брелок теперь знает ваш ssh-ключ и, надеюсь, все работает сейчас (мой сделал)
Это устранило мою аналогичную проблему:
/usr/bin/ssh-add -K
Здесь хранятся парольные фразы в цепочке ключей.
Обновить (спасибо @EasyCo): Это работает, но не сохраняется между перезапусками. Решение @ jukka-suomela на этой странице делает работу через перезагрузки. Вы можете найти этот ответ здесь:
Мне нужно было только ввести правильную кодовую фразу, и она начала работать. Проблема состояла в том, что я не помнил свою исходную кодовую фразу SSH, но я ее восстановил, следуя эти шаги из Github:
- В Finder найдите приложение Keychain Access.
- В Keychain Access найдите SSH.
- Дважды щелкните запись для своего ключа SSH, чтобы открыть новое диалоговое окно.
- Диалог доступа к цепочке ключей. В левом нижнем углу выберите «Показать пароль».
- Вам будет предложено ввести пароль администратора. Введите его в диалоговом окне «Доступ к цепочке ключей».
- Ваш пароль будет обнаружен.
Ни один из вышеперечисленных решений не работал после установки Sierra над El Capitan на новом MacBook Pro. Sierra по дизайну не сохраняет ключи SSH в цепочке ключей.
Для меня работали два решения. Один из них - добавить команду ssh-add -A &> /dev/null
в ~ /.bash_profile. Каждый раз, когда вы открываете терминал, эта команда будет выполнена (часть &> /dev/null
отправляет результат команды файл /dev /null).
Более сложным, но немного гладким решением является создание plist с командой, которая выполняется каждый раз, когда ОС загружается, как предложено в Сохранение ключей SSH в macOS Sierra keychain . Это связано с использованием Xcode для создания файла.
Одно исправление заключается в добавлении следующего в ваш файл ~ /.ssh /config:
Host *
AddKeysToAgent yes
IdentityFile ~/.ssh/id_rsa
UseKeychain yes
Взято из: https://www.reddit.com/r /OSX /комментарии /52zn5r /difficulties_with_sshagent_in_macos_sierra / Также см .: https://apple.stackexchange.com/a/264974/3810
Сегодня утром у меня была такая же проблема, как и после обновления до Сьерры. В моем случае файл id_rsa
был зашифрован и после дешифрования он работал как шарм.
- Убедитесь, что ваш файл
id_rsa
зашифрован с помощью следующей команды:cat ~/.ssh/id_rsa | head -2
- Если вторая строка говорит
Proc-Type: 4,ENCRYPTED
, она зашифрована, и вы можете попробовать ее расшифровать. - Важно: сделайте резервную копию исходного файла
id_rsa
! Используйте командуcp ~/.ssh/id_rsa ~/.ssh/id_rsa.bak
- Расшифруйте свой закрытый ключ с помощью
openssl rsa -in ~/.ssh/id_rsa -out ~/.ssh/id_rsa.decrypted
- Удалите исходный ключ (
rm ~/.ssh/id_rsa
) и замените его расшифрованным:mv ~/.ssh/id_rsa.decrypted ~/.ssh/id_rsa
После этих шагов вы сможете снова использовать ssh.
У меня была и эта проблема при попытке развернуть какой-то код, используя Capistrano . Очень расстраивает. Вот два метода, которые я знаю для решения этой проблемы.
Способ 1: добавьте все известные ключи к агенту SSH.
Итак, я нашел решение, чтобы запустить ssh-add
с помощью -A
, который добавляет все известные идентификаторы к агенту SSH с использованием любых кодовых фраз, хранящихся в вашей keychain, как это:
ssh-add -A
Теперь это работает, но оно не будет сохраняться при перезагрузках. Поэтому, если вы хотите больше не беспокоиться об этом, просто откройте свой файл ~/.bash_profile
вашего пользователя следующим образом:
nano ~/.bash_profile
И добавьте эту строку в конец:
ssh-add -A 2>/dev/null;
Теперь, когда вы открываете новое окно терминала, все должно быть хорошо!
Способ 2. Добавьте только те ключи SSH, которые находятся в цепочке ключей .
Итак, если параметр ssh-add -A
должен работать для большинства основных случаев, я столкнулся с проблемой в последнее время, когда у меня было 6-7 бранных ящиков (в которых используются SSH-ключи /идентификаторы для доступа) установки на машине поверх более распространенного id_rsa.pub
на месте.
Короче говоря, я оказался заблокированным из удаленного сервера из-за слишком многих неудачных попыток на основе SSH-ключей /идентификаторов, поскольку доступ к серверу был основан на пароле, а ключи /идентификаторы SSH - это SSH-ключи /идентификаторы. Таким образом, агент SSH попробовал все мои SSH-ключи, не удалось, и я даже не смог получить приглашение пароля.
Проблема заключается в том, что ssh-add -A
будет просто произвольно добавлять каждый отдельный ключ /идентификатор SSH, который у вас есть, даже если это не обязательно для этого; например, в случае бродячих коробок.
Мое решение после долгих испытаний было следующим.
Во-первых, если к вашему агенту добавлено больше ключей или удостоверений SSH, чем вам нужно, как показано с помощью ssh-add -l
, затем очистите их от агента следующим образом:
ssh-add -D
После этого запустите агент SSH как фоновый процесс следующим образом:
eval "$(ssh-agent -s)"
Теперь это становится странным, и я не уверен, почему. В некоторых случаях вы можете специально добавить ключ /идентификатор ~/.ssh/id_rsa.pub
к агенту следующим образом:
ssh-add ~/.ssh/id_rsa.pub
Введите свою кодовую фразу, нажмите Return , и вам должно быть хорошо идти.
Но в других случаях просто запустить это достаточно, чтобы получить добавленный ключ /идентификатор:
ssh-add -K
Если все это сработало, введите ssh-add -l
, и вы увидите один одиночный SSH-ключ /идентификатор.
Все хорошо? Теперь откройте свой .bash_profile
:
nano ~/.bash_profile
И добавьте эту строку в нижнюю; комментарий или удалить версию -A
, если у вас это есть:
ssh-add -K 2>/dev/null;
Это позволит перезагрузить SSH-ключ /идентификатор агента SSH при каждом запуске /перезагрузке.
UPDATE: теперь Apple добавила опцию UseKeychain
для открытых конфигурационных параметров SSH и также рассматривает решение ssh-add -A
.
Как и в macOS Sierra 10.12.2, Apple (предположим) добавила опцию конфигурации UseKeychain
для конфигураций SSH. Проверка справочной страницы (через man ssh_config
) показывает следующую информацию:
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 видит решение как добавление ssh-add -A
к вашему .bash_profile
, как описано в этом открытом билете Radar или добавление UseKeychain
в качестве одной из опций для каждого пользователя ~/.ssh/config
.
Юкка Суомела , но если вы используете openssh
, установленный из homebrew
, вам также необходимо удалить его с помощью:
brew remove openssh
... чтобы вернуться к системному умолчанию openssh, потому что homebrew's не поддерживает запись UseKeychain
ssh config.
Я попробовал все предлагаемые здесь решения, но у меня нет привязки к цепочке ключей на моем Mac.
Добавление к следующей строке в верхнем .ssh/config
файле на локальном и удаленном компьютере сработало для меня.
PubkeyAcceptedKeyTypes=+ssh-dss
Я попробовал несколько ответов здесь, но у меня все еще были проблемы с передачей удаленных ключей (например, при использовании capistrano). Чтобы решить эту проблему, я прочитал технот из apple и сделал этот файл конфигурации. Больше не требуется мой пароль!
https://developer.apple.com/library/content /technotes/tn2449/_index.html
Host * IdentityFile ~/.ssh/id_rsa IgnoreUnknown UseKeychain UseKeychain yes AddKeysToAgent yes
Для запуска .plist
для каждого запуска macOS вам нужен файл ~/Library/LaunchAgents/
, добавленный в ssh-add -A
.
Есть одна команда, которая делает это (от 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