利用SSH端口转发实现远程访问内网主机远程桌面(一) 建立SSH转发

近期家里更换了移动的宽带,拨号后拿到的是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端口已经监听。

[[email protected] ~]# netstat -aon|grep 10000
tcp        0      0 0.0.0.0:10000           0.0.0.0:*               LISTEN      off (0.00/0/0)

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

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

原文地址:https://www.cnblogs.com/lunarflyer/p/11408721.html

时间: 2024-10-07 06:47:18

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

利用vps实现访问公司内网windows远程桌面

服务端:vps客户端:windows主机 vps安装.配置.后台运行frp server. 访问https://github.com/fatedier/frp/releases 获取vps系统对应的frp程序包. 连接vps,下载对应的程序包. ~]# wget https://github.com/fatedier/frp/releases/download/v0.20.0/frp_0.20.0_linux_amd64.tar.gz 配置frps.ini, 表示frp server端配置文件.

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

一.   问题描述 通过外网来访问内网的服务 二.   环境要求 需要有一台能够外网访问的机器做端口映射,通过数据包转发来实现外部访问阿里云的内网服务 三.   操作方法 做端口映射的方案有很多,Linux下的ssh tunnel和windows下的portmap等等,这里分享一个更稳定和简单的小工具rinetd 四.   下载安装 $ wget http://www.boutell.com/rinetd/http/rinetd.tar.gz $ tar -xvf rinetd.tar.gz $

SSH反向通道暴露内网主机80端口——作为Nginx的upstream后端

背景 微信开发的时候,需要提供一个已经备案的域名才能调用api.这里假设我的域名是domain.com,我把weixin.domain.com解释到一个公网IP.我的项目就部署到weixin.domain.com上面,微信接入的URL就是http://weixin.domain.com/gateway.php.现在有个问题,我的项目有一些bug,而又不是肉眼能看出来的,我需要debug.但是微信发送给公众账号的消息是发送到http://weixin.domain.com/gateway.php,

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

可以通过端口映射的方式,来通过具有公网的云服务器 ECS 访问用户名下其它未购买公网带宽的内网 ECS 上的服务.端口映射的方案有很多,比如 Linux 下的 SSH Tunnel.rinetd,Windows 下的 portmap 等,本文简要介绍 rinetd,和 ssh tunnel 的配置方法. 说明:本文相关配置和说明仅用于示例和操作指引,阿里云不对相关操作结果及由此产生的问题负责. rinetd 配置方法 如果是 Ubuntu 系统,可以直接使用如下指令安装: apt-get ins

iptables 端口转发 实现访问内网的httpd服务

上篇文章写到通过dhcp实现客户机上网功能,由于公网地址只有一个,我想把内部服务发布到外网就需要通过 "端口转发" 来实现 1.公网服务器: eth0:公网IP eth1:内网IP - 192.168.1.1 2.HTTPD服务器: eth0:内网IP -192.168.1.100 3.实现方法: 通过访问公网IP的8080端口来实现到内网MYSQL服务器的3306端口的访问 4.在公网服务器上: iptables -t nat -A PREROUTING -p tcp --dport

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

# 安装rinetd wget http://www.boutell.com/rinetd/http/rinetd.tar.gz&&tar -xvf rinetd.tar.gz&&cd rinetd sed -i 's/65536/65535/g' rinetd.c (修改端口范围) mkdir /usr/man&&make&&make install 说明:IP的端口是双字节,也就是256*256-1, 256*256对计算机来说就是0,因

完美实现远程访问内网的QNAP NAS - 花生棒的应用

由于我们所用的网络比较复杂,分为:电信网络.长城宽带网络.移动(原铁通)网络等等,通常用这些网络连接只用于上网浏览.QQ聊天等应用我们不会感觉到有什么不便之处,管他什么网络,那个便宜就用那个,能打开网页就行了,这是大多数人的想法.但是对于一些要求比较高的用户(或者说有特殊应用的地方,如:NAS用户.远程监控.居于WEB的远程管理等)就不同了,首先要求网络连接不仅有下行速度,还要有上行速度,最重要的一点是要有一个公网IP地址,不管是动态的还是静态的,不然远程用户是没办法连接到指定的主机的.电信宽带

AUTOSSH设置ssh隧道,实现反向代理访问内网主机

内网主机上配置: autossh -M 5678 -CNR 1234:localhost:22 [email protected]123.207.121.121 可以实现将访问主机123.207.121.121的1234端口的数据,通过隧道转发到内网主机的22端口. 外网主机上配置: /etc/ssh/sshd_config 加入 GatewayPorts yes sudo service sshd restart 在外网主机上测试: ssh [email protected] -p 1234

CentOS7利用DNS和Nginx代理做内网域名解析

1,为了将生产环境和开发区分开,方便开发,将利用DNS和Nginx代理做内网域名解析. 环境要求: 服务器:CentOS7 64位  IP:192.168.1.49 DNS Nginx1.1 客户端:CentOS7 64位 IP:192.168.1.45 Gitlab 2.1,安装DNS服务 [[email protected] ~]# yum install bind bind-bind-libs 2.2,修改/etc/named.conf配置文件 [[email protected] ~]#