前言
一般公司的服务器放在外网时,都会设置一个跳板机,访问公司其他服务器都需要从跳板机做一个ssh跳转(防火墙规则会做相应配置),而前文讲过,外网的服务器基本都要通过证书登录的。于是我们面临一个情况,本机ssh->跳板机->目标机器。如果是密码验证,这个问题都不到,但是对于证书登录,就带来一个ssh**转发的问题。
linux ssh客户端**转发
如果是linux客户端,从linux客户端的ssh跳转过去时,一般我们会执行命令
ssh [email protected]跳板机ip
然后我们在跳本机上跳转到目标机器
ssh [email protected]目标机器ip
跳板机ip和目标机器ip,blue账户下已经在相应的.ssh/authorized_keys加入了公钥,配置是没有问题了,但是我们会遇到一个错误,叫Pubkey Unauthorization,因为跳板机没有blue的私钥。问题总是会有,解决方法也总是有,ssh是有转发**的功能,所以我们从本机跳转到跳板机是,可以把私钥转发过去。
所以正确做法是,在本机linux客户端执行命令
ssh -A [email protected]跳板机ip
-A表示转发**,所以跳转到跳板机,**也转发了过来。
接下来我们再在跳板机执行命令
ssh -A [email protected]目标机器ip
这里的-A参数非必要,如果你不需要从目标机器跳转到其他目标机器,也不需要继续转发**了。
另外可以配置本机客户端的默认配置文件,修改为默认转发**:
修改ssh_config(不是sshd_config,一般在/etc或者/etc/ssh下):把#ForwardAgent no改为ForwardAgent Yes
跳板机是否需要配置,同理参考你的需要。
windows SecureCRT**转发
windows下SecureCRT配置代理转发,需要做以下设置
这里也只是配置客户端跳转到跳板机转发**,至于跳板机是否可以转发**,还是要参考上文的。
在xshell中配置如下:
附:
SecureCRT生成的**转成OpenSSH格式操作:
Tools -> Convert Private Key To OpenSSH Format 然后选择公钥
或者使用ssh-****** -i –f pubkey.file 进行转换
对于SecureCRT生成的Public Key,还需要在服务器端运行命令修改Public Key文件,SecureCRT生成的Pubkic Key文件格式如下例:
---- BEGIN SSH2 PUBLIC KEY ----
Subject: somebody
Comment: "[email protected]"
ModBitSize: 1024
AAAAB3NzaC1yc2EAAAADAQABAAAAgQC9s07Uev+qQ8/aYA0GO2f0ltbwt3DTdeqTtKMm7LZi7nEqHPDtxBZDGXoEeim/WYEQTV0kUBtDaX5RwPihHBk4n3Q2zTZ4ypa3cbAzl48IhVtQlDrUYFnQee+unP0waSykeIrCtDzZVeMrb0WqkeeulYhe6FPBaWHd1q8Q2VqCpQ==
---- END SSH2 PUBLIC KEY ----
使用ssh-****** -i –f pubkey.file来转换非OpenSSH的pubkey格式,这样Public Key文件变成如下格式
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAAAgQC9s07Uev+qQ8/aYA0GO2f0ltbwt3DTdeqTtKMm7LZi7nEqHPDtxBZDGXoEeim/WYEQTV0kUBtDaX5RwPihHBk4n3Q2zTZ4ypa3cbAzl48IhVtQlDrUYFnQee+unP0waSykeIrCtDzZVeMrb0WqkeeulYhe6FPBaWHd1q8Q2VqCpQ==
《SSH权威指南》 :http://vdisk.weibo.com/s/9WGM6hK5on4
转载于:https://my.oschina.net/jiyuefeng/blog/730542