我知道ssh keygen,它可以在~/.ssh
中创建一个公钥和私钥,默认情况下为id_rsa
和id_rsa.pub
例如:
ssh-keygen
稍后,我们将id_rsa.pub
添加到服务器的known_hosts
中,这样我们就可以进行
ssh user@hostname.com
但我看到我们使用ssh-add
来传递私钥,这样我们就可以在不需要密码的情况下登录
例如:
ssh-add <(echo "$SSH_PRIVATE_KEY")
为此,我们需要启动ssh代理
eval $(ssh-agent -s)
然后
ssh user@hostname.com
假设已经存在CCD_ 7。那么,ssh是如何知道它必须使用哪个私钥的呢
ssh
,如果它在环境中找到SSH_AUTH_SOCK
的值,将向该代理请求所有私钥,并逐一尝试,除非您通过-i
命令行选项或IdentitiyFile
配置选项告诉它要使用哪个特定密钥。
ssh-agent
的主要好处是,它可以在内存中保存未加密的密钥,因此当密钥添加到代理时,您只需要使用一次密钥的密码短语,而不是每次ssh
尝试使用密钥时。
(另一个好处是,如果你在一个链中有多个ssh
连接,你可以将私钥保存在第一台机器上的代理中。ssh
客户端可以将代理连接转发到远程机器,在那里ssh
客户端可以访问代理,为链中的下一步使用密钥。)