SSH密钥转发(Linux和Windows)

2016/08/10 12:52
阅读数 582

前言

一般公司的服务器放在外网时,都会设置一个跳板机,访问公司其他服务器都需要从跳板机做一个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配置代理转发,需要做以下设置

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

 

在xshell中配置如下:

附:

SecureCRT生成的密钥转成OpenSSH格式操作:

Tools -> Convert Private Key To OpenSSH Format 然后选择公钥

或者使用ssh-keygen -i –f pubkey.file 进行转换

 

对于SecureCRT生成的Public Key,还需要在服务器端运行命令修改Public Key文件,SecureCRT生成的Pubkic Key文件格式如下例:

 

---- BEGIN SSH2 PUBLIC KEY ----

Subject: somebody

Comment: "somebody@test"

ModBitSize: 1024

AAAAB3NzaC1yc2EAAAADAQABAAAAgQC9s07Uev+qQ8/aYA0GO2f0ltbwt3DTdeqTtKMm7LZi7nEqHPDtxBZDGXoEeim/WYEQTV0kUBtDaX5RwPihHBk4n3Q2zTZ4ypa3cbAzl48IhVtQlDrUYFnQee+unP0waSykeIrCtDzZVeMrb0WqkeeulYhe6FPBaWHd1q8Q2VqCpQ==

---- END SSH2 PUBLIC KEY ----

 

使用ssh-keygen -i –f pubkey.file来转换非OpenSSH的pubkey格式,这样Public Key文件变成如下格式

ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAAAgQC9s07Uev+qQ8/aYA0GO2f0ltbwt3DTdeqTtKMm7LZi7nEqHPDtxBZDGXoEeim/WYEQTV0kUBtDaX5RwPihHBk4n3Q2zTZ4ypa3cbAzl48IhVtQlDrUYFnQee+unP0waSykeIrCtDzZVeMrb0WqkeeulYhe6FPBaWHd1q8Q2VqCpQ==

 

《SSH权威指南》 :http://vdisk.weibo.com/s/9WGM6hK5on4

 

展开阅读全文
打赏
0
1 收藏
分享
加载中
更多评论
打赏
0 评论
1 收藏
0
分享
返回顶部
顶部