Я должен запустить эту команду после обновления до MacOS:
ssh-add -K
Устраняет проблему после перезагрузки, но мне приходится запускать эту команду каждый раз, когда я вхожу в свой компьютер.
Если я не запускаю команду, указанную выше, мои ключи ~/.ssh
пропускаются, и меня просят ввести пароль сервера, чтобы установить соединение.
$ ssh-add -K
дает мнеssh-add: illegal option -- K
-K
. Смотрите ответ @JakeGould для разрешения.Ответы:
Начиная с macOS Sierra 10.12.2 Apple добавила
ssh_config
опцию,UseKeychain
которая называется «правильное» решение проблемы. Добавьте следующее в ваш~/.ssh/config
файл:Со
ssh_config
man
страницы 10.12.2:источник
IdentityFile ~/.ssh/id_rsa
это избыточно и не нужно (если смотреть на параметры по умолчанию). Я никогда не устанавливал эту опцию в моем конфигурационном файле ssh.~/.ssh/config~
является предпочтительным, поскольку оно решает проблему наssh
уровне. Не уверен на 100%, что.bash_profile
мод будет работать для клиентов с графическим интерфейсом, использующих ssh, без использования оболочки.У меня также была эта проблема при попытке развернуть некоторый код с помощью Capistrano . Очень расстраивает. Вот два известных мне метода решения этой проблемы.
Способ 1. Добавьте все известные ключи к агенту SSH.
Таким образом, одно решение, которое я нашел, - это запустить
ssh-add
с-A
опцией, которая добавляет все известные идентификаторы к агенту SSH, используя любые парольные фразы, хранящиеся в вашей цепочке для ключей, например:Теперь это работает, но не будет сохраняться при перезагрузке. Так что если вы хотите больше никогда не беспокоиться об этом, просто откройте
~/.bash_profile
файл вашего пользователя, например так:И добавьте эту строку внизу:
Теперь, когда вы открываете новое окно терминала, все должно быть хорошо!
Способ 2. Добавьте к агенту только ключи SSH, которые находятся в цепочке для ключей .
Поэтому, хотя эта
ssh-add -A
опция должна работать для большинства базовых случаев, недавно я столкнулся с проблемой, когда у меня было 6-7 блоков Vagrant (которые используют SSH-ключи / идентификаторы для доступа) на компьютере поверх более распространенногоid_rsa.pub
на месте.Короче говоря, я оказался заблокированным на удаленном сервере из-за слишком большого количества неудачных попыток на основе ключей / идентификаторов SSH, поскольку доступ к серверу был основан на пароле, а ключи / идентификаторы SSH являются ключами / идентификаторами SSH. Таким образом, агент SSH попробовал все мои ключи SSH, не удалось, и я даже не смог получить запрос пароля.
Проблема заключается в том, что
ssh-add -A
мы просто произвольно добавим каждый ваш ключ / идентификатор SSH к агенту, даже если в этом нет необходимости; такие как в случае бродячих коробок.Мое решение после большого тестирования было следующим.
Во-первых, если к вашему агенту добавлено больше ключей / идентификаторов SSH, чем нужно, как показано на рисунке,
ssh-add -l
затем удалите их все из агента следующим образом:После этого запустите агент SSH в качестве фонового процесса, например:
Теперь, это становится странным, и я не слишком уверен, почему. В некоторых случаях вы можете специально добавить
~/.ssh/id_rsa
ключ / идентификатор к агенту следующим образом:Введите свой пароль, нажмите, Returnи вы должны быть в порядке.
Но в других случаях этого достаточно, чтобы добавить ключ / идентификатор:
Если это все сработало, введите,
ssh-add -l
и вы увидите один одиночный ключ SSH / идентификатор в списке.Все хорошо? Теперь откройте свой
.bash_profile
:И добавьте эту строку внизу; прокомментируйте или удалите
-A
версию, если она у вас есть:Это позволит перезагружать ключ / идентификатор SSH агенту SSH при каждом запуске / перезагрузке.
ОБНОВЛЕНИЕ: Apple теперь добавила
UseKeychain
параметр к открытым параметрам конфигурации SSH и также рассматриваетssh-add -A
решение.Начиная с macOS Sierra 10.12.2, Apple добавила
UseKeychain
параметр конфигурации для настроек SSH. Проверка страницы руководства (черезman ssh_config
) показывает следующую информацию:Что сводится к тому, что Apple рассматривает решение как добавление
ssh-add -A
к вашему,.bash_profile
как описано в этом билете Open Radar, или добавление вUseKeychain
качестве одного из вариантов для каждого пользователя~/.ssh/config
.источник
ssh-add -K [path to key]
введите и введите pw при появлении запроса. Брелок сохранит пароль, а ssh-add получит его оттуда.UseKeychain
иAddKeysToAgent
автоматически добавлять ваши ключи из вашего ssh_config. Не требуется сценарий оболочки. См. Ответ @mluisbrown ниже для обновленной информации для 10.12.2ssh-add -A
свой rc-скрипт, если вы хотите, чтобы ваши ключи всегда загружались».¯\_(ツ)_/¯
Как объясняется здесь , это рекомендуемый метод начиная с macOS 10.12.2 :
Добавьте следующие строки в ваш
~/.ssh/config
файл:Любой ключ, который вы добавляете в ssh-agent с помощью
ssh-add /path/to/your/private/key/id_rsa
команды, будет автоматически добавлен в цепочку для ключей и должен быть автоматически загружен при перезагрузке.Я добавляю этот ответ, потому что:
IdentityFile ~/.ssh/id_rsa
строку, но эта опция не нужна для автозагрузки ключей (и она фактически свяжет этот конкретный ключ с разделом хоста, к которому вы добавляете его, что вам не нужно, если вы используете разные ключи для разные хоты).UseKeychain
, но этого недостаточно для сохранения ключейssh-agent
после перезагрузки.источник
ssh-add -L
и он сообщитThe agent has no identities
. Ничего не будет там, пока вы не подключитесь.AddKeysToAgent
Не сохраняются ключи между перезагрузками в любом случае!Я написал небольшой пост на эту тему, который может вам помочь.
Решением является вызов
ssh-add -A
команды при каждом запуске.Просто добавьте
.plist
в путь файл со следующим содержимым~/Library/LaunchAgents/
или создайте его с помощью приложения Lingon :источник
Начиная с macOS 10.12.2 вы можете использовать эту
UseKeychain
опцию. Узнайте больше здесь или посмотритеman ssh_config
.Так что просто сделайте следующее:
echo "UseKeychain yes" >> ~/.ssh/config
источник
>>
под угрозой, если вы вводите команду несколько раз. Лучше сделать ручную редакцию файла, как описано в ответе mluisbrown или ответе ChrisJF .Я обнаружил, что
ssh-add -K
дал мне « нелегальный вариант - К ». Это произошло потому, что ssh-add была странной версией из / usr / local / bin (установлена brew?). Мне удалось добавить ключ путем специального использования ssh-add, расположенного в / usr / bin:источник
У меня была эта проблема раньше, и я нашел способ обойти это. Я только что создал файл с именем
config
в моей~/.ssh
папке, где я добавил следующие строки:Я не уверен, почему, но
Host
и то иHostName
другое важно. В моем случае, если одного из них не было, решение не сработало.Затем я просто сделал,
ssh-add -K
и это работало даже после перезагрузки.источник
Если вы используете другую версию ssh (например, установленную через homebrew), вышеприведенные решения не будут работать из коробки. Например,
AddKeysToAgent yes
иUseKeychain yes
в.ssh/config
файле не распознаются не-Apple версии SSH и приведет к ошибке. То же самое для опции-A
или-K
дляssh
клиента.Это означает, что ответ @mluisbrown не будет работать вообще. Вы можете использовать метод 1 ответа @JakeGould и явно использовать
ssh-add
утилиту macOS,.bash_profile
чтобы добавить все ключи в цепочку для ключей, т.е.Как уже упоминалось в комментарии выше , вам может понадобиться сначала добавить ключ в цепочку ключей: например,
/usr/bin/ssh-add -K .ssh/github
источник
Поправки ~ / .ssh / config для добавления UseKeyChain для всех хостов достаточно, чтобы остановить этот повторяющийся кошмар;)
Если файл пуст или не существует, просто создайте и / или добавьте указанную выше конфигурацию.
источник
Я обновился до Mac OS X Sierra (10.12.6). Я мог бы ssh на других хостах, но не на github.com.
Вот что я должен был вставить в ~ / .ssh / config:
После этого изменения я мог использовать github, как и раньше.
источник