前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >玩转CVM之SSH反向代理

玩转CVM之SSH反向代理

原创
作者头像
苏欣
发布2019-07-18 17:48:16
4.6K0
发布2019-07-18 17:48:16
举报

场景需求

大部分公司内部测试服务器是放在公司内网,一般来说,由于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等端口。

在任意一台电脑 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的公网地址以及端口

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

Tunnels配置介绍

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

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

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

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

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 场景需求
  • 场景介绍
  • 本地转发和动态转发
  • 远程内网Windows服务器
相关产品与服务
云服务器
云服务器(Cloud Virtual Machine,CVM)提供安全可靠的弹性计算服务。 您可以实时扩展或缩减计算资源,适应变化的业务需求,并只需按实际使用的资源计费。使用 CVM 可以极大降低您的软硬件采购成本,简化 IT 运维工作。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档