securecrt 中的 ssh-agent比较有意思

一个偶然的机会,发现我从一台电脑的虚拟机中的ssh可以直接连到我的另一台服务器。

而我并没有在这个虚拟机中配置ssh key。另一台电脑就不行。

它是如何连上去的?

ssh-v查到一段:

debug1: Authentications that can continue: publickey,password

debug1: Next authentication method: publickey

debug1: Offering public key:

debug1: Server accepts key: pkalg ssh-rsa blen 279debug1: Authentication succeeded (publickey).

而不行的电脑,信息是这样的:

debug1: Authentications that can continue: publickey,password

debug1: Next authentication method: publickey

debug1: Trying private key: /home/swigger/.ssh/id_rsa

debug1: Trying private key: /home/swigger/.ssh/id_dsa

debug1: Trying private key: /home/swigger/.ssh/id_ecdsa

debug1: Next authentication method: password

显然,这个Offering public key:后面又没有东西是最可疑的。找到ssh源代码一看,原来这里本来是要显示一个文件名,但可惜是个空串,再花了点时间查了一下,看代码看的,原来这里有个identity没有文件名,不是从文件加载的,来自一个叫agent的东西

然后就查ssh-agent的相关东西,查这个agent的数据来自哪里,从unix socket查到相关的sshd进程。

然后就搜到了相关的信息,原来:

 

securecrt 支持ssh agent forwarding, 不过要在global options中选ssh2打开。

打开后,如果为某个server启用了public key登录,那么相关的key就被securecrt 记录到agent里去了。

通过相关的agent协议,securecrt可以把这个数据提交到在里面运行的ssh, scp等命令,于是啥也没有配置的虚拟机也能直接登到我的目标server了。

不过,我是为server a启用的public key登录,但server b(虚拟机)里也有这个public key的agent记录,这算是bug还是feature呢?

此条目发表在软件分类目录。将固定链接加入收藏夹。

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注

*