欢迎您访问365答案网,请分享给你的朋友!
生活常识 学习资料

使用Frp和Docker通过远程桌面和SSH来远程控制Windows(反向代理)

时间:2023-07-12

最新博客文章链接


大体思路

使用 Docker 容器,在云服务器上部署 Frps 容器来中转流量,在被控制的 Windows 上部署 Frpc 容器来暴露内网的服务,在主控制端的 Windows 上直接运行 Frpc,来连接要访问的服务到本地。

主控制端中转服务器被控制端Frp 类型FrpcFrpsFrpcSSH 端口600022远程桌面端口33903389转发 IP127.0.0.1(本地 IP)192.168.1.7(容器外部宿主,局域网 IP)用到的东西

反向代理

反向代理在电脑网络中是代理服务器的一种。服务器根据客户端的请求,从其关系的一组或多组后端服务器(如Web服务器)上获取资源,然后再将这些资源返回给客户端,客户端只会得知反向代理的IP地址,而不知道在代理服务器后面的服务器集群的存在。

Frp:

frp 采用 C/S 模式,将服务端部署在具有公网 IP 的机器上,客户端部署在内网或防火墙内的机器上,通过访问暴露在服务器上的端口,反向代理到处于内网的服务。 在此基础上,frp 支持 TCP, UDP, HTTP, HTTPS 等多种协议,提供了加密、压缩,身份认证,代理限速,负载均衡等众多能力。

Frp 配置文件

主要是参考官方教程,根据需要增删内容

先是去官方的 Github 仓库下载相应版本的 Frp 软件,然后解压

服务器端配置文件

记得在云服务器后台,放行相应的端口

# frps.ini# 固定段落,用于配置通用参数[common]# 服务器监听端口bind_port = 7000bind_udp_port = 7000token = 123456# 服务器 dashboarddashboard_port = 7500dashboard_user = admindashboard_pwd = admin# 每个客户端的连接数量上限max_pool_count = 5# kcp 绑定的是 udp 端口,可以和 bind_port 一样(kcp 可能会连接不上)# kcp_bind_port = 7000

客户端(被控制端)配置文件

# frpc.ini(被控制端)[common]server_addr = x.x.x.xserver_port = 7000token = 123456# 客户端指定,预创建的连接数量pool_count = 1# server_port 指定为 frps 的 kcp_bind_port# server_port = 7000# 使用kcp协议(kcp 可能会连接不上)# protocol = kcpuse_encryption = trueuse_compression = true# 代理名称(必须唯一)[secure_ssh]# 协议类型# stcp 或 sudp 协议可以不在服务器暴露端口,# 所以可以省略 remote_port 选项type = stcp# 安全角色(用于stcp、sudp)(只能填 server 或 visitor)role = server# 安全角色密钥sk = abcdefg# 指定远程登陆地址为,被控制主机的局域网 IP 地址#(如果 frpc 没有部署在 docker 上则可使用 127.0.0.1)local_ip = 192.168.1.7local_port = 22# 远程桌面 tcp 端口[remote_tcp]type = stcprole = serversk = abcdefglocal_ip = 192.168.1.7local_port = 3389# 远程桌面 udp 端口[remote_udp]type = sudprole = serversk = abcdefglocal_ip = 192.168.1.7local_port = 3389

客户端(主控制端)配置文件

# frpc.ini(主控制的机器)[common]server_addr = x.x.x.xserver_port = 7000token = 123456# 本地绑定地址bind_addr = 127.0.0.1use_encryption = trueuse_compression = true[secure_ssh_visitor]type = stcp# 要访问的代理名称server_name = secure_sshsk = abcdefgrole = visitor# 本地绑定端口bind_port = 6000[remote_tcp_visitor]type = stcpserver_name = remote_tcpsk = abcdefgrole = visitorbind_port = 3390# UDP 连接可能会卡顿,估计是容易被运营商 QoS# [remote_udp_visitor]# type = sudp# server_name = remote_udp# sk = abcdefg# role = visitor# bind_port = 3390

其他配置和部署连接

在配置时可以用 docker logs frps 或 docker logs frpc 来查看调试信息

被控制端本地 SSH 设置

微软官方 | 通过 SSH 进行 PowerShell 远程处理

先安装 OpenSSH,最新的 PowerShell 里就内置了 OpenSSH,可以直接去 Windows 商店里下载

将 SSH 默认 shell 改为 powershell.exe

New-ItemProperty -Path "HKLM:SOFTWAREOpenSSH" -Name DefaultShell -Value "C:WindowsSystem32WindowsPowerShellv1.0powershell.exe" -PropertyType String -Force

我没有给电脑设置登录密码,所以要开启免密登陆

把 C:ProgramDatasshsshd_config 中的 PermitEmptyPasswords 选项,取消注释并设置为 PermitEmptyPasswords yes

最后再重启 sshd 服务 Restart-Service sshd

配置 Windows 远程桌面

微软官方 | 如何使用远程桌面

在被控制的电脑上开启远程桌面,然后在主控制端连接

部署 Frp

在服务器端部署 frps 容器,服务器的配置文件我放在了 ~/frp/frps.ini 。

docker run --network host --restart=always -d -v ~/frp/frps.ini:/etc/frp/frps.ini --name frps snowdreamtech/frps

在客户端(被控制端)部署 frpc 容器,被控制端的配置文件我放在了 C:Stand_alonefrpfrpc.ini 。

docker run --network host --restart=always -d -v C:Stand_alonefrpfrpc.ini:/etc/frp/frpc.ini --name frpc snowdreamtech/frpc

连接 Frp

在客户端(主控制端)运行 frpc,主控制端的配置文件我放在了 C:Stand_alonefrpfrpc.ini 。

C:Stand_alonefrpfrpc.exe -c C:Stand_alonefrpfrpc.ini

最后就可以直接访问 SSH(localhost:6000) 和远程桌面(localhost:3389)了

可替代方案:Sakura Frp

如果嫌麻烦,以及不太强调安全的话,可以使用 Sakura Frp

原理和普通的 Frp 一样,不过配置起来更方便。你可以在被控制端直接下载一个 Sakura Frp 官方的启动器,或者用 Frpc 或 Docker 来连接到 Sakura Frp 的服务器。

配置的步骤比较简单,直接看官方的教程就行了。

我是用的 Docker 方式部署,这里我列一下我自己的配置:

节点成都电信隧道类型TCP端口自动生成本地 IP192.168.1.7访问密码xxxxxx加密传输禁用压缩数据启用

被控制端 Docker 的配置

docker run -d --restart=always --name=frpc_sakura natfrp/frpc -f abcdefghijklmnop:2680675,2804403 --remote_control yyyyyy

abcdefghijklmnop :Sakura Frp 账号的总访问密钥

2680675 :远程桌面的隧道 ID

2804403 :SSH 的隧道 ID

yyyyyy :设置在 Sakura Frp 官网网页上远程管理隧道的密码(不是访问密码)

如果被控制端的 Docker 运行正常的话,官网上的隧道颜色,会由灰色变成绿色。之后就可以在官网上对相应的隧道进行授权,一般就授权本地的 IP 地址。完成过后就可以连接 Sakura Frp 官网的代理服务器的域名和相应端口,来进行远程控制了。如果自己有已备案的域名的话,可以用 DNS 的 CNAME 解析,把自己的域名映射到 Sakura Frp 的代理服务器,方便隧道节点的更换。


本文由 Tsanfer’s Blog 发布!

Copyright © 2016-2020 www.365daan.com All Rights Reserved. 365答案网 版权所有 备案号:

部分内容来自互联网,版权归原作者所有,如有冒犯请联系我们,我们将在三个工作时内妥善处理。