向代理程序添加密钥是暂时的。它们仅在代理运行时才持续。如果您杀死它或重新启动计算机,它们将丢失,直到您重新添加它们。从ssh-agent
手册页:
ssh-agent是一个程序,用于保存用于公钥身份验证的私钥(RSA,DSA,ECDSA)。这个想法是ssh-agent在X会话或登录会话的开始时启动,而所有其他窗口或程序都作为ssh-agent程序的客户端启动。通过使用环境变量,可以在使用ssh(1)登录到其他计算机时找到该代理并将其自动用于身份验证。
该代理最初没有任何私钥。使用ssh-add(1)添加密钥。当不带参数执行,SSH-ADD(1)增加了文件~/.ssh/id_rsa
,~/.ssh/id_dsa
,~/.ssh/id_ecdsa
和~/.ssh/identity
。如果身份具有密码短语,则ssh-add(1)在终端上要求输入密码短语(如果它具有一个密码短语),或者从小型X11程序(如果在X11下运行)询问密码短语。如果这两种情况都不是,则身份验证将失败。然后,它将身份发送给代理。代理中可以存储多个身份。代理可以自动使用任何这些身份。 ssh-add -l
显示代理当前持有的身份。
macOS Sierra
从macOS Sierra 10.12.2开始,Apple为SSH配置添加了UseKeychain配置选项。您可以通过添加UseKeychain yes
到中激活此功能~/.ssh/config
。
Host *
UseKeychain yes
OSX钥匙串
我没有使用OSX,但是在SuperUser上找到了标题为“ 如何将Mac OS X钥匙串与SSH密钥一起使用 ”的问答。。
我了解自Mac OS X Leopard以来,钥匙串支持存储SSH密钥。有人可以解释一下此功能的工作原理。
因此,您可以使用以下命令将SSH密钥导入到Keychain中:
$ ssh-add -K [path/to/private SSH key]
然后,您的密钥应该在启动之间保持不变。
每当您重新启动Mac时,钥匙串中的所有SSH密钥都会自动加载。您应该能够在“钥匙串访问”应用程序中以及通过以下命令从命令行查看密钥:
ssh-add -l
来源:超级用户-如何将Mac OS X钥匙串与SSH密钥一起使用?