ssh如何通过跳板机直接访问到后端服务器(Mac&Linux&Windows解决方案)

前言

如果公司的服务器在外网,一般会设置一个跳板机,访问公司其他服务器都需要从跳板机做一个ssh跳转,外网的服务器基本都要通过证书登录的。于是我们面临一个情况,本机ssh->跳板机->目标机器。如果直接在跳板机上放置公私钥对,并将跳板机上的公钥放到目标机器上,这样可以直接登录。但这样会有一个问题,跳板机上的root权限的用户可以获取普通用户的公私钥对,就算对私钥设置了密码,但是从安全角度来看,这样还是失去了保障,失去了服务器的一部分安全性。

如何来解决这个问题呢,其实ssh协议本身是支持秘钥转发的,不需要在跳板机上放置公私钥。

Linux(Mac)下有如下两种方式:

方式一:

从linux客户端的ssh跳转时,执行命令

ssh username@跳板机ip

然后在跳板机上跳转到目标机器

ssh username@目标机器ip

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

正确做法是,在本机linux客户端执行命令 ssh -A username@跳板机ip

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

接下来我们再在跳板机执行命令 ssh username@目标机器ip

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

修改ssh_config(不是sshd_config,一般在/etc或者/etc/ssh下):

#ForwardAgent no 改为 ForwardAgent Yes

方式二:

ssh username@目标机器ip -p 22 -o ProxyCommand='ssh -p 22 username@跳板机ip -W %h:%p'

也可以修改配置文件 ~/.ssh/config , 若没有则创建:


Host tiaoban   #任意名字,随便使用

    HostName 192.168.1.1   #这个是跳板机的IP,支持域名

    Port 22      #跳板机端口

    User username_tiaoban       #跳板机用户

 

Host nginx      #同样,任意名字,随便起

    HostName 192.168.1.2  #真正登陆的服务器,不支持域名必须IP地址

    Port 22   #服务器的端口

    User username   #服务器的用户

    ProxyCommand ssh username_tiaoban@tiaoban -W %h:%p



Host 10.10.0.*      #可以用*通配符

    Port 22   #服务器的端口

    User username   #服务器的用户

    ProxyCommand ssh username_tiaoban@tiaoban -W %h:%p


配置好后, 直接 ssh nginx 就可以登录 192.168.1.2 这台跳板机后面的服务器。 也可以用 ssh username@10.10.0.xx 来登录10.10.0.27, 10.10.10.33, .... 等机器。

windows SecureCRT密钥转发

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

资料:

[1] http://www.cnblogs.com/ggjucheng/archive/2012/08/19/2646427.html

[2] http://douyue.blog.51cto.com/10174393/1738586

  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
如果你要通过跳板机访问内网服务器,可以按照以下步骤操作: 1. 在本地电脑上打开终端,输入以下命令建立 SSH 隧道连接: ``` ssh -L <本地端口号>:<目标服务器IP>:<目标服务器端口号> <跳板机用户名>@<跳板机IP> ``` 其中,`<本地端口号>` 是你本地电脑上任意一个未被占用的端口号;`<目标服务器IP>` 和 `<目标服务器端口号>` 是你要访问的内网服务器的 IP 地址和端口号;`<跳板机用户名>` 和 `<跳板机IP>` 分别是你连接跳板机的用户名和 IP 地址。 例如,如果要通过跳板机连接 IP 地址为 `192.168.1.100`,端口号为 `22` 的内网服务器,可以使用以下命令: ``` ssh -L 8888:192.168.1.100:22 [email protected] ``` 2. 输入跳板机的登录密码进行身份验证。 3. 成功连接跳板机后,在终端中输入以下命令连接内网服务器: ``` ssh -p <本地端口号> <内网服务器用户名>@localhost ``` 其中,`<本地端口号>` 是你在第一步中指定的本地端口号;`<内网服务器用户名>` 是你要登录的内网服务器的用户名。 例如,如果在第一步中使用的本地端口号为 `8888`,要登录的内网服务器的用户名为 `root`,可以使用以下命令: ``` ssh -p 8888 root@localhost ``` 4. 输入内网服务器的登录密码进行身份验证。 5. 成功登录内网服务器后,在终端中输入 `exit` 命令退出 SSH 连接。 6. 在浏览器中输入 `http://localhost:8080` 访问内网服务器的 Web 应用程序,其中 `8080` 是你要访问的应用程序的端口号。 注意:以上命令中的 IP 地址、端口号和用户名等参数都需要根据实际情况进行替换。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

DieInADream

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值