现在有两台服务器,SERVER A 可通过外网访问,SERVER B (linux/mac/windows)通过局域网与 A 连接,由于种种原因(防火墙啊、外网限制啊),我们(client)无法直接登录 B 或 访问 B 上的业务系统。

那么问题来了,怎样才能通过 A 来访问 B ?

ssh-port-forword.png

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 20150721150009.png

20150721145806.png

20150721150537.png

保存此窗口一直打开,使用完成后 exit 退出关闭。

20150721145638.png

2、linux、mac 直接输入命令即可,当然,也可以使用其它的工具,如 vssh、zoc 等。