tags: Linux Server Tips Config
写在前面
之前一直是用向日葵或者todesk进行远程访问主机的, 虽然很方便, 却也存在有广告, 需要登录, 延时高等问题.
在此之前也有了解过一些内网穿透+Windows Remote Desktop的策略, 但是当时技术不行, 也没有合适的服务器选择. 这次有了阿里云, 就能大干一场了.
技术栈: Ubuntu/Windows batch file/frp(server&client)
下面看方法, 部分参考1.
安装配置frp(云服务端)
安装
这里我依然选择了/opt
目录, 最后一行删除了客户端(因为这个是在云服务器上的配置, 不需要)
基本配置文件
写入下面的内容:
第二行为服务器开启的端口, 第三行是服务器的前端控制界面(仪表盘)
最后的两行是控制界面的用户名和密码, 这里就默认了.
开启端口
跟之前的配置VNC端口类似, 这里直接copy了, 先在阿里云的控制面板添加:
(需要开启6000
, 7000
, 以及7500
端口)下面仅以7000
为例.
查看端口状态:
netstat
查看服务器是否开启了任务监听对应端口:
这里应该显示如下:
查看防火墙的端口开放情况:
若没有, 需要用下面的方法开启:
最后刷新防火墙:
端口部分就完成了.
配置守护进程与开机启动
然后对守护进程进行配置, 这里参考2.
先在/opt/frp/
目录下新建一个脚本文件, (vi startup_frp.sh
)写入:
上面的命令是后台运行frps
服务.
这里有个小插曲: 关于使用了
nohup
命令之后, 行末尾还要不要加&
(ampersand)我一开始是没有加的, 后来发现不加的话在终端会话消亡之后命令仍在运行, 看到了一篇文章3之后我明白了, 还是要加的. 在
nohup
命令末尾加和不加&
, 其区别在于:
- 加的话: 直接进入后台运行
- 不加的话: 先在登录的终端会话中运行(前台运行), 当会话窗口关闭之后, 由
nohup
命令向内核发送子进程, 然后让执行的前台程序转为后台运行.
然后crontab -e
写入:
重启之后, 就可以看到frp
服务进程在运行了.
被远控的Windows客户端安装与配置
安装
图形界面操作…
配置
编辑frpc.ini
文件:
这里要注意本地端口(local_port)的写法, 应该是Windows远程桌面的端口3389
, 其他除了公网IP需要修改外,都保持默认即可.
创建开机启动项
这里又是走了很多弯路, 一开始我想通过设置任务计划程序的方法, 但是屡屡失败, 总是无法正确启动客户端程序, 后来我通过设置开机启动服务的方法4搞定了, 由于不想用网络上的bat2exe, 这里我给出了一种取巧的方法:(C语言大法)
编译一下:
然后通过cmd的管理员权限输入下面的命令, 来创建开机启动服务:
如果创建错了的话可以删除服务:
sc delete open_frp
重启, 然后就可以连接了~
上面所说的配置方法在我的Win10设备上可以运行, 但是对于Win11, 同样的方法不能奏效, 可能是因为Win11的安全性机制, 这时候可以直接将
open_frp
程序的快捷方式(软链接)拖入shell:startup
文件夹内, 然后就可以在任务管理器中看到启动程序增加了open_frp
, 重启之后发现可以直接远控了.
连接(通过微软远程桌面)
这里也有个坑, 由于我之前一直通过在线账户登录Windows, 这就导致我没办法登录远程桌面, 因为在线账户的用户名是一段邮箱, 而远程桌面不支持, 换成本地账户登录之后, 问题就解决了… 这也是我之前一直没有解决的问题…
确认两端的服务都处于启动状态, Linux服务器用ps aux | grep frp
, Windows在任务管理器中就可以看到frpc
程序在运行了.
然后开启远程桌面, 填入主机名:<公网IP>:6000
, 之后创建链接之后输入用户名和密码即可连接, 完美~
小结
讲讲我配置这个内网穿透以及远程控制的心得体会, 配置起来虽然有一点难度, 但是还是乐在其中, 对Windows和Linux的定时任务与一些脚本的写法有所了解. 再就是关于远程桌面的一些缺点, 列出下面几条:
- 开启远程桌面之后会开启一个新的会话(session), 之前的主机桌面处于锁屏状态, 如果输入登录密码, 这时候就会导致远程连接失效, 也就是说同一时刻只有一方可以控制主机. 这点与向日葵不同, 向日葵支持两方(被控端和远控端)同时操作.
- 开机启动项方面还是Linux比较方便简单, 虽然用的是命令行, 但是配置起来很直观, 一行完事. 反观Windows这边, 需要先把命令写入C程序, (不知道还有没有别的办法, bat2exe感觉不安全), 然后写入开机启动服务.
- 不能同时占用一个端口, 例如两台Windows电脑, 同时占用同一端口就会出现无法访问的情况, 这时候可以设置多个监听的客户端端口.
ref
- 利用阿里云轻量服务器实现frp内网穿透(Mac远程控制win) - 知乎 (zhihu.com); ↩︎
- Linux系统如何设置开机自动运行脚本?-阿里云开发者社区 (aliyun.com); ↩︎
- linux - do I need to use nohup and & together - Stack Overflow; ↩︎
- windows 自制后台运行进程、exe开机自启动服务_远古大猛犸的博客