出于安全考虑,一般云主机都只能通过堡垒机两级ssh才能连通,即先ssh堡垒机,再ssh连到内网目标云主机上执行命令。
(堡垒机俗称跳板机,一般只开放一个ssh端口。有些堡垒机没有公网IP,必须先登录vpn能才能连)

怎么传文件呢?

先传到跳板机再传到目标机?传2次?太麻烦,浪费时间还浪费磁盘空间。
有人说配置config,可以直接ssh目标机,也可以直接scp文件到目标机。没错是这样(文中有配置示例)。

那云主机上有web页面能直接访问么?

  • 内网数据库能直接连么?

当然可以的,能连ssh,就能访问内网的网页和数据库。只要能手动多级ssh访问到,就能通过配置ssh后在本地直接访问到。

轻松实现

假设网络条件如下:(受安全组或网络策略影响,只能通过10.20.20.20访问192.168.88.8:8888)

本机(登录VPN 公网IP:8444) --> 10.10.10.10:22 --> 10.20.20.20:22 -->
192.168.88.8:8888

只需3步:

  1. 本机配置ssh跳板。保证本机能直接ssh 10.20.20.20。因为跳板机10不能访问目标8888端口
  2. 在命令行中(推荐GitBash)执行如下命令,输入20的账号密码
ssh -f -N -L localhost:12345:192.168.88.8:8888 user@10.20.20.20 -p22
  1. 在本机浏览器中输入localhost:12345,出来的就是目标机8888端口的内容。

配置ssh跳板

配置本机直接ssh 10.20.20.20。配置示例:
vi $HOME/.ssh/config

Host jumper
  hostname 10.10.10.10 #跳板机要装有ncat,否则连接时会报错
Host sub2020
  hostname 10.20.20.*
  ProxyCommand ssh -q -A jumper nc %h %p
  • 当然如果8888是数据库端口,也是直接在数据库客户中配置地址为localhost:12345。
  • 当然10.10.10.10,10.20.20.20也可以配置免密登录,不用再输密码

再引申一下,还想让其他ip通过本机直连内网页面

其他IP --> 本机IP:12345(登录VPN 公网IP:8444) --> 10.10.10.10:22 -->
192.168.88.8:8888

ssh -f -N -L 本机IP:12345:192.168.88.8:8888 user@10.10.10.10 -p22

或者

ssh -f -N -L :12345:192.168.88.8:8888 user@10.10.10.10 -p22
  • 注意前提是要保证本机的防火墙已放通12345端口,这样别人才能连通本机的12345端口

再简单一点,目标服务就在跳板机上,但是端口未放开(只放开22)

本机 --> 10.10.10.10:22 --> 10.10.10.10:8888

ssh -f -N -L :12345:10.10.10.10:8888 user@10.10.10.10 -p22

更多推荐