专栏首页johnnyxsu技术交流分享玩转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等端口。

在任意一台电脑 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,需要借助第三台服务器做内网的转发。

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

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

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 玩转CVM之测试外网带宽

    在云上的环境中,一般CVM都是通过多线BGP接入网络,用户在实际使用的过程中,会遇到外网带宽不符合预期的情况。正常情况来说只要终端运营商是国内过着国外主流的运营...

    苏欣
  • 云数据库MySQL CPU飙升排查流程

    在日常使用MySQL的过程中,会遇到 CPU 使用率过高甚至达到 100% 的情况。CPU飙升会导致数据库无法连接,事务无法提交等一系列问题。本文基于日常问题处...

    苏欣
  • 玩转CVM之tw_reuse和tw_recycle 罪与罚

    1.CVM ping测试正常,但使用TCP连接,偶尔出现超时或延时较大,而此时网络并没有发生抖动。

    苏欣
  • SSH高级功能 - 本地端口转发

    MySQL连接,连接传输的是明文数据,容易被窃听,特别如果连接需要经过公网的情况下。 不过我们可以借助SSH构建的本地端口转发(又称SSH隧道),实现加密传输...

    十毛
  • 挖了一条网络隧道,差点被公司激活

    你是否常常遇到这些个麻烦,因为公司安全策略的问题,每次要通过跳板机而不能直接连开发环境,使用上面已经搭建好的数据库服务。为了方便发布,自己电脑上的服务别人,不能...

    机智的程序员小熊
  • ssh技巧之socks代理

    在上一篇文章 ssh技巧之端口转发 中我们讨论了两种端口转发策略,分别是 local port forwarding 和 remote port forward...

    wangyuntao
  • SSH端口转发

    ssh 会自动加密和解密所有的ssh客户端与服务端之间的网络数据。但是ssh 还提供了一个端口转发的功能。转发是一种与其他网络应用程序交互的方式,它能将其他TC...

    smallwormer
  • 交换机三种端口模式Access、Hybrid和Trunk

    Trunk类型端口:可以允许多个VLAN通过,可以接收和发送多个VLAN 报文,一般用于交换机与交换机相关的接口。

    用户5807183
  • 排序之希尔排序(shell sort)

    本篇博客是在伍迷兄的博客基础上进行的,其博客地址点击就可以进去,里面好博客很多,我的排序算法都来自于此;一些数据结构方面的概念我就不多阐述了,伍迷兄的博客中都...

  • 如何将Twitter的内容导入到SAP CRM和C4C

    Twitter的内容导入SAP CRM Interaction Center呼叫中心

    Jerry Wang

扫码关注云+社区

领取腾讯云代金券