出于安全考虑,一般云主机都只能通过堡垒机两级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步:
- 本机配置ssh跳板。保证本机能直接ssh 10.20.20.20。因为跳板机10不能访问目标8888端口
- 在命令行中(推荐GitBash)执行如下命令,输入20的账号密码
ssh -f -N -L localhost:12345:192.168.88.8:8888 user@10.20.20.20 -p22
- 在本机浏览器中输入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