写在前面:国内 腾讯云 和 阿里云服务器 都需要对安全组进行配置才可以访问!
初次登录需要密码,这时可通过重置 root
密码解决。
默认会分配一个普通的用户,切换到 root
使用:
su -i
passwd # 修改 root 账户密码
官方下载链接:Releases · fatedier/frp,配置流程如下。
将下载好的 frp
压缩包分别传送到 云服务器 和 Linux
服务器(目标代理机器,即我们要代理的那台机器)。其中云服务器作为 frps(frp 服务端),目标代理机器 作为 frpc(frp 客户端)
。该压缩包同时包含了 frps & frpc
,因此不需要分别下载。
注意:新版本里面没有
systemd
文件夹,这里面包括了将frps/frpc
注册为服务程序的脚本文件,如果需要的话,可以下载0.44.0
之前的版本。
tar -zxvf frp_0.38.0_linux_386.tar.gz -C target_dir # 解压到指定目录
# 删除无用的文件(客户端)
rm -f frpc* systemd/frpc*
本次实验中没有对文件进行任何额外的操作,如果要自定义 内网穿透服务器 的端口,可以在 frps.ini
文件中进行修改,更多的参数参考 frps_full.ini
文件,实际使用的还是 frps.ini
没有使用 frps_full.ini
配置文件,后面的 frpc
同理。
tar -zxvf frp_0.38.0_linux_386.tar.gz -C target_dir # 解压到指定目录
# 删除无用的文件(服务端)
rm -f frps* systemd/frps*
修改配置文件 frpc.ini
(目前只修改 云服务器的地址,其他设置作为后续的改进方案),更多详细配置参考 frpc_full.ini
,
server_addr = 120.79.173.220
保存退出。
腾讯云-控制台
以上添加的安全组策略无法应用到实例上,只能使用以下方法针对实例进行设置。服务器 - 轻量应用服务器 - 控制台
修改后无需重启即可生效!
默认会创建一个 lighthouse
普通用户,用于一键登录,如果不需要该用户,直接在 登录 选项栏里选择关闭一键登录功能即可。
如果要修改账户密码,可以在 服务器 - 轻量应用服务器 - 控制台(更多–>重置密码) 进行修改!
如果要切换到 root
用户,只需要运行以下命令即可,
sudo -i/s # -i 或 -s 都可以
- 在服务端(frps)启动
./frps -c frps.ini
- 在客户端(frpc)启动
./frpc -c frpc.ini
修改 frps.service
,
[Unit]
Description=Frp Server Service
After=network.target
[Service]
Type=simple
# 如果只有单个 root 用户,必须指定为 root,否则使用默认的 nobody 即可
# User=nobody 报错:code=exited, status=203/EXEC frp
User=root
Restart=on-failure
RestartSec=5s
# 路径修改
ExecStart=/root/env/frp/frps -c /root/env/frp/frps.ini
LimitNOFILE=1048576
[Install]
WantedBy=multi-user.target
参考链接:frp服务器端程序frps自启动出错-Bluesky’s blog 非常感谢这个作者!!!
将修改后的文件添加到系统文件中(注册服务?):
sudo cp systemd/frps.service /etc/systemd/system/
sudo systemctl start frps.service
systemctl status frps.service
sudo systemctl enable frps.service # 开机自启动
ps -ef | grep frps
删除 frp
服务(比如安装文件出错,要重新安装):
systemctl stop frps.service
systemctl disable frps.service
rm -f /etc/systemd/system/frps.service
systemctl daemon-reload
systemctl reset-failed
systemctl status frps.service
参考链接:CentOS使用systemctl彻底删除服务 | 瑞瑞哥的博客
frpc.service
配置文件修改,
[Unit]
Description=Frp Client Service
After=network.target
[Service]
Type=simple
# 由于有多个用户,因此不用指定唯一的用户名
User=nobody
Restart=on-failure
RestartSec=5s
ExecStart=/home/guest/xxx/env/frp/frpc -c /home/guest/xxx/env/frp/frpc.ini
ExecReload=/home/guest/xxx/env/frp/frpc reload -c /home/guest/xxx/env/frp/frpc.ini
LimitNOFILE=1048576
[Install]
WantedBy=multi-user.target
安装注册 frpc
服务,随着系统启动同时启动该服务,运行其中的脚本文件,
sudo cp systemd/frpc.service /etc/systemd/system/
sudo systemctl start frpc.service
systemctl status frpc.service
sudo systemctl enable frpc.service # 开机自启动
ps -ef | grep frpc
删除 frpc
服务,
sudo systemctl stop frpc.service
sudo systemctl disable frpc.service
sudo rm -f /etc/systemd/system/frpc.service
sudo systemctl daemon-reload
sudo systemctl reset-failed
systemctl status frpc.service
frpc.ini
,
[common]
server_addr = 购买的有公网 IP 的服务器地址
server_port = 7000
token = your_tocken
[修改为有代表意义的名称,只要不和其他 frpc 名称重复即可]
type = tcp
local_ip = 127.0.0.1
local_port = 3389 # Windows 远程桌面连接端口
remote_port = 6001 # 指定映射端口号,不能和其他的 frpc 重复!
保存之后,完成接下来的工作,直接看方法3!
.exe
注册为 windows
服务(推荐使用方法3)
- 2种方法教你,如何将exe注册为windows服务,直接从后台运行 - 知乎
- 关于服务的创建常用命令(redis服务创建、启动、停止、删除)_dhq_blog的博客-CSDN博客_redis停止服务命令
- 以windows服务的方式运行FRP · 搬砖小抄
sc create frpc binpath= "D:\dev\env\frp_0.44.0_windows_386\frpc.exe" type= own start= auto
如果程序不符合规范,就算可以创建成功,也无法启动,报 1053 错误,在服务程序中右键添加启动参数仍然无法解决,因此判断该程序不符合 Windows 支持的服务程序类型。
删除服务,HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services
删除对应服务条目(默认 sc 删除时会同时删除注册表中的相关项目)
sc delete frpc
- 源链接:https://pan.baidu.com/s/1gKu_WwVo-TeWXmrGAr9qjw 提取码:s1vm
- instsrv.exesrvany.exe-桌面系统文档类资源-CSDN文库 自己上传到 CSDN
将 instsrv.exe
和 srvany.exe
拷贝到C:\WINDOWS\SysWOW64
目录下;
以管理员身份打开 cmd
;
运行命令,
.\instsrv.exe frpc C:\WINDOWS\SysWOW64\srvany.exe
服务创建成功之后,会在注册表中生成条目 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\服务名称
,
Ctrl Shift Esc
打开控制台,找到服务选项,右键启动即可,如果要设置为开机自启动,直接进入服务中进行设置即可,
如果 Snipaste 无法使用,尝试在设置中设置 以管理员方式启动!
之后通过远程连接进行测试!没有任何问题!
虽然暂时可以使用,但是使用 srvany
的有点缺陷,具体看 nssm
官方说明文档!因此不推荐使用该方法。
卸载服务,
sc delete frpc
会将服务以及注册表中的条目都删除,所以不用再进入注册表手动删除之前的配置!
nssm
(推荐使用,简单,安全高效!)个人理解:是对方法二的封装升级(思路上),能够更好地满足需求。
- NSSM - the Non-Sucking Service Manager
- 堪称神器,能将普通应用程序注册成 Windows 服务的助手程序 NSSM ! - 知乎
直接阅读官方说明文档!
下载:https://nssm.cc/release/nssm-2.24.zip
将解压后的文件放到指定路径:D:\dev\env\OS\nssm-2.24\
将其添加到系统环境变量中,为了方便管理,自己添加的环境都添加在 user -- Path
下,
64
位的 nssm
,进入要注册为服务的应用程序 可执行文件的目录下,在该目录下以管理员身份打开终端,执行以下命令即可,nssm install/uninstall 自定义服务名称
之后在资源管理器中即可看到该服务正在运行(第一次需要手动运行)!
打开 注册表编辑器,发现 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services
下新增了一个条目 frpc
,和之前的推断一样,原理和方法2类似,但是 nssm
做了封装(GUI),同时添加了更多的功能,操作管理起来也方便!
ssh 服务器用户名@frps服务器地址 -p 6000
使用 Windows 远程桌面连接
,这样即使不在同一个局域网内,或者 IP
改变,也能够远程连接!
- 解决ssh登录后闲置时间过长而断开连接 - 腾讯云开发者社区-腾讯云
- 解决SSH自动断线,无响应的问题。 - 简书 推荐使用该方法
~/.ssh/config
添加,
Host *
ServerAliveInterval 60
ServerAliveCountMax 3
这里就不介绍了,需要的直接看第一个链接。