记录linux的内网穿透frp操作
下载地址github:https://github.com/fatedier/frp
也可以使用以下命令行下载:
wget https:
完成以后,进行解压:
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: 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: 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 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
原文链接:https://blog.csdn.net/outsider2019/article/details/123384735