混合云通过SSH网关跳板机隧道管理

kionf

通过SSH网关代理,连通混合云,通过堡垒机工具Ansible统一管理。

0x00 问题分析

以下内容A区代表AWS,B区代表阿里云。并vpc内网络互通,外部访问只能通过堡垒机

如上图所示,A区为172网段,且只有一台机器可供外网访问,且此机器为现有Ansible堡垒机。现在新加入B区机器需要管理,B区也只提供一台专用SSH网关跳板机供外网访问。

需求:B区需要使用A区已有Ansible堡垒机,通过B区提供的专用SSH跳板机直接管理B区所有机器。

这里需要使用SSH,ProxyCommand代理隧道功能,来实现SSH跳板机


0x01 配置

通过修改SSH配置来指定SSH隧道代理

vim ~/.ssh/config
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Host jumpserver
User root # 登录到B区ssh跳板机用户
Hostname 36.22.13.140 # B区跳板机IP
IdentityFile ~/.ssh/id_rsa # ssh跳板机ssh免密key
# 连接主机后,需要执行的命令
ProxyCommand none
# 禁用密码查询。此选项在脚本和其他没有用户提供密码的批处理作业中很有用
BatchMode yes
#匹配以下host规则,则通过上面的 jumpserver ssh代理隧道连接
Host 192.168.11.*
# 保持连接,每30s发送心跳
ServerAliveInterval 30
TCPKeepAlive yes
IdentityFile ~/.ssh/id_rsa # B区机器ssh免密key
ProxyCommand ssh -qay jumpserver 'nc %h %p'
# 重复使用已存在的连接套接字
ControlMaster auto


B区SSH跳板机需要安装nc命令

安装net-tools
yum -y install net-tools

注:如果B区SSH网关跳板机不想使用nc命令,需要更改
ProxyCommand ssh -qay jumpserver 'nc %h %p'

ProxyCommand ssh -W jumpserver %h:%p`

A区堡垒机配置到B区机器ssh免密

其他机器自行配置,这里省略
1
ssh-copy-id [email protected]

0x02 连接测试

在A区堡垒机直接,使用ssh连接B区192.168.11.*的机器

连接机器
1
2
3
4
5
[email protected][15:47].ssh:$ ssh 192.168.11.4
Last login: Sat Sep 8 15:47:02 2018 from 192.168.11.3

成功通过B区SSH网关跳板机,连接管理B区内网机器。测试直接使用ansible也可管理。

至此,使用SSH网关跳板机管理混合云以配置完成


0x03 总结


通过 B区SSH网关 来连接内部VPC机器,SSH除了人们熟悉常见的登陆管理远程的linux主机意外应用还有很多,ssh的网络转发隧道很强大。

推荐阅读:ssh端口转发

参考:

ssh-proxycommand
ssh_config_man