前言
一般公司的服务器放在外网时,都会设置一个跳板机,访问公司其他服务器都需要从跳板机做一个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配置代理转发,需要做以下设置
这里也只是配置客户端跳转到跳板机转发密钥,至于跳板机是否可以转发密钥,还是要参考上文的。