需求
个人需求是有一台连接局域网的电脑B,该电脑B可以访问局域网内的其他服务器,且可以访问公网,本人在另一个局域网内有一台电脑A,想要直接远程桌面访问B,通过B操作局域网内的其他服务器。经过调研发现通过“远程桌面+内网穿透”可以实现该功能需求。
实现步骤
准备工作
- 公网服务器,用自己的服务器感觉更加安全,我用的腾讯云的轻量服务器
- 远程桌面工具
- 穿透工具
远程桌面
首先确保windows可以使用远程桌面的功能,一般来说,家庭版不支持远程桌面的功能,但是专业版支持。在设置的系统信息里可以查看自己的属性。
如果是专业版,可以直接支持远程桌面,那么这一步可以跳过。
如果是家庭版,不直接支持远程桌面,解决方案是1.去淘宝花10元升级自己的密钥 2.采用安装RDPWrap 套件为家庭版windows赋予远程桌面访问的功能。
这边可以直接参考知乎教程 家庭版Windows11开启远程桌面被控 https://zhuanlan.zhihu.com/p/600706130
需要重点关注的是因为系统更新等原因,在安装过程中如果出现图示的问题
那么寻找和自己系统版本匹配的 rdpwrap.ini 文件,在 github issues页面 https://github.com/stascorp/rdpwrap/issues上面查找,找到与自己系统匹配的版本。
- 首先停止服务
# 停止服务
net stop termservice
- 然后复制替换配置文件脚本
替换C:\Program Files\RDP Wrapper中的rdpwrap.ini
- 然后重启服务
# 启动服务
net start termservice
成功后的状态应该是
至此,你的家庭版windows电脑可以支持在局域网内开启远程桌面直接访问。
内网穿透
内网穿透的工具有很多,但是网上将windows类型云服务器作为公网IP的相对较少,大部分的教程都是演示的linux云服务器作为公网IP进行内网穿透。
本文总结教程,总结了windows服务器内网穿透的主要逻辑流程如下
- windows云服务器开放端口
这边不同厂商的云服务器设置方法类似但是有区别,我采用的是腾讯云的轻量应用服务器,所以是在图示的页面打开(这边大家 厂商+云服务器类型+开放端口可以直接搜索到对应教程)。
为了方便,我是直接开启了所有端口,也可以根据自己真实想要开放的端口开放相应的端口,比如7000端口,8000端口等。
- 配置穿透工具服务端
- 配置穿透工具客户端
这边是直接有教程的,这里放我参考的教程以及我最终采用的配置。
参考教程
1.通过windows server使用frp软件实现内网穿透
2.简单几步实现内网穿透(Windows部署开源frp)
3.windows server 部署frp内网穿透,并添加为服务
4.使用frp配置内网访问(穿透)教程(超详细,简单)
经过测试,最终采用的还是和教程1类似的配置,也就是frp穿透+nssm注册为windows服务。
这边的逻辑是直接直接cmd运行frp的exe就可以实现功能了,但是一般把cmd窗口关闭,就会停止服务。
nssm的功能就是把frp运行exe注册为window的服务,这样就可以后台无感直接运行,方便耐用,还可以开机自启。
下面总结介绍配置流程,按照教程下载资源
- 资源下载
下载frp,下载链接https://github.com/fatedier/frp/releases
下载nssm,下载链接 http://nssm.cc/download
2.配置服务端
(2.1)frps打头的负责服务器,所有修改frps.ini即可
#默认即可
[common]
bind_port = 7000
(2.2)注册服务
搜索cmd,用管理员身份打开,cd 你下载解压的nssm的目录
执行下面的指令
cd "替换为nssm.exe所在的目录,删除引号"
nssm.exe install frp_amd64
这个指令会把frps.exe的执行过程注册为服务frp_amd64
3.配置客户端
(3.1)frpc打头的负责客户端,所以修改frpc.ini即可
frpc.ini 配置:比如我服务器 frps.exe 端口是7000,我希望能够通过远程桌面访问本机(即3389端口),通过配置 local_port = 3389,remote_port = 7001 ,这样就可以通过 服务器IP地址:7001 来访问本机。frpc.ini 配置如下
[common]
server_addr = 服务器IP地址
server_port = 7000
[ssh]
type = tcp
local_ip = 127.0.0.1
local_port = 3389
remote_port = 7001
(2.2)注册服务
搜索cmd,用管理员身份打开,cd 你下载解压的nssm的目录
执行下面的指令
cd "替换为nssm.exe所在的目录,删除引号"
nssm.exe install frp_amd64
这个指令会把frpc.exe的执行过程注册为服务frp_amd64
内网穿透+远程桌面
按照上面的配置完成后,即可实现内网穿透+远程桌面
打开monaxtern,输入如下,上面的配置是公网的ip+7001端口相当于直接局域网内直接访问我的电脑B,用户名是电脑B
点击OK,即可成功通过电脑A,经过公网端口映射到电脑B的3389远程桌面端口,以内网穿透+远程桌面的技术栈访问到电脑B.
更多灵活应用
客户端绑定更多端口
[ssh]这样的名称必须全局唯一,即就算有多个客户端,也只能使用一次,其他的可以用[ssh2]、[ssh3]等;
意思就是说,如果你要配置多个客户端,必须将另外的客户端的[ssh]改为[ssh2]、[ssh3]等,并且remote_port也要变,比如6002,6003等
跳板机功能
在前面功能实现的基础上,可以进行灵活的操作使用,比如,可以其实使用电脑A登录服务器C
(1)准备工作:安装SSH服务
确定windowB安装SSH服务,SSH在window系统上是自带的服务,所以只要在系统设置中安装SSH的服务端和客户端即可
(2)使用windosB进行端口转发
添加端口转发
netsh interface portproxy add v4tov4 listenport=1005 connectport=22 connectaddress=192.168.1.95
如果添加错误可以删除
netsh interface portproxy delete v4tov4 listenport=1005
可以查看目前所有的端口转发
netsh interface portproxy show v4tov4
(3)按照前文步骤将你新添加的端口进行内网穿透,也就是直接在frpc.ini中添加即可,然后重启frpc服务即可
[ssh14(随便写一个就行)]
type = tcp
local_ip = 127.0.0.1
local_port = 1005 (要和前面的对应)
remote_port = 7005(要和服务器开放的端口对应)
(4)最后直接在电脑A上登录你绑定的服务器的IP和端口即可直接访问到服务器C!完结撒花!