• 使用 frp 实现 windows 远程


    前提条件:

    拥有一台公网 ip 的服务器;

    远程控制的 windows 系统为专业版(家庭版的其它方式没有尝试过);

    frp 下载包及使用说明

    1. frp release 包的下载网址:https://github.com/fatedier/frp/releases
    2. 中文使用说明:https://gofrp.org/zh-cn/

    x86_64 架构选择 amd64 即可;

    服务器上配置 frp

    使用 ssh 登录服务器,切换为 root 权限;

    1. # 进入 /opt 目录
    2. cd /opt
    3. # 2023-03-01 最新的版本为:0.54.0
    4. # 下载 frp linux 包,我使用的是 x86_64 的 ubuntu 系统。
    5. # 所以选择的下载命包为:frp_0.54.0_linux_amd64.tar.gz
    6. # 使用 wget 下载,命令如下;下载不成功可以多尝试几次;
    7. wget https://github.com/fatedier/frp/releases/download/v0.54.0/frp_0.54.0_linux_amd64.tar.gz
    8. # 解压文件
    9. tar -xzvf frp_0.54.0_linux_amd64.tar.gz
    10. # 重命名 frp_0.54.0_linux_amd64 为 frp
    11. mv frp_0.54.0_linux_amd64 frp
    12. # 将 frps 移动到系统执行目录
    13. mv frp/frps /usr/bin/frps
    14. # 创建 frps.toml 配置文件,并填写内容如下
    15. mkdir /etc/frp
    16. vi /etc/frp/frps.toml

    frps.toml 文件内容如下

    1. # 客户端需要访问的端口,可以随意修改
    2. bindPort = 6666
    3. # 授权方式
    4. auth.method = "token"
    5. # 授权码,请改成更复杂的
    6. auth.token = "aaaaa"
    7. # dashboard 服务配置,"0.0.0.0" 为本机所有 ip
    8. webServer.addr = "0.0.0.0"
    9. # dashboard 配置的端口,可以随意修改
    10. webServer.port = 6667
    11. # dashboard 配置的用户名和密码,修改成自己的
    12. webServer.user = "bbbbb"
    13. webServer.password = "ccccc"

    在服务器的平台上,将上述端口(6666、6667)开放出来;

    端口开放界面如下图:

    运行 frps 服务;

    1. # 前台运行
    2. frps -c /etc/frp/frps.toml
    3. # 关闭当前服务
    4. Ctrl + c 「快捷键」

    测试 frps 服务

    1. # 打开浏览器输入 服务器ip:dashboard端口
    2. 例:
    3. 139.224.227.14:6667

    输入上面配置的用户名和密码登录;

    出现以下内容界面 frps 配置 ok,如果没有出现建议百度解决;测试成功后,使用 Ctrl + c 将服务退出即可;

    使用 systemd 来使 frps 服务自启动

    参考说明:使用 systemd | frp

    安装 systemd

    1. 安装 systemd

    如果您的 Linux 服务器上尚未安装 systemd,可以使用包管理器如 yum(适用于 CentOS/RHEL)或 apt(适用于 Debian/Ubuntu)来安装它:

    1. # 使用 yum 安装 systemd(CentOS/RHEL)
    2. yum install systemd
    3. # 使用 apt 安装 systemd(Debian/Ubuntu)
    4. apt install systemd

    2. 创建 frps.service 文件

    使用文本编辑器 (如 vim) 在 /etc/systemd/system 目录下创建一个 frps.service 文件,用于配置 frps 服务。

    vi /etc/systemd/system/frps.service

    写入内容

    1. [Unit]
    2. # 服务名称,可自定义
    3. Description = frp server
    4. After = network.target syslog.target
    5. Wants = network.target
    6. [Service]
    7. Type = simple
    8. # 启动frps的命令,需修改为您的frps的安装路径
    9. ExecStart = /path/to/frps -c /path/to/frps.toml
    10. [Install]
    11. WantedBy = multi-user.target

    3. 使用 systemd 命令管理 frps 服务

    1. # 启动frp
    2. systemctl start frps
    3. # 停止frp
    4. systemctl stop frps
    5. # 重启frp
    6. systemctl restart frps
    7. # 查看frp状态
    8. systemctl status frps

    4. 设置 frps 开机自启动

    systemctl enable frps

    开启 windows 系统的远程功能

    win10 系统

    win + i 快捷键;点击系统

    点击用户账户可以知道 windows 远程的用户名;一般为邮箱,密码一般为微软账号密码;

    win11 系统

    win + i 快捷键;点击系统,里面有远程桌面

    点击远程桌面用户可以知道访问权的账户,如下示例:账户为 Tao,我的远程密码为 pin 码;

    临时远程工具

    可以临时使用 todesk、向日葵之类的软件来暂时远程配置电脑;

    在 windows 上配置 frp,使用 stcp 的方式「配置文件方式一」

    两台电脑(控制与被控制的电脑)都需要这样操作;

    在 release 网站中下载合适的包 Releases · fatedier/frp · GitHub

    我下载的是:frp_0.54.0_windows_amd64.zip

    下载过程中浏览器和电脑防火墙会报毒,选择允许在磁盘上即可;

    解压后,防火墙会报毒,然后删文件,选择允许在磁盘上,并还原删除的文件即可;

    在电脑 c 盘根目录建一个 frp 文件夹,并将解压后的文件 frpc.exe 放入该目录;

    1. # 在 frpc.exe 同级目录下,新建一个 start.txt 文件;
    2. # 用记事本或其它软件打开 start.txt,填写内容如下:
    3. @echo off
    4. :home
    5. frpc -c frpc.toml
    6. goto home

    将 start.txt 修改为 start.bat 即可;

    在被控制的电脑上配置 frpc

    在 frpc.exe 同级目录下,新建一个 frpc.toml 文件;

    用记事本或其它软件打开 frpc.toml,填写内容如下:

    1. # 服务器 ip 与端口配置
    2. serverAddr = "139.224.227.14"
    3. serverPort = 6666
    4. # 服务器 token 配置
    5. auth.method = "token"
    6. auth.token = "aaaaa"
    7. ## 配置本地的端口接听,name 对于访问者来说就是 serverName
    8. [[proxies]]
    9. name = "stcp-home"
    10. type = "stcp"
    11. secretKey = "liangtao1996"
    12. # 本地需要访问的 ip 与端口
    13. localIP = "127.0.0.1"
    14. localPort = 3389
    15. ## 配置本地的端口接听结束

    在控制的电脑上配置 frpc

    在 frpc.exe 同级目录下,新建一个 frpc.toml 文件;

    用记事本或其它软件打开 frpc.toml,填写内容如下:

    1. # 服务器 ip 与端口配置
    2. serverAddr = "139.224.227.14"
    3. serverPort = 6666
    4. # 服务器 token 配置
    5. auth.method = "token"
    6. auth.token = "aaaaa"
    7. ## 访问者的配置
    8. [[visitors]]
    9. name = "stcp-vcompany"
    10. type = "stcp"
    11. serverName = "stcp-home"
    12. secretKey = "liangtao1996"
    13. bindAddr = "127.0.0.1"
    14. bindPort = 6000
    15. ## 访问者的配置完毕

    运行 frpc 服务

    在两台电脑上分别双击 start.bat;frpc 服务就会运行;此时不关闭 cmd 窗口;

    在控制的电脑上执行快捷键 win + r

    输入 mstsc 回车

     

    会出现以下界面

    输入 127.0.0.1:6000 回车后,输入被控制电脑的用户名和凭据,即可进行 windows 远程;

    这样就能远程内网的电脑了;

    在 windows 上配置 frp,使用 xtcp 的方式「配置文件方式二」

    xtcp 不一定成功,与 stcp 的配置文件的差别就是将 stcp 修改为 xtcp 即可。

    xtcp 远程的流量不经过云服务器。

    在被控制的电脑上配置 frpc

    frpc.toml 文件修改如下:

    1. # 服务器 ip 与端口配置
    2. serverAddr = "139.224.227.14"
    3. serverPort = 6666
    4. # 服务器 token 配置
    5. auth.method = "token"
    6. auth.token = "aaaaa"
    7. ## 配置本地的端口接听,name 对于访问者来说就是 serverName
    8. [[proxies]]
    9. name = "xtcp-home"
    10. type = "xtcp"
    11. secretKey = "liangtao1996"
    12. # 本地需要访问的 ip 与端口
    13. localIP = "127.0.0.1"
    14. localPort = 3389
    15. ## 配置本地的端口接听结束

    在控制的电脑上配置 frpc

    frpc.toml 文件修改如下:

    1. # 服务器 ip 与端口配置
    2. serverAddr = "139.224.227.14"
    3. serverPort = 6666
    4. # 服务器 token 配置
    5. auth.method = "token"
    6. auth.token = "aaaaa"
    7. ## 访问者的配置
    8. [[visitors]]
    9. name = "xtcp-vcompany"
    10. type = "xtcp"
    11. serverName = "xtcp-home"
    12. secretKey = "liangtao1996"
    13. bindAddr = "127.0.0.1"
    14. bindPort = 6000
    15. ## 访问者的配置完毕

    在 windows 上配置 frp,使用 xtcp 与 stcp 的方式「配置文件方式三」

    在官方的手册上给出了 xtcp 不行的时候转为 stcp 方式的配置;

    参考链接:XTCP | frp

    控制与被控制的电脑完全可以配置调转来实现反控制,所以修改如下,可以两台电脑相互控制。

    在被控制的电脑上配置 frpc

    frpc.toml 文件修改如下:

    1. # 服务器 ip 与端口配置
    2. serverAddr = "139.224.227.14"
    3. serverPort = 6666
    4. # 服务器 token 配置
    5. auth.method = "token"
    6. auth.token = "aaaaa"
    7. # 先试用 xtcp 打洞,失败后尝试使用 stcp
    8. [[visitors]]
    9. name = "stcp-vhome"
    10. type = "stcp"
    11. serverName = "stcp-company"
    12. secretKey = "liangtao1996"
    13. bindPort = -1
    14. [[visitors]]
    15. name = "xtcp-vhome"
    16. type = "xtcp"
    17. serverName = "xtcp-company"
    18. secretKey = "liangtao1996"
    19. bindAddr = "127.0.0.1"
    20. bindPort = 6000
    21. fallbackTo = "stcp-vhome"
    22. fallbackTimeoutMs = 200
    23. # stcp、xtcp 客户端配置完毕
    24. # 配置本地的端口接听
    25. [[proxies]]
    26. name = "xtcp-home"
    27. type = "xtcp"
    28. secretKey = "liangtao1996"
    29. localIP = "127.0.0.1"
    30. localPort = 3389
    31. [[proxies]]
    32. name = "stcp-home"
    33. type = "stcp"
    34. secretKey = "liangtao1996"
    35. localIP = "127.0.0.1"
    36. localPort = 3389
    37. # 配置本地的端口接听结束

    在控制的电脑上配置 frpc

    frpc.toml 文件修改如下:

    1. # 服务器 ip 与端口配置
    2. serverAddr = "139.224.227.14"
    3. serverPort = 6666
    4. # 服务器 token 配置
    5. auth.method = "token"
    6. auth.token = "aaaaa"
    7. # 先试用 xtcp 打洞,失败后尝试使用 stcp
    8. [[visitors]]
    9. name = "stcp-vcompany"
    10. type = "stcp"
    11. serverName = "stcp-home"
    12. secretKey = "liangtao1996"
    13. bindPort = -1
    14. [[visitors]]
    15. name = "xtcp-vcompany"
    16. type = "xtcp"
    17. serverName = "xtcp-home"
    18. secretKey = "liangtao1996"
    19. bindAddr = "127.0.0.1"
    20. bindPort = 6000
    21. fallbackTo = "stcp-vcompany"
    22. fallbackTimeoutMs = 200
    23. # stcp、xtcp 客户端配置完毕
    24. # 配置本地的端口接听
    25. [[proxies]]
    26. name = "xtcp-company"
    27. type = "xtcp"
    28. secretKey = "liangtao1996"
    29. localIP = "127.0.0.1"
    30. localPort = 3389
    31. [[proxies]]
    32. name = "stcp-company"
    33. type = "stcp"
    34. secretKey = "liangtao1996"
    35. localIP = "127.0.0.1"
    36. localPort = 3389
    37. # 配置本地的端口接听结束

    在 windows 上配置 frpc 自启动

    建议将 frpc.exe 添加到防火墙的忽略文件中

     点击「病毒和威胁防护」=>「管理设置」

    点击「添加或删除排除项」=> 「添加排除项」

    设置自启动

    过程如下:

    1. 1. win 键,输入 任务计划程序
    2. 2. 点击 操作 => 创建任务
    3. 3. 名称填 frpc
    4. 选择 不管用户是否登录都有运行(W)
    5. 勾选 不存储密码(P)。该任务只有访问本地计算机资源的权限。
    6. 勾选 使用最高权限运行(I)
    7. 勾选 隐藏(E) 配置(C):Windows 10
    8. 4. 点击 触发器
    9. 点击 新建(N)
    10. 开始任务(G):启动时
    11. 勾选延迟任务时间(K):30秒
    12. 点击 确定
    13. 5. 点击 操作
    14. 点击 新建(N)
    15. 程序或脚本(P):
    16. 填写或选择路径为:C:\frp\start.bat
    17. 起始于(可选)(T):填写目录为 C:\frp
    18. 6. 点击 条件
    19. 勾选 只有在计算机使用交流电源时才启动此任务(P)
    20. 勾选 如果计算机改用电池电源,则停止(B)
    21. 勾选 只有在以下网络连接可用时才启动(Y)
    22. 任何连接
    23. 点击 确定

    设置好后,重启电脑,即可在任务管理器中看到 frpc 正在运行中;

    frps.toml 以及 frpc.toml 参考

    1. # frpc.toml 参考
    2. https://github.com/fatedier/frp/blob/dev/conf/frpc_full_example.toml
    3. # frps.toml 参考
    4. https://github.com/fatedier/frp/blob/dev/conf/frps_full_example.toml

  • 相关阅读:
    【JDK 8-函数式编程】4.3 Consumer
    自动控制原理2.2---控制系统的复数域数学模型
    ROS 学习应用篇(六)参数的使用与编程
    SWT/Jface(1): 表格的创建和渲染
    Java-多线程-ThreadPoolExecutor
    Python实现 Leecodet
    java并发编程 ConcurrentLinkedQueue详解
    HTML学生个人网站作业设计:(宠物官网8页)——bootstarp响应式含有轮播图,响应式页面
    如何用 DDD 给 DDD 建模,破解 DDD 的魔法?
    tars 常用类用法总结一
  • 原文地址:https://blog.csdn.net/liangtao_1996/article/details/136418619