0

我使用的几个打开 SSH 连接的本机 Mac 应用程序似乎具有这种神奇的能力,可以找到用于连接的适当公钥 + 私钥(如果存在),然后显示系统钥匙串对话框以要求用户输入密码解密私钥。我想在我的应用程序中这样做。这到底是如何工作的?

我目前正在使用https://github.com/Lejdborg/NMSSH作为 libssh 的 Objective-C 包装器,它提供了通过公钥+私钥进行身份验证的方法,但据我所知,我必须弹出一个文件打开对话框并让用户选择所需的密钥(不理想)并显示我自己的密码对话框来代替系统的。

4

1 回答 1

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

于 2015-08-03T19:37:34.153 回答