记录linux的内网穿透frp操作


由于本人在宿舍偶尔需要查看实验室内电脑程序结果及传输一些文件,不得不利用frp内网穿透,需要准备以下三台电脑,如果有多个客户端,也可以进行配置:
一.一台具有公网ip的服务器(本人租用的是腾讯云Ubuntu系统)
二.实验室内一台跑程序的电脑(即客户端A:Ubuntu系统)
三.宿舍一台闲置电脑,用于远程连接实验室的电脑
四.实验室另一台跑程序的电脑(即客户端B:Ubuntu系统)
拥有这些工具以后,首先需要在四台电脑上下载客户端和服务端二进制文件,以下步骤针对于服务器与客户机:


下载地址github:https://github.com/fatedier/frp
也可以使用以下命令行下载:

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

完成以后,进行解压:

tar -zxvf frp_0.39.1_linux_amd64.tar.gz

使用命令行将解压出来的文件移动至/usr/local/frp文件夹;

mv frp_0.39.1_linux_amd64 /usr/local/frp

进入到frp文件夹内cd /usr/local/frp


此后,先配置服务器,服务器的配置文件是 frps.ini:
使用sudo vim frps.ini打开服务器的配置文件,并配置相关接口:
首先在腾讯云的防火墙处添加端口,协议为tcp,端口有7000,7500,先添加两个,其次是客户机,有几个客户机就添加几个,我有两个客户机,就需要添加两个,我定义端口为7001.7002。


此处有个小点,在最后一步连接ssh时报错了再来看这里,没有报错可以不看:在添加端口以后,有时候通过ssh连接时会出现下面这个错误时:

connect to host xxx.xxx.xx.xxx port 7002:No toute to host

在服务器终端执行:

sudo firewall-cmd --permanent --add-port=7001/tcp
和
sudo firewall-cmd --permanent --add-port=7002/tcp

然后再重启服务器就可以解决这个问题了


然后先配置服务端的配置文件:

sudo vim frps.ini

并修改为以下内容:

[common]
Bind_addr = 0.0.0.0
bind_port = 7000

以上是一个简单的配置,可以添加一个frps dashboard用于观察服务器与客户机连接的相关情况:

[common]
Bind_addr = 0.0.0.0
bind_port = 7000
dashboard_port = 7500
dashboard_user = admin
dashboard_pwd = admin
enable_prometheus = true

至此,服务器的配置就好了,然后在/usr/local/frp路径下运行一下./frps -c ./frps.ini,这是一个临时的运行命令,ctrl+c进行取消,
添加一下frps的自启动服务:
终端命令行输入:sudo vim /usr/lib/systemd/system/frps.service
(其实下载下来的文件夹内带有启动服务:cd /usr/local/frp/systemd,sudo vim frps.service将下面的内容复制到里面即可,两种方法都可以使用)
(如果有重名的自启动服务,可以cd /etc/systemd/system/multi-user.target.wants,到该路径下查看,并使用sudo rm 将重复的或多余的启动服务删除;使用systemctl disable frps停止自启动,这里的frps是自启动文件名)
内容可以是以下两种,一个不行换第二种:

[Unit]
Description=frps server daemon
Documentation=https://github.com/fatedier/frp
After=network-online.target

[Service]
ExecStart=/usr/local/frp/frps -c /usr/local/frp/frps.ini
Type=simple
User=nobody
Group=nogroup
WorkingDirectory=/tmp
Restart=on-failure
RestartSec=5s

[Install]
WantedBy=multi-user.target
[Unit]
Description=frps service
After=network-online.target

[Service]
Type=simple
ExecStart=/usr/local/frp/frps -c /usr/local/frp/frps.ini
Restart=on-failure
RestartSec=5s

[Install]
WantedBy=multi-user.target

然后,启动该服务:

# 启动frps
sudo systemctl start frps
# 自启动
sudo systemctl enable frps
# 重启应用
sudo systemctl restart frps
# 停止应用
sudo systemctl stop frps
# 停止自启动
sudo systemctl disable frps
# 查看应用的日志
sudo systemctl status frps

然后,配置linux系统的客户端A和客户端B,客户端的配置文件同样在/usr/local/frp路径下,需要注意的是配置文件为frpc.ini:
前面在腾讯云的防火墙处添加了端口7001和7002,下面将会用到:
首先,cd /usr/local/frp,并通过sudo vim frpc.ini打开客户端的配置文件:
对于客户机A:

[common]
server_addr = xxx.xxx.xx.xxx ####此处是腾讯云给的公网ip
server_port = 7000

[ssh]
type = tcp ####协议
local_ip = 127.0.0.1 ####本机的环回地址
local_port = 22 ####ssh端口
remote_port = 7001 ####腾讯云防火墙对客户机A开放的端口

对于客户机B:

[common]
server_addr = xxx.xxx.xx.xxx ####此处是腾讯云给的公网ip
server_port = 7000

[ssh1]#########这里需要注意改为ssh1,如果还有第三个客户机则第三个为ssh2或者其他ssh3都可以
type = tcp ####协议
local_ip = 127.0.0.1 ####本机的环回地址
local_port = 22 ####ssh端口
remote_port = 7002 ####腾讯云防火墙对客户机B开放的端口###此处需要注意

此后,在/usr/local/frp路径下运行一下./frpc -c ./frpc.ini,这是一个临时的运行命令,ctrl+c进行取消,
添加一下frpc的自启动服务:
终端命令行输入:sudo vim /usr/lib/systemd/system/frpc.service
(其实下载下来的文件夹内带有启动服务:cd /usr/local/frp/systemd,sudo vim frpc.service将下面的内容复制到里面即可,两种方法都可以使用)
(如果有重名的自启动服务,可以cd /etc/systemd/system/multi-user.target.wants,到该路径下查看,并使用sudo rm 将重复的或多余的启动服务删除;使用systemctl disable frpc停止自启动,这里的frpc是自启动文件名)
内容同样有以下两种,第一种不行换第二种:

[Unit]
Description=frpc server daemon
Documentation=https://github.com/fatedier/frp
After=network-online.target

[Service]
ExecStart=/usr/local/frp/frpc -c /usr/local/frp/frpc.ini
Type=simple
User=nobody
Group=nogroup
WorkingDirectory=/tmp
Restart=on-failure
RestartSec=5s

[Install]
WantedBy=multi-user.target
[Unit]
Description=frpc service
After=network-online.target

[Service]
Type=simple
ExecStart=/usr/local/frp/frpc -c /usr/local/frp/frpc.ini
Restart=on-failure
RestartSec=5s

[Install]
WantedBy=multi-user.target

然后,启动该服务:

# 启动frpc
sudo systemctl start frpc
# 自启动frpc
sudo systemctl enable frpc
# 重启应用
sudo systemctl restart frpc
# 停止应用
sudo systemctl stop frpc
# 停止自启动
sudo systemctl disable frps
# 查看应用的日志
sudo systemctl status frpc

到此,服务器与客户机的配置就完成了,在宿舍的电脑上打开终端通过以下两条命令即可连接客户机A和客户机B:

ssh name_A@xxx.xxx.xx.xxx -p 7001
ssh name_B@xxx.xxx.xx.xxx -p 7002

注意:
name_A 是客户机A 的用户名,name_B是客户机B的用户名,xxx.xxx.xx.xxx 是腾讯云给的公网ip.
由于我的客户机A是双系统,还需要配置客户机A的windows,如下:
同样下载windows版本的frp,下载后将其解压,并重命名为frp,放在指定位置,我放在D盘下了,打开frpc.ini进行配置:

[common]
server_addr = xxx.xxx.xx.xxx
server_port = 7000

[ssh4]
type = tcp
local_ip = 127.0.0.1
local_port = 3389 #windows的远程端口为3389,linux是22
remote_port = 7003

然后可以利用管理员模式打开PowerShell,进入到frp文件下并运行.\frpc.exe -c frpc.ini,若成功的话,可以考虑把frpc.exe注册成服务。
即:
使用winsw 工具可以将frpc注册为windows系统中的服务,下载地址:https://github.com/kohsuke/winsw/releases,下载将exe文件重命名为winsw.exe,并放在frpc.ini相同的路径下,并在该路径下编写winxw.xml文件,内容如下:

<service>
    <id>frpc</id>
    <name>frpc</name>
    <description>frp用于外网访问</description>
    <executable>D:\frp\frpc.exe</executable>
    <arguments>-c frpc.ini</arguments>
    <logmode>reset</logmode>
</service>

然后win+R,cmd到frp路径下,使用winsw.exe install命令将其注册为服务,并通过winsw.exe start启动服务。可以在此电脑-管理-服务中看到该服务处于自启动状态的。
在这里插入图片描述

主要有以下几种:

//注册服务
winsw.exe install
//卸载服务
winsw.exe uninstall
//启动服务
winsw.exe start
//停止服务
winsw.exe stop
//重启服务
winsw.exe restart
//查看状态
winsw.exe status

然后需要在windows中将远程打开!!!!
在这里插入图片描述

利用另外一台windows输入win+R,输入mstsc进行,在弹出的页面填写公网ipxxx.xxx.xx.xxx:7003,在弹出的页面输入用户名和密码即可连接。
如果使用linux进行连接的话,可以使用freerdp功能进行连接。具体可以看看:

xfreerdp -f host:port -u username -p password
-f:表示全屏(切换全屏的快捷键为:Ctrl + Alt + Enter)
host:远程服务器地址
port:端口,默认为 3389
-u username:用户名
-p password:密码

我没有搞通,但我尝试了另一种方法,可行:
在linu端:

sudo apt-get install rdesktop

然后直接输入:

rdesktop -f -a 16  192.168.1.112
  -u用户名
  -p密码
  -n客户端主机名(显示windows任务管理器中的连接客户端名)
  -g桌面大小( 宽* 高)[也可以用 x(小写的X)]
  -f全屏模式,从全屏模式切换出来按Ctrl+Alt+Enter
  -a连接颜色深度(最高到16位),一般选16才会显示真彩色(window7支持32位)
  -0数字0表示连接上windows控制台,等效mstsc/console命令

参考:

1.frp实现内网穿透 | frp服务端配置 | frp客户端配 https://cloud.tencent.com/developer/article/1748214
2.使用frp工具实现内网穿透以及配置多个ssh和web服务 https://www.cnblogs.com/chywx/p/10939966.html
3.快速搭建frp的http和ssh的内网穿透 https://www.spacevast.com/archives/%E5%BF%AB%E9%80%9F%E6%90%AD%E5%BB%BAfrp%E7%9A%84http%E5%92%8Cssh%E7%9A%84%E5%86%85%E7%BD%91%E7%A9%BF%E9%80%8F
4.10分钟使用腾讯轻量应用服务器与frp开启内网穿透实现ssh https://www.cnblogs.com/kalicener/p/15835512.html
5.使用 Systemd 设置 frp 开机启动 https://notfound.cn/posts/systemd-frp/
6.linux下使用 FreeRDP 连接 Windows 远程桌面(转) https://www.cnblogs.com/zdf123/p/6401845.html
7.ubuntu远程桌面连接windows系统https://www.cnblogs.com/brainworld/p/7755779.html

Logo

更多推荐