近期家里更换了移动的宽带,拨号后拿到的是10开头的内网IP,就不能像之前一样通过路由器的端口映射实现从外网访问主机的远程桌面。这种情况下可以利用一台具有公网IP的服务器充当中转,利用SSH的隧道转发功能将远程桌面请求转发至内网主机。

SSH隧道

SSH 会自动加密和解密所有SSH 客户端与服务端之间的网络数据,除此之外SSH 还能够将其他TCP端口的网络数据通过SSH链接来转发,并且自动提供了相应的加密及解密服务,这一功能也称为“SSH隧道”。SSH隧道分为本地转发、远程转发和动态转发。

本地转发

在客户端本地监听指定端口,该端口接收到的数据将转发至服务端网络的指定IP的指定端口。

远程转发

在服务端监听指定端口,该端口接收到的数据将转发至客户端本地网络的指定IP指定端口。

动态转发

在客户端本地监听指定端口,该端口实际上是一个SOCKS5代理,所有请求通过服务端发出。

环境准备

  1. 具有公网IP的服务器,在这里使用阿里云ECS
  2. Putty

服务器设置

编辑ssh的配置文件,启用GatewayPorts。若GatewayPorts选项未启用,远程转发端口只有服务器能访问,外部主机无法访问。

vi /etc/ssh/sshd_config
在末尾添加一行
GatewayPorts yes # 重启ssh服务
service sshd restart

客户端设置

在客户端上启动Putty,在Session中输入服务器地址。

切换到Connection-SSH-Tunnels,在Source port中输入外网服务器的监听端口,Destination中输入转发的IP地址和端口号,格式为IP地址:端口,转发类型选择远程,点击Add添加到列表中。在这里我们将服务器的10000端口映射到本机的3389端口。

选择open,输入用户名和密码。登陆成功后查看监听端口,发现10000端口已经监听。

[root@iZwz9ds6obifn90aw8j2khZ ~]# netstat -aon|grep
tcp 0.0.0.0: 0.0.0.0:* LISTEN off (0.00//)

这样内网主机和服务器之间的隧道已经建立起来了,通过访问服务器的10000端口即可远程登陆到内网主机。

但是使用这种方法每次都要在受控主机上手动运行Putty输入用户名密码,如遇到断网、系统更新、重启、停电等情况无法自动恢复连接。接下来我们就配置使用SSH证书免密登陆和Autossh实现自动重连。

利用SSH端口转发实现远程访问内网主机远程桌面(一) 建立SSH转发的更多相关文章

  1. windows 之间内网开启远程桌面连接

    win7设置远程桌面1.找到我的电脑\计算机图标,右键"属性"如图2.进入系统和安全设置-选项卡中,找到"远程设置"右上角位置点击打开3.在随后的"系 ...

  2. frp 内网穿透远程桌面(Windows 10)配置

    一.服务端配置 服务端需要公网环境,一般用一台云服务器就行了,我选择的是 Linux 服务器,Windows 服务器也是可以的. 下载 frp: wget https://github.com/fat ...

  3. SSH反向连接让外网也可远程访问内网机器

    最近把树莓派折腾了一番,放在了家里,但是家里是内网,出门在外,不方便直接ssh上来,于是请教了秦兄,指点迷津,发现SSH反向链接可以实现这个功能. 1. ssh反向链接的概念 A主机:外网,ip:11 ...

  4. ssh反向连接内网主机

    holer听别人说也挺好用不过本人没试过:https://github.com/Wisdom-Projects/holer 利用autossh建立稳定隧道,前提双方互加公钥信任. # yum inst ...

  5. 通过rinetd实现端口转发来访问内网的服务

    通过rinetd实现端口转发来访问内网的服务 一.   问题描述 通过外网来访问内网的服务 二.   环境要求 需要有一台能够外网访问的机器做端口映射,通过数据包转发来实现外部访问阿里云的内网服务 三 ...

  6. Linux 通过rinetd端口转发来访问内网服务

    可以通过端口映射的方式,来通过具有公网的云服务器 ECS 访问用户名下其它未购买公网带宽的内网 ECS 上的服务.端口映射的方案有很多,比如 Linux 下的 SSH Tunnel.rinetd,Wi ...

  7. 阿里云ECS linux通过rinetd 端口转发来访问内网服务

    一.场景说明: 可以通过端口映射的方式,来通过具有公网的云服务器 ECS 访问用户名下其它未购买公网带宽的内网 ECS 上的服务.端口映射的方案有很多,比如 Linux 下的 SSH Tunnel.r ...

  8. [原创]利用Browser协议探测内网主机操作系统版本(无需端口无视防火墙)

    利用Browser协议可获取机器IP.MAC.机器名.操作系统.域,如图 浏览 在SMB协议中,计算机为了访问网络资源,就需要了解网络上存在的资源列表(例如在Windows下使用网络邻居查看可以访问的 ...

  9. Linux通过端口转发来访问内网服务(端口转发访问阿里云Redis数据库等服务)

    # 安装rinetd wget http://www.boutell.com/rinetd/http/rinetd.tar.gz&&tar -xvf rinetd.tar.gz& ...

随机推荐

  1. vim /home/yuanyc/.bashrc export LC_ALL=zh_CN.UTF-8

    vim /home/yuanyc/.bashrc export LC_ALL=zh_CN.UTF-8

  2. 小记---idea springboot 报错没有get或者set方法

    给idea 安装一个插件即可

  3. 《VR入门系列教程》之6---VR硬件介绍及DK1

    第二章 VR硬件介绍     本章主要介绍当前比较流行的消费版VR设备,包括VR头显以及应用运行的PC和手机平台.     即使是在这工业高速发展的时代,一些大厂(比如Facebook的Oculus ...

  4. 正则与sed,grep,awk三剑客

    系统登录顺序: /etc/profile /etc/profile.d/a.sh (a.sh自己建的) /root/.bash_profile /root/.bashrc /etc/bashrc /b ...

  5. spring的jdbcTemplate的使用

    转载:http://1358440610-qq-com.iteye.com/blog/1826816 一.首先配置JdbcTemplate: 要使用Jdbctemplate 对象来完成jdbc 操作. ...

  6. sklearn 第二篇:数据预处理

    sklearn.preprocessing包提供了几个常用的转换函数,用于把原始特征向量转换为更适合估计器的表示. 转化器(Transformer)用于对数据的处理,例如标准化.降维以及特征选择等,提 ...

  7. 【MySQL】

    org.springframework.dao.CannotAcquireLockException: PreparedStatementCallback; Lock wait timeout exc ...

  8. centos6.5-7编译安装Ansible详细部署

    一.基础介绍==========================================================================================ansi ...

  9. git指令-未完待更新

    git指令 1. $ git config --global user.name "Your Name" $ git config --global user.email &quo ...

  10. Java——win10配置环境变量

    一.安装JDK 1.下载jdk                                           地址:https://pan.baidu.com/s/1P9CZZoZ0AzZU0c ...