ssh-agent是ssh代理程序,使用ssh-agent可以方面管理私钥。
ssh-agent主要使用在如下两个场景:
1.使用不同的密钥连接不同主机,每次连接都要指定私钥;
2.当私钥设置了密码,每次使用认证时都需要输入密码,非常麻烦。
启动ssh-agent
启动ssh-agent有两种方法:
ssh-agent $SHELL
eval 'ssh-agent'
-
ssh-agent $SHELL
这种方式会在当前shell中启动一个默认shell作为当前shell的子shell,ssh-agent程序会在子shell中运行。$SHELL变量名代表系统的默认shell,如果自己知道系统使用的是哪一种shell也可以直接指定,如ssh-agent bash,ssh-agent csh.退出当前子shell使用exit。使用pstree查看进程树。 -
eval 'ssh-agent'
这种方式不会启动一个子shell,而是直接启动一个ssh-agent进程,使用ssh-agent -k来关闭代理。如果退出了当前bash,再使用ssh-agent -k无法关闭代理。当然,第一种方式可是可以使用ssh-agent -k来关闭代理的。
添加密钥
使用如下命令将私钥添加到代理中
ssh-add ~/.ssh/id_rsa_test
id_rsa_custom是指私钥,上述命令需要在已经启动了ssh-agent的状态下使用。
选择对应的私钥
这种情况是我们在创建密钥对时手动指定了密钥名称,而不是使用默认的名称。分为以下几步:
-
ssh-agent bash
启动代理程序 -
ssh-add ~/.ssh/id_rsa_test
添加密钥 -
ssh root@192.168.0.45
连接远程机器
免去输入私钥密码
这种情况是我们在创建密钥对时指定了密钥的密码,解决过程分为几步。
-
ssh-agent bash
启动代理程序 -
ssh-add ~/.ssh/id_rsa_test
将密钥加入代理,此时会提示输入密钥的密码 -
ssh -i ~/.ssh/id_rsa_test root@192.168.0.45
连接远程机器
相关命令
ssh-add -l //查看代理中的私钥
ssh-add -L //查看公钥
ssh-add -d /root/.ssh/id_rsa_test //移除密钥
ssh-add -D //清空所有私钥
ssh-add -x //对代理进行加锁,加锁后仍然需要指定密钥或者密码等
ssh-add -X //对代理进行解锁