现在有两台服务器,SERVER A 可通过外网访问,SERVER B (linux/mac/windows)通过局域网与 A 连接,由于种种原因(防火墙啊、外网限制啊),我们(client)无法直接登录 B 或 访问 B 上的业务系统。
那么问题来了,怎样才能通过 A 来访问 B ?
SSH 是一个很好的工具,我们可以通过 SSH 的本地端口映射功能,将远程 B 的端口,映射至本地端口,来实现通过 A 间接访问 B 。
具体命令:
1ssh USER@HOST_A -P HOST_A_SSH_PORT -L 127.0.0.1:LOCAL_PORT:HOST_B:HOST_B_PORT
2
3#USER A 服务器 ssh用户名,如:root
4#HOST_A 服务器A IP地址(域),如:1.2.3.4
5#HOST_A_SSH_PORT 服务器A ssh端口,如:22
6#LOCAL_PORT 映射到本地的端口,如:13306
7#HOST_B 服务器B IP地址,和A同一内网的内网IP地址,如10.0.0.102)
8#HOST_B_PORT 服务器B上需要被外网访问到的端口,如3306
9
10EG.
11
12 ssh root@1.2.3.4 -P 22 -L 127.0.0.1:13389:10.0.0.102:3389
13 #通过 1.2.3.4 的 ssh 用户 root,将 10.0.0.102服务器的 3389 端口映射到本地的13389端口,从来实现,通过127.0.0.1:13389连接远程win server
14
15 ssh root@1.2.3.4 -P 22 -L 127.0.0.1:13306:10.0.0.102:3306
16 #映射远程 MySQL端口至本地 端口 13306
工具: 1、windows 下 putty
保存此窗口一直打开,使用完成后 exit 退出关闭。
2、linux、mac 直接输入命令即可,当然,也可以使用其它的工具,如 vssh、zoc 等。