【windows10】基于SSH反向隧道公网ip端口实现远程桌面

发布于:2025-04-11 ⋅ 阅读:(37) ⋅ 点赞:(0)

【windows10】基于SSH反向隧道公网ip端口实现远程桌面

1.背景

‌Windows 10远程桌面协议的简称是RDP(Remote Desktop Protocol)‌。
RDP是一种网络协议,允许用户远程访问和操作另一台计算机。
远程桌面功能仅适用于Windows 10专业版和企业版,家庭版无此功能!
目前远程桌面是一款Windows10提供的内置远程工具,未来windows11可能会移除!
远程桌面旨在连接的两台可以ping连接的计算机(同一局域网内,或者通过公网ip端口映射)

博主的操作系统windows10 专业版
如果在同一局域网您是可以ping通对方的windows系统的ip地址,正好对方计算机有远程桌面功能(家庭版没有),并且启用远程桌面。那么您此时通过该IP地址就可以远程对方电脑!
然后您可以通过远程桌面进行文件传输或提供远程技术支持。

特别要注意,需要关注防火墙是否允许远程桌面通过!
在Win10的远程桌面设置中,防火墙的配置是一个关键因素。忽略了防火墙设置,可能导致无法成功建立远程桌面连接。请按照以下步骤进行操作。
步骤1. 在搜索框中输入“允许应用通过Windows防火墙”,然后打开相关设置。
步骤2. 确保“远程桌面”已经被允许通过Windows防火墙。如果没有,请点击右上角的“更改设置”选项,勾选“远程桌面”,然后点击“确定”。
在这里插入图片描述
以上场景相信大家都用的很熟悉!
那么问题来了,两台windows10电脑在各自局域网,都可以上网,如何通过windows10远程工具远程?
这在工作中也是常见的,目前大家比较常见的解决办法是使用第三方远程控制软件:
TeamViewer、AnyDesk、一键远控、rustdesk等。

其实有很多方法,本博主介绍SSH反向隧道实现远程桌面的访问。
SSH反向隧道允许内网设备主动连接到公网服务器,从而绕过防火墙或NAT的限制,建立一条从外网访问内网的通道。
通过ssh的实现如下:
通过SSH的-R参数,可以将内网机器的端口转发到公网服务器的某个端口,这样外部的请求可以通过公网服务器的端口访问到内网服务。例如将内网服务器A的22端口转发到公网服务器B的8888端口,然后通过B的端口访问A。即反向隧道可以实现远程访问。
普通的SSH连接可能会因为超时断开。autossh能够自动重新连接,确保隧道持久。为了更好的效果您可以安装autossh,并指定监控端口来检测连接状态,这有助于维持稳定性。

2.SSH反向隧道

SSH(Secure Shell)可以实现两台不同局域网中的Windows 10电脑进行远程连接!
SSH反向隧道可以实现从公网访问内网设备(如家庭或公司内网的计算机),尤其适用于设备位于防火墙或NAT后的场景。以下是具体实现原理、步骤及注意事项:

2.1 SSH反向隧道的核心原理
SSH反向隧道通过让内网设备主动连接到公网服务器(如云主机),建立一条反向通道,将内网服务的端口映射到公网服务器的指定端口,从而实现外网用户通过公网服务器访问内网服务。其核心命令为 ssh -R,具体流程如下:
第1,内网设备A主动连接公网服务器B,建立反向隧道。
第2,公网服务器B监听指定端口,并将流量转发到内网设备A的本地服务端口(如SSH的22端口、远程桌面的3389端口)。
第3,外网用户通过访问公网服务器B的映射端口,间接访问内网设备A的服务。

2.2 实现远程访问的步骤

第1. 公网服务器B的配置
A. 修改SSH配置:

在B的/etc/ssh/sshd_config中启用GatewayPorts yes
即允许外部访问转发端口

如果修改了配置,重启SSH服务:
sudo systemctl restart ssh

检查SSH服务状态:
sudo systemctl status ssh
.如果返回类似“active (running)”,说明SSH服务已经运行。
.如果返回“inactive”或“not found”,则需要安装或启用。

B.开放防火墙端口:确保公网服务器的防火墙或安全组开放映射端口(如10010或者53700)。

第2. 内网设备A的操作
在A上执行命令,建立反向隧道:

以转发SSH服务为例:
ssh -fCNR *:远程端口:localhost:本地端口 用户名@公网服务器IP  
# 示例:将A的22端口映射到B的12345端口
ssh -fCNR 12345:localhost:22 root@B_IP
ssh -R 9999:localhost:3389 用户名@203.0.113.10  # cmd终端关闭就停止建立反向隧道

参数说明:
-R:反向隧道;
-C:压缩数据,减少传输流量
-f:后台运行;
-N:不执行远程命令

以autossh为例,使用autossh保持隧道稳定:
autossh -M 监控端口 -fCNR 远程端口:localhost:本地端口 用户名@B_IP  
# 示例:监控端口5678,映射SSH服务
autossh -M 5678 -fCNR 12345:localhost:22 root@B_IP

第3. 外网用户访问内网服务
通过SSH或浏览器访问公网服务器B的映射端口:
对于linux用户连接到内网设备A的SSH服务:ssh -p 12345 内网用户名@B_IP
对于适用于Web服务,通过浏览器访问如http://B_IP:映射端口
本博客是远程桌面,可以通过远程桌面直接输入B_IP:映射端口 登录内网,然后输入用户名和密码进行远程访问。

3.远程连接电脑

远程电脑启用远程桌面并允许防火墙通过远程桌面后,您便可以进行远程连接操作了。
步骤1. 按下“Win + R”组合键,在弹出的运行窗口中输入“mstsc”命令,以启动远程桌面连接工具。
步骤2. 在弹出的远程桌面连接窗口中,输入目标计算机的 IP 地址,然后点击“连接”按钮。
处于隐私,123.181.16.232:53700为示例ip:port
在这里插入图片描述
步骤3. 输入目标计算机的用户名和密码,即可进行远程控制。


网站公告

今日签到

点亮在社区的每一天
去签到