利用frp在外网远程访问内网Windows电脑

      So, 大学了, 一个新的开始。

      因为笔记本电脑储存空间小, 扩展性也不大, 只能加一个sata hdd, 而nvme的固态… 高攀不起, 于是在朋友推荐下, Never组装了一台台式机, 装入 PVE 虚拟机系统, 里面装了一个黑群晖和一个Windows. 黑群晖很好理解, 就是储存用嘛, 顺便挂个种子; 那么问题来了, 为什么要装Windows呢?

      这是因为呀, Never的笔电… 有点沉, 来回上课携带很不方便, 凑巧手中还有一台iPad, 便想利用远程连接的方式, 把她“变成”一台电脑; 这个时候有小伙伴就要说了: 市面上有好多远程软件呀, 例如 TV 等, 不也可以远程吗! 话虽如此, 但是办公就是办公, 娱乐就是娱乐, 二者不可得兼嘛, 当然要有自己专属的机器咯, 况且那些公共远程软件速度不能保证, 而且也不纯净, 接下来要讲的就是用微软自家的远程桌面连接进行远程。

      需要准备的东西: 一台有公网ip的vps或者电脑; 被远程的 Windows 电脑; 操纵端

      首先, 重中之重, 一台有公网ip的vps或者电脑。因为涉及到广域网连接嘛, 所以必须要有一台有公网ip的机子。这里 Never 以搭载 Ubuntu 20.04 的 vps (基于amd64) 进行演示:

      还是首先, 先ssh上vps, 输入以下命令来下载我们今天的主角: frp:

      wget https://github.com/fatedier/frp/releases/download/v0.38.0/frp_0.38.0_linux_amd64.tar.gz

      (这个地址是下载目前撰写文章时的最新release, 查看release的话点这儿)

      等待进度条走完, 就说明下载完成.

      之后, 我们解压至一个新文件夹(就叫她frp吧)

      mkdir frp
      tar -zxvf frp_0.38.0_linux_amd64.tar.gz -C frp

      这里注意一下, 如果你不是按照上述链接下载的frp, 或者文件名发生了更改, 请把第二行中的文件名替换成你下载的文件名, 否则会报错.

      在这里, 这台vps是用来做服务端的, 所以我们不需要任何包含有“frpc”的文件, 可以删除, 也可以保留, 这里并无大碍.

      现在就到了配置阶段了(也是最苦的一段), 首先进入到解压的目录, 也就是frp:

      cd frp

      然后打开配置文档(Never 习惯用 nano 来编辑, vim也可以):

      nano frps.ini

      里面应该有如下内容, 我们需要修改:

      [common]
      bind_port = 7000  #客户端所连接到服务器端的端口, 可随意修改, 但客户端须保持一致
      #token = xxxxx   可选, 加入可以安全些(与客户端连接时有个认证)
      #vhost_http_port = 8080  web服务所映射的端口, 可以随意修改, 但是不能与上述端口重复, 非必须添加, 若只需要远程, 添加上面一条即可
      #vhost_https_port = 8443 https的web服务所映射的端口,可以随意修改, 但是不能与上述端口重复, 非必须添加

      保存, 退出, 然后输入下面命令开始frp服务:

      ./frps -c ./frps.ini

      接下来配置被远程的Windows机器:

      打开这个链接, 下载 frp_0.38.0_windows_amd64.zip.

      解压至C:\frp 文件夹结构应如下图:

      怎么了? 我这儿少了几个文件吗? 没关系没关系, 我们只需要用到 frpc 的文件.

      用记事本打开“frpc.ini”, 对照下面进行修改:

      [common]
      server_addr = 127.0.0.1  #你的vps的公网ip
      server_port = 7000  #vps配置中的“bind port”的端口
      #token = xxxxxx    可选, 加入可以安全些(与服务器连接时有个认证)
      
      [rdp]
      type = tcp
      local_ip = 127.0.0.1   #不修改
      local_port = 3389    #Windows默认远程端口, 不要修改
      remote_port = 6000   #这里port可以随意修改, 但是不能重复

      保存, 退出. 之后打开 Windows 设置, 选择“系统”—“远程桌面”—打开第一个选项(启用远程桌面):

      注意: 下面两个小选项依照个人喜好进行调整.

      现在我们关闭设置, 以管理员模式打开cmd (也可以右键开始, 选择“Windows PowerShell (管理员)”), 输入以下命令:

      cd C:\frp
      ./frpc -c ./frpc.ini

      现在应该会有提示连接到服务器了, 且服务器端也会有提示连接上。接下来我们需要远程连接的工具—微软自家出的“Microsoft 远程桌面”,应该可以在应用商城里搜到, 安装之后我们点击右上角的加号, 添加新电脑, 具体配置请看下图:

      这里我再说一下电脑ip地址, 这里的电脑ip地址是需要填写你公网vps的地址+映射的端口, 因为在公网当中只能连接到有公网ip的机器, frp的作用就是将这个有公网ip的机器变成一座沟通被远程电脑与你的一座桥梁, 跨过内网那一条江! 映射的端口就是要填写被远程的Windows机器中frpc.ini配置文档中的”remote port”的数值, 比如公网ip是132.193.2.312, frpc.ini中的remote port是2333, 那么远程电脑的ip地址就是132.193.2.312:2333。

      填写完成后, 点击右上角的储存, 之后点击页面中的你刚添加的电脑, 不出意料的话应该会提示填写用户名和密码了(如果那台电脑上需要有此验证), 填写完成后, 应该就可以连接到了:

      上面有 RD Client 的控制栏

      接下来就可以尽情享受咯!

      速度快慢取决于公网vps的网络状况。如果要结束远程的话, 点击上方控制栏中间的圆形图标:

      然后点击右下角的“断开所有电脑会话的连接”就可以了.

      在远程时, 电脑的屏幕会自动锁屏, 如果强制在本机登录的话, 远程连接会结束会话, 也就是说不能同时进行工作.

      接下来就是自动化了, 正如前面所说, 要开始这个程序必须要输入一段命令, 就很麻烦; 而且在Linux上, 断开ssh后任务也结束了, 这个时候对于我们有公网ip的Ubuntu的机器, 就要拿出 screen 了!

      在开始之前, 如果主界面还在frp的日志输出界面的话, 按 ctrl+c 结束进程.

      第一步, 安装 screen:

      sudo apt-get install screen -y

      第二步, 新建 screen 窗口:

      screen -S xxx  #xxx可以自定义, 这个是会话名称

      第三步, 重新开启 frp

      cd frp
      ./frps -c ./frps.ini

      看到有日志输出后就可以关闭ssh啦!

      接下来我们配置基于 Windows 的自动化:

      首先新建一个文本文档, 在里面输入以下内容:

      Set ws = CreateObject("Wscript.Shell") 
      ws.run "cmd /c c:\frp\frpc.exe -c c:\frp\frpc.ini",vbhide

      保存, 更改以下文件名和后缀, 后缀改成 .vbs ,文件名最好为英文, 然后拖到开机自启的文件夹中, 这样每次开机之后只需要登录一次就可以无cmd框在后台自动运行了.

      本文章未经允许不可转载.

      Digiprove sealCopyright secured by Digiprove © 2021-2022 Never.