Я понимаю, что, поскольку Mac OS X Leopard связка ключей поддерживает хранение ключей SSH. Может кто-нибудь объяснить, как эта функция должна работать.
У меня есть несколько сгенерированных ключей RSA, которые хранятся в моем каталоге ~ / .ssh для доступа к различным серверам. У меня не установлены парольные фразы на этих клавишах. В настоящее время для входа на эти серверы я использую следующие команды в Терминале:
eval `ssh-agent` ssh-add ~ / .ssh / some_key_rsa ssh user @ server
(Я написал несколько функций Bash, чтобы сделать это проще.)
Есть ли лучший способ сделать это с помощью брелка?
ssh-add
чтобы добавить мои идентификаторы RSA в агент ssh по умолчанию, запущенный при входе в систему?$HOME/.ssh/authorized_keys
на этом сервере. Mac OS 'ssh-agent + keychain используется только для хранения ключевой фразы для ваших локальных ключей ssh; он не предназначен для отправки удаленных паролей через существующие соединения ssh.ssh -v
для диагностики того, что делает ssh. также использоватьsshd -p 8900 -v
на стороне сервера иssh -v remote:8900
для диагностики того, что делает sshd.Начиная с версии Leopard OS X, ssh-agent более тесно интегрирован с Keychain. Можно надежно хранить парольные фразы всех ваших ключей SSH в связке ключей, откуда ssh-agent будет читать их при запуске. Суть в том, что ваши ключи легко защитить парольными фразами, но вам никогда не придется вводить парольную фразу, чтобы использовать их! Вот как:
Добавьте ключевую фразу к каждому ключу ssh в цепочку ключей: (опция -k загружает только простые личные ключи, пропускает сертификаты)
(обратите внимание, что это заглавная K)
Всякий раз, когда вы перезагружаете свой Mac, все ключи SSH в вашей цепочке для ключей будут автоматически загружены. Вы должны увидеть ключи в приложении Keychain Access, а также из командной строки:
источник
ssh-add -l
не отображает никаких ключей при удаленном подключении (где $ DISPLAY не установлен). Здесь необходимо использовать специальные приемы для использования цепочки для ключей (например, в superuser.com/questions/141044/… )/usr/bin/ssh-add
.ssh-add -l
возвращает «Агент не имеет идентификаторов». (ps aux
включает в себя/usr/bin/ssh-agent -l
).Что касается macOS Sierra , ssh-agent больше не загружает автоматически загруженные ранее ssh-ключи при входе в свою учетную запись. Это намеренно со стороны Apple, они хотели переориентироваться на основную реализацию OpenSSH . [1]
Как объясняется здесь , это рекомендуемый метод начиная с macOS 10.12.2 :
Добавьте следующие строки в ваш
~/.ssh/config
файл:Любой ключ, который вы добавляете в ssh-agent с помощью
ssh-add /path/to/your/private/key/id_rsa
команды, будет автоматически добавлен в цепочку для ключей и должен быть автоматически загружен при перезагрузке.Следующее не рекомендуется (сохраняется для справки).
Чтобы вернуться к предыдущему поведению, вы должны выполнить
ssh-add -A
команду (которая автоматически загружает все ssh-ключи, которые имеют парольные фразы в цепочке для ключей) при входе в систему. Для этого выполните следующие действия:Сначала добавьте все ключи, которые вы хотите автоматически загрузить в ssh-agent, используя
ssh-add -K /absolute/path/to/your/private/key/id_rsa
команду.-K
Аргумент гарантирует , что ключ доступа фраза добавляется брелка Macos в . Убедитесь, что вы используете абсолютный путь к ключу. Использование относительного пути заставит автоматически запускаемый скрипт не найти ваш ключ.Убедитесь, что все ваши ключи отображаются как добавленные при вводе
ssh-add -A
.Создайте файл
com.yourusername.ssh-add.plist
в~/Library/LaunchAgents/
с ниже содержанием. Файлы Plist, такие как этот, используютсяlaunchd
для запуска сценариев при входе в систему. [2] [3]Скажите ,
launchd
чтобы загрузить файл Plist только что созданный командой:launchctl load ~/Library/LaunchAgents/com.yourusername.ssh-add.plist
.И у тебя должно быть все готово.
источник
Есть более простой способ, чем ответ Рикардо, чтобы сохранить ваш пароль между сессиями / перезапусками вашего Mac под управлением 10.12 Sierra.
ssh-add -K ~/.ssh/id_rsa
Примечание: измените путь к месту, где находится ваш ключ id_rsa.
ssh-add -A
Создайте (или отредактируйте, если он существует) следующий
~/.ssh/config
файл:Теперь пароль запоминается между перезагрузками!
Apple намеренно изменила поведение ssh-agent в macOS 10.12 Sierra, чтобы больше не загружать автоматически предыдущие ключи SSH, как отмечалось в этом обсуждении OpenRadar , Twitter и Техническом примечании от Apple . Решение выше имитирует старое поведение El Capitan и запоминает ваш пароль.
источник
ssh-add -K
чтобы добавить мой SSH-ключ в цепочку для ключей Apple, какое имя и тип записи отображаются в Keychain Access.app?Примечание: для macOS Sierra, пожалуйста, обратитесь к более свежему ответу ChrisJF .
[Ответ Джеффа МакКаррелла] [2] является правильным, за исключением того, что команда для добавления ключевой фразы содержит дефис, а не дефис, то есть
–K
вместо того-K
, чтобы вызывать сообщение с эффектом–K: No such file or directory
. Следует читать:источник
ssh-add -K
illegal option -- K
. Строчная k указана в качестве опции.-K
то есть dash-capital-K, все еще действуетЯ подозреваю, что вы не используете команду по умолчанию
ssh
. У васssh
установлены через порты? Попробуйтеwhich ssh
узнать, какуюssh
команду вы используете.Обычно должно отображаться диалоговое окно с запросом вашего пароля, если он еще не сохранен в вашей цепочке для ключей.
источник
У меня была похожая проблема при попытке войти в систему с помощью ssh-сертификата клиента. В этом конкретном случае это было для доступа к хранилищу git. Это была ситуация:
~/.ssh/
~/Library/Keychains/login.keychain
->
удаленный Mac->
Git / SSH серверКогда я подключился к удаленному Mac с помощью удаленного рабочего стола, у меня не было проблем. Однако при подключении по SSH к удаленному компьютеру Mac каждый раз меня спрашивали о парольной фразе ssh. Следующие шаги решили это для меня.
security unlock-keychain
Ключевая фраза хранится в цепочке ключей входа в систему. Это разблокирует его и позволит ssh-agent получить к нему доступ.eval `ssh-agent -s`
Запускает ssh-агент для использования оболочки. Он получит ключевую фразу из цепочки для ключей и использует ее для разблокировки закрытого ключа ssh.eval `ssh-agent -k`
Убей работающего ssh-агента.security lock-keychain
Снова заблокируйте брелок.источник
eval \$(ssh-agent)
Per Re: удаленный вход в систему и связку ключей . Когда не в псевдонимеeval $(ssh-agent)
работает ( без обратной косой черты $ ).Смотрите также:
... добавив это примечание, поскольку было запрошено больше подробностей: команда "security" способна импортировать ключи (и другие вещи) непосредственно в цепочки для ключей. Приятно то, что в отличие от ssh-add, вы можете указать связку ключей. Это позволяет импортировать напрямую в систему Keychain («man security», чтобы узнать, как)
источник
Лучшее решение Apple (начиная с macOS 10.12.2) описано здесь
источник
>>
под угрозой, если вы вводите команду несколько раз. Лучше сделать ручную редакцию файла, как описано в ответе ChrisJF .