使用ssh-agent管理密钥

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	//对代理进行解锁
原文地址:https://www.cnblogs.com/suraer/p/8550004.html