2015-08-03 3 views
0

Несколько родных приложений Mac Я использовал, что открытые SSH-соединения, похоже, обладают этой магической способностью для поиска соответствующих открытых + закрытых ключей для подключения (если они присутствуют), а затем представить диалоговое окно системного связки ключей, чтобы попросить пользователя ввести пароль для дешифрования закрытого ключа. Я хотел бы сделать это в своем приложении. Как это работает, точно?Поиск подходящих ключей для аутентификации соединения SSH с Objective-C

В настоящее время я использую https://github.com/Lejdborg/NMSSH в качестве обертки Objective-C для libssh, которая предоставляет методы аутентификации через общедоступные и закрытые ключи, но насколько я могу судить, мне придется открыть диалог открытия файла и получить пользователь выбирает нужные ключи (не идеально) и представляет свой собственный пароль, вместо системы.

ответ

1

Способ, которым он работает для родных приложений, - ssh-agent. MacOS, поскольку Leopard создал встроенный пользовательский агент, который запускается с помощью системы.

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

Вы можете использовать программу ssh-add для добавления идентификаторов к агенту, тогда ssh просто будет работать.

Обратите внимание: ключи в агенте имеют приоритет над ключами, входящими в командную строку, в ssh (через параметр -i). Иногда это может привести к сбою ssh, потому что было слишком много ошибочных попыток (в то время как он пытался все загруженные ключи агента ssh)

Я не уверен, есть ли интерфейс агента с агентом; он использует Unix Domain Socket для связи с программами ssh и ssh-add.

https://help.github.com/articles/working-with-ssh-key-passphrases/ https://developer.apple.com/library/mac/documentation/Darwin/Reference/ManPages/man1/ssh-agent.1.html

Смежные вопросы