使用ssh隧道穿透NAT访问内网主机(超干货)

使用ssh隧道穿透NAT访问内网主机(超干货)

一、需求

很多公司内部服务器架设在NAT之后,无公网IP,因为在外地出差或者在家里办公时无法访问,所以很多人使用远程桌面等软件进行连接,效率极低。至于ssh用法本文不做详细讲解,请大家自己百度或者google脑补,直接上一个正在使用的实际用例。本例网络结构如下:
这里写图片描述

因为公司内部无公网ip,所以使用一个阿里云服务器B作为桥梁。其中:

  • 1.A可以通过公网ip:36.36.108.8访问B服务器,但B服务器不能访问A服务器。
  • 2.工作电脑C能够访问B服务器,但无法访问A服务器。
  • 3.要求C能够通过ssh登录A服务器,并通过端口转发访问A上的HTTP应用。

二、配置方案

1.修改B服务器的sshd设置

#vi /etc/ssh/shhd_config

把GatewayPorts打开(去掉前面的#号注释):

GatewayPorts yes

存盘后退出,并重新启动sshd

#service sshd restart
2.在A主机上设置到B主机的SSH反向连接,映射到B服务器的6766端口。
#autossh -p 22 -M 6777 -NfR '*:6766:127.0.0.1:22' root@36.36.108.8

为保证开机启动,可以把这行命令写入/etc/rc.d/rc.local文件。

说明:使用autossh是为了防止ssh通道超时中断。autossh可以通过如下命令安装:
#yum install autossh -y 
3.现在则在B服务器上可以通过6766端口登录到内网A主机上。
#ssh -p 6766 root@36.36.108.8
4.C客户端到A主机的直接访问

在C主机上使用SecureCRT建立一个连接session

这里写图片描述

保存后点击连接,输入正确口令后登录到A主机上:
这里写图片描述

至此,对远程NAT后的对A主机的操作包括用文件传输等就可以如本地局域网操作一样方便。

三.更方便的端口转发功能

除了ssh登录,在A上的应用,如SVN、mysql数据库和HTTP服务,通过端口转发,都可以在C上进行访问,以http为例,在刚才建立的那个36.36.108.8-52连接上,点击右键,点击Preperties,点击左侧功能树Port Forwarding,出现如下窗口
这里写图片描述

点击Add,出现如下窗口:

这里写图片描述

上面设置的含义为,在已建立的ssh连接上,增加一个ssh隧道,将对A主机的9090端口的http请求映射到C主机(本地)的127.0.0.1的9292端口上,在IE窗口键入:http://127.0.0.1:9090/home?zkPath=/rtrc/static/jdbc

则出现如下画面:

这里写图片描述

显示了远程A服务器的HTTP服务页面。

注:增加端口转发隧道的连接要一直保持,才能访问A主机的页面。其他如git、svn等的端口转发设置类似。

阅读更多
换一批

没有更多推荐了,返回首页