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


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

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

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

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

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


500
2017-09-22 09:21


происхождения


У меня возникло связанное с этим поведение. Ранее диалоговое окно с ключевым кольцом появлялось, чтобы запросить пароль, теперь я просто получаю обычную консольную консоль SSH. Некоторая вспомогательная регистрация программы, вероятно, исчезла. - Daniel B
Прошло много лет с тех пор, как я создал свой id_rsa, и я никогда не использовал кодовую фразу и использовал ее для ssh на многих серверах. У меня действительно есть кодовая фраза, или это только, что Сьерра думает, что я должен? Обратите внимание, что $ cat ~ / .ssh / id_rsa | head -2 ----- НАЧАТЬ ЧАСТНЫЙ КЛЮЧ RSA ----- Тип Proc: 4, ENCRYPTED - Joe Murray
дубликат apple.stackexchange.com/q/254468/62697 - Cœur
@erwan, вы, кажется, активны здесь. Отвечает ли ответ на ваш вопрос? - tedder42
Ответит ли какой-либо из ответов на проблему? Если это так, вы должны принять его. - Shafik Yaghmour


ответы:


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

Host *
    UseKeychain yes

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


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


983
2017-12-19 12:04



Это абсолютно сработало для меня. Все ниже кажется более сложным, чем это исправление. - Br.Bill
Обратите внимание Host * блок должен (почти) всегда располагаться внизу ~/.ssh/config файл. когда ssh ищет настройки, в которых он использует первый которую он находит. Таким образом, поместив блок подстановочных знаков в конец, он действует как набор значений по умолчанию; вы можете переопределить настройки для определенных хостов, указав их ранее в файле. - Molomby
Это сработало и для меня, но мне нужно было ввести парольную фразу правильно. Там есть другой ответ который описывает, как вы можете просмотреть пароль, если вы его не помните. - FGreg
Если файл конфигурации не существует, будет создано создание и добавление этого файла. - wynshaft
Вам не нужно Host * заголовок. Просто добавьте одну строку UseKeychain yes в верхней части .ssh/config если вы хотите, чтобы это применимо ко всем хостам. - sj26


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

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

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


164
2017-09-23 12:53



Это работает, но, похоже, не сохраняется при перезагрузке компьютера. У кого-то еще такая же проблема? - joshua.paling
Да, такая же проблема здесь. @ joshua.paling - kingkool68
@ joshua.paling, kingkool68 - Apple удалила возможность запоминать ваши SSH-ключи при перезагрузке, чтобы соответствовать обычным поведениям OpenSSH. См. Этот вопрос для других способов достижения одинаковой функциональности: apple.stackexchange.com/questions/254468/... - Evan Pon
@EvanPon Но это не будет работать с зашифрованными ключами, не так ли? - Konrad Rudolph
@KonradRudolph работает для меня. призвание ssh-add с -A опция будет искать в цепочке ключей MacOS для любых паролей для соответствующих идентификаторов. Я считаю, что он подскажет вам, не были ли пароли в цепочке ключей. - Evan Pon


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

/usr/bin/ssh-add -K

Это хранит кодовые фразы в цепочке ключей.

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

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


62
2017-10-09 14:39



Это единственное, что работает. - cryptic0
При использовании этого решения мне не нужно было создавать .ssh / .config. - Shai
Это сработало для меня. Нет необходимости редактировать файл хоста. Я нахожусь в Сьерре. - cchiera
Это сработало для меня на Mac OS Sierra. - Dayron Gallardo
Как указано ранее, это работает, но не сохраняется между перезапусками. Решение @ jukka-suomela работает через перезагрузки. - EasyCo


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

  • В Finder найдите приложение Keychain Access.
  • В Keychain Access найдите SSH.
  • Дважды щелкните запись для своего SSH-ключа, чтобы открыть новое диалоговое окно.
  • Диалог доступа к цепочке ключей В левом нижнем углу выберите «Показать пароль».
  • Вам будет предложено ввести пароль администратора. Введите его в диалоговое окно «Keychain Access».
  • Ваш пароль будет раскрыт.

38
2017-10-29 17:16



Не работает. Терминал все еще говорит «плохая кодовая фраза» - Jayden Lawson


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

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

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


18
2017-09-27 14:40



Это, похоже, также официальный ответ Apple - см. openradar.appspot.com/27348363 - Nick Maynard
Лучшее решение до сих пор для меня. Я использую Mac OSX Sierra (10.12.2). - zyc


Одно исправление заключается в добавлении следующего в ваш файл ~ / .ssh / config:

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

Взято из: https://www.reddit.com/r/osx/comments/52zn5r/difficulties_with_sshagent_in_macos_sierra/ Также см: https://apple.stackexchange.com/a/264974/3810


13
2017-12-16 06:14



До сих пор ни в одном из ответов никто не упоминал Bad configuration option: usekeychain Ошибка, которую я получаю с помощью UseKeychain (однако она заглавная). Но я был способный заставить его работать, удалив только эту строку и оставив AddKeysToAgent и IdentityFile (вам все равно придется вводить кодовую фразу в первый раз). Это с macOS Sierra 10.12.6. - William Turrell
это прекрасно работает, когда я нахожусь в терминале и использую команду ssh, но другие приложения, такие как WebStorm, которые используют свой собственный терминал, не принимают эту конфигурацию, пока я не сначала использую команду ssh в обычном терминале. то он работает везде, какие-то предложения? - santiago arizti
@WilliamTurrell Если это все еще происходит, введите which ssh чтобы вы использовали /usr/bin/ssh а не версия от Fink или MacPorts, которая была бы под чем-то вроде /usr/local/bin/ssh или /opt/local/bin/ssh - Stefan Lasiewski


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


7
2017-09-22 10:58



Хотя это обходное решение, я не думаю, что это действительно решает проблема ОП. - Daniel B
Это работает для меня. @DanielB, в чем проблема с этим? - Dag Høidahl
@ DagHøidahl Ключ больше не будет зашифрован. Он может быть украден с обычными правами пользователя, поэтому шифрование сильно СЛЕДУЕТ. - Daniel B
Это удаляет пароль из ключа, поэтому он работает вокруг проблемы OP. Но я рекомендую против этого. Пароль - это все, что не позволяет людям использовать ваш ключ, когда он украден. Поскольку ваш ключ, вероятно, даст доступ к нескольким системам, вы не хотите его ослабить. - Martijn Heemels


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

Введите ключевую фразу, нажмите Вернуть и вам должно быть хорошо идти.

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

ssh-add -K

Если все это сработало, введите ssh-add -l и вы должны увидеть один единственный SSH-ключ / идентификатор, указанный в списке.

Все хорошо? Теперь откройте свой .bash_profile:

nano ~/.bash_profile

И добавьте эту строку в нижнюю; комментировать или удалять -Aесли у вас это есть:

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

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

ОБНОВЛЕНИЕ: теперь Apple добавила UseKeychain вариант для открытых опций конфигурации SSH и считает ssh-add -A также решение.

Что касается macOS Sierra 10.12.2, Apple (предположим) добавила UseKeychain config для конфигураций 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  как объяснено в этом Открытом Радаре или добавление UseKeychain как один из вариантов для каждого пользователя ~/.ssh/config,


3
2018-01-02 00:05