玩转CVM:SSH反向代理

如何利用CVM进行SSH反向代理?本文将会告诉你答案

场景需求

大部分公司内部测试服务器是放在公司内网,一般来说,由于NAT的原因,这种访问是单向的。例如,我们借助电脑,手机登设备,可以访问百度的服务器,但是百度服务器是没法主动访问我们终端。由于只能通过公司内网访问,员工回家之后就无法访问了,安全是安全了,但是万一有个需求需要从公司外部访问呢?

对路由器比较熟悉的童鞋会说:“在路由器上作端口映射转发即可”。这个方案确实可以,但是有2个问题,首先,你得能控制路由器并且可以在上面做设置。其次,一般公司的宽带都没有固定ip,这意味着这个公网ip每隔10-20小时就会变动。

场景介绍

1.公司内部有一台服务器A,ip地址为: 192.168.2.112,只有公司内部同一网段的设备才能访问

2.在腾讯云上有一台公网IP的CVM,ip地址为: 119.28.143.101,所有人都可以利用密钥登陆。

此时,如果外部的人员需要访问服务器A,普通情况下由于公司网络出口使用NAT,IT也不会开放端口转发的权限,是无法去访问的。但是利用SSH端口转发,就能轻松实现外部人员访问内部服务器的操作,具体命令如下:

ssh -fNR 222:localhost:22 root@119.28.143.101

还有一点非常重要,你需要在119.28.143.101这台服务器开启ssh一个配置(linux系统里面一般是在/etc/ssh/sshd_config文件):

GatewayPorts yes

这段命令的意思是把对CVM的222端口请求转发到服务器A的22端口,这样我们ssh -p 222 119.28.143.101就相当于访问 ssh 192.168.2.112 22端口, 当然你还可以转发其他端口,比如常见的3389, 22, 21等端口。

玩转CVM:SSH反向代理

在任意一台电脑 telnet 119.28.143.101 22端口

本地转发和动态转发

上面所说的这种方式又被称为SSH端口远程转发,与之对应的还有一种方式称为本地转发,其命令如下:

ssh -fNL 8080:119.28.143.101:80 root@192.168.2.112

-f 要求 在执行命令前退至后台. 它用于当 准备询问口令或密语, 但是用户希望它在后台进行. 该选项隐含了 -n 选项. 在远端机器上启动 X11 程序的推荐手法就是类似于 ssh -f host xterm 的命令.

-N 不执行远程命令. 用于转发端口. (仅限协议第二版)

-L port:host:hostport 将本地机(客户机)的某个端口转发到远端指定机器的指定端口. 工作原理是这样的, 本地机器上分配了一个 socket 侦听 port 端口, 一旦这个端口上有了连接, 该连接就经过安全通道转发出去, 同时远程主机和 host 的 hostport 端口建立连接. 可以在配置文件中指定端口的转发. 只有 root 才能转发特权端口. IPv6 地址用另一种格式说明: port/host/hostport

上面命令是把对本地8080端口的请求转发到119.28.143.101的80端口上面去,这时候访问 http://127.0.0.1:8080 就相当于访问 http://119.28.143.101:80 。例如,公司有2台服务器,它们之间可以互联,其中有一台服务器可以上网,但是另一台呢被限制无法访问公网,这时候通过这个命令就可以“访问外国网站”了。

还有一种方式叫作动态转发,命令如下:

ssh -D 50000 root@119.28.143.101

这种方式其实就是相当于socks代理,他会把本地的所有请求都转发到远程服务器上面,很实用,如果远程的的服务器在国外的话,就可以实现国外代理访问。

远程内网Windows服务器

上面讲解如何通过SSH端口转发一台只有内网的Linux服务器,下面会介绍如何给一台只有内网,访问外网依靠NAT的Windows机器进行转发。

Windows转发需要借助PuTTY工具,该工具界面简单友好,操作也很方便。详细环境信息如下:

1.Windows内网机器A,IP地址:192.168.2.110,该机器是通过NAT实现访问互联网。

2.在腾讯云有一台具有公网IP的Linux CVM,IP地址:119.29.14.248

在机器A中打开PuTTY,输入CVM公网的IP地址以及对应的端口。

玩转CVM:SSH反向代理

输入CVM的公网地址以及端口

在PuTTY中的Connection-SSH-Auth-Tunnels中配置远程的端口和需要映射的本地IP和端口,点击Add按钮添加到PuTTY配置里。

玩转CVM:SSH反向代理

Tunnels配置介绍

点击open,输入账号密码登录(CVM服务器的账号和密码)

在CVM上查看监听,可以看到已经有8080的监听

玩转CVM:SSH反向代理

CVM上看到已经有8080端口监听

如果需要借助RDP登录Windows服务器,由于Windows无法登陆自己,所以上述方法实现远程登录Windows,需要借助第三台服务器做内网的转发。

本文来自腾讯云计算社区,转载请注明出处:https://computeinit.com/archives/3301

发表评论

登录后才能评论
交流群