前言

一般公司的服务器放在外网时,都会设置一个跳板机,访问公司其他服务器都需要从跳板机做一个ssh跳转(防火墙规则会做相应配置),而前文讲过,外网的服务器基本都要通过证书登录的。于是我们面临一个情况,本机ssh->跳板机->目标机器。如果是密码验证,这个问题都不到,但是对于证书登录,就带来一个ssh密钥转发的问题。

linux ssh客户端密钥转发

如果是linux客户端,从linux客户端的ssh跳转过去时,一般我们会执行命令

ssh blue@跳板机ip

然后我们在跳本机上跳转到目标机器

ssh blue@目标机器ip

跳板机ip和目标机器ip,blue账户下已经在相应的.ssh/authorized_keys加入了公钥,配置是没有问题了,但是我们会遇到一个错误,叫Pubkey Unauthorization,因为跳板机没有blue的私钥。问题总是会有,解决方法也总是有,ssh是有转发密钥的功能,所以我们从本机跳转到跳板机是,可以把私钥转发过去。

所以正确做法是,在本机linux客户端执行命令

ssh -A blue@跳板机ip

-A表示转发密钥,所以跳转到跳板机,密钥也转发了过来。

接下来我们再在跳板机执行命令

ssh -A blue@目标机器ip

这里的-A参数非必要,如果你不需要从目标机器跳转到其他目标机器,也不需要继续转发密钥了。

另外可以配置本机客户端的默认配置文件,修改为默认转发密钥:

修改ssh_config(不是sshd_config,一般在/etc或者/etc/ssh下):把#ForwardAgent no改为ForwardAgent Yes

跳板机是否需要配置,同理参考你的需要。

windows SecureCRT密钥转发

windows下SecureCRT配置代理转发,需要做以下设置

linux ssh客户端密钥转发_服务器

这里也只是配置客户端跳转到跳板机转发密钥,至于跳板机是否可以转发密钥,还是要参考上文的。