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

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

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

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

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

Как я могу заставить macOS снова вспомнить мою кодовую фразу?

491 голос | спросил erwan 22 ndEurope/Moscowp30Europe/Moscow09bEurope/MoscowThu, 22 Sep 2016 12:21:53 +0300 2016, 12:21:53

12 ответов


965

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

Host *
    UseKeychain yes

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


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

ответил Jukka Suomela 19 MonEurope/Moscow2016-12-19T15:04:25+03:00Europe/Moscow12bEurope/MoscowMon, 19 Dec 2016 15:04:25 +0300 2016, 15:04:25
163

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

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

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

ответил Lars G. 23 rdEurope/Moscowp30Europe/Moscow09bEurope/MoscowFri, 23 Sep 2016 15:53:05 +0300 2016, 15:53:05
62

Это устранило мою аналогичную проблему:

/usr/bin/ssh-add -K

Здесь хранятся парольные фразы в цепочке ключей.

Обновить (спасибо @EasyCo): Это работает, но не сохраняется между перезапусками. Решение @ jukka-suomela на этой странице делает работу через перезагрузки. Вы можете найти этот ответ здесь:

https://superuser.com/a/1158050/234685

ответил critikaster 9 +03002016-10-09T17:39:56+03:00312016bEurope/MoscowSun, 09 Oct 2016 17:39:56 +0300 2016, 17:39:56
38

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

  • В Finder найдите приложение Keychain Access.
  • В Keychain Access найдите SSH.
  • Дважды щелкните запись для своего ключа SSH, чтобы открыть новое диалоговое окно.
  • Диалог доступа к цепочке ключей. В левом нижнем углу выберите «Показать пароль».
  • Вам будет предложено ввести пароль администратора. Введите его в диалоговом окне «Доступ к цепочке ключей».
  • Ваш пароль будет обнаружен.
ответил Olli Jaakkola 29 +03002016-10-29T20:16:24+03:00312016bEurope/MoscowSat, 29 Oct 2016 20:16:24 +0300 2016, 20:16:24
18

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

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

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

ответил Hank Snow 27 thEurope/Moscowp30Europe/Moscow09bEurope/MoscowTue, 27 Sep 2016 17:40:37 +0300 2016, 17:40:37
13

Одно исправление заключается в добавлении следующего в ваш файл ~ /.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

ответил ThomasW 16 FriEurope/Moscow2016-12-16T09:14:08+03:00Europe/Moscow12bEurope/MoscowFri, 16 Dec 2016 09:14:08 +0300 2016, 09:14:08
7

Сегодня утром у меня была такая же проблема, как и после обновления до Сьерры. В моем случае файл 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.

ответил Martijn Pieters 22 ndEurope/Moscowp30Europe/Moscow09bEurope/MoscowThu, 22 Sep 2016 13:58:21 +0300 2016, 13:58:21
3

У меня была и эта проблема при попытке развернуть какой-то код, используя 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.

ответил JakeGould 2 Jam1000000amMon, 02 Jan 2017 03:05:33 +030017 2017, 03:05:33
3

Юкка Суомела , но если вы используете openssh, установленный из homebrew, вам также необходимо удалить его с помощью:

brew remove openssh

... чтобы вернуться к системному умолчанию openssh, потому что homebrew's не поддерживает запись UseKeychain ssh config.

ответил Greg Dubicki 28 Jam1000000amSat, 28 Jan 2017 11:58:48 +030017 2017, 11:58:48
1

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

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

PubkeyAcceptedKeyTypes=+ssh-dss 
ответил Roei Bar Aviv 2 Jam1000000amMon, 02 Jan 2017 02:56:10 +030017 2017, 02:56:10
1

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

https://developer.apple.com/library/content /technotes/tn2449/_index.html

Host *  
   IdentityFile ~/.ssh/id_rsa  
   IgnoreUnknown UseKeychain  
   UseKeychain yes  
   AddKeysToAgent yes
ответил Geek Goddess 15 FebruaryEurope/MoscowbWed, 15 Feb 2017 05:15:22 +0300000000amWed, 15 Feb 2017 05:15:22 +030017 2017, 05:15:22
0

Для запуска .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
ответил AlecRust 11 SunEurope/Moscow2016-12-11T00:04:01+03:00Europe/Moscow12bEurope/MoscowSun, 11 Dec 2016 00:04:01 +0300 2016, 00:04:01

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

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

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