700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > frp服务实现内网穿透SSH远程内网虚拟机

frp服务实现内网穿透SSH远程内网虚拟机

时间:2024-01-07 09:02:20

相关推荐

frp服务实现内网穿透SSH远程内网虚拟机

1.准备工作

一台云服务(需要有公网IP

本地主机的VmWare虚拟机(linux),我用的是CentOS7。

2.配置

2.1服务端配置

新建opt/frp文件夹,可自行决定存放位置,但需要记得。mkdir /opt/frp进入文件夹cd /opt/frpwget下载frp服务压缩包,这里是0.34版本,注意客户端与服务端需保持版本一致。wget /fatedier/frp/releases/download/v0.34.0/frp_0.34.0_linux_amd64.tar.gz解压tar -zxvf frp_0.34.0_linux_amd64.tar.gz进入目录cd frp_0.34.0_linux_amd64查看服务端配置文件cat frps.ini[common]bind_port = 7000#不需要更改,有需要用vi自行更改。运行./frps -c frps.ini

#frpc.ini服务端默认端口为7000,可以通过frpc.ini更改。

#如果无法执行操作,添加777权限,chmod 777 frps.ini

此时不可以ctrl+c或者关闭终端,否则程序会自动结束,可以新建终端通过ps aux | grep frpc.ini 查看进程是否运行。

2.2客户端配置

我这里的客户端是本地主机Vmware里的虚拟机,此处必须保证服务端和客户端frp服务版本一致。

新建frp目录mkdir /opt/frp进入frpcd /opt/frpwget下载压缩包wget /fatedier/frp/releases/download/v0.34.0/frp_0.34.0_linux_amd64.tar.gz解压tar -zxvf frp_0.34.0_linux_amd64.tar.gz进入目录cd frp_0.34.0_linux_amd64更改配置文件vim frpc.ini

更改frpc.ini文件

server_addr:公网IP

server_port = 7000 服务端运行frps的端口,可以更改,但必须与服务端的frps.ini一致。

remote_port:公网映射端口,如果有多台客户端,每个客户端需要使用不同的端口号。

[common]server_addr = *.*.*.* #公网ipserver_port = 7000 服务端运行frps的端口,必须与服务端的frps.ini一致[ssh]type = tcplocal_ip = 127.0.0.1 local_port = 22remote_port = 6000 # 实现映射,公网IP:6000会映射到本客户端的22端口

如果有多个虚拟机,需要改变映射端口6001、6002...,并且[ssh]需要更改,例如[ssh_1]、[ssh_2]...,否则会报错,[ssh] start error: proxy name [ssh] is already in use。

前台方式运行客户端frp

./frpc -c frpc.ini

2.3测试

注意:需要在云服务器开放服务端和客户端端口,需要在云平台的安全组中设置,此处需要开放7000、6000端口。

外网任何一台机器都可以通过SSH协议连接。

SSH -p 6000 root@公网IP

3.自动化设置

3.1程序后台运行

ctrl+c结束frp服务

以后台不关闭形式启动frp,这样即使ctrl+c或者关闭终端,frp服务仍然会在后台运行。首次运行不推荐使用这种方式,因为这种形式启动后有报错信息不会显示。

服务端:nohup ./frps-c frps.ini &

客户端:nohup ./frpc -c frpc.ini &

以客户端为例:

那如何结束nohup进程呢?

需要用到ps aux | grep frp查询进程号,使用kill -9 进程号结束进程,此时进程号为27905.

3.2开机自启动服务

客户端:

结束frpc进程,使用kill -9 进程号结束进程,按照以下步骤进行。

1,将frpc的自带系统文件 复制到系统文件夹 /usr/lib/systemd/system/内cp /opt/frp/frp_0.34.0_linux_amd64/systemd/frpc.service /usr/lib/systemd/system/frpc.service2,frpc.service内容如下,无需更改。[Unit]Description=Frp Client ServiceAfter=network.target[Service]Type=simpleUser=nobodyRestart=on-failureRestartSec=5sExecStart=/usr/bin/frpc -c /etc/frp/frpc.iniExecReload=/usr/bin/frpc reload -c /etc/frp/frpc.ini[Install]WantedBy=multi-user.target2,按照frpc.service内的命令配置,将frpc启动文件何frpc.ini配置文件复制到指定路径,frpc是命令位置。mkdir /etc/frpcp /opt/frp/frp_0.34.0_linux_amd64/frpc.ini /etc/frp/frpc.inicp /opt/frp/frp_0.34.0_linux_amd64/frpc /usr/bin/frpc3,配置生效刷新配置文件systemctl daemon-reload设置开机自启动,确保frpc和frpc.ini文件复制成功才能执行该命令systemctl enable frpc查看状态,这里发现服务是dead或者inactive是正常现象systemctl status frpc重启reboot4,如果启动失败。应该是文件的权限问题。可以将frpc.service,frpc.ini,frpc这几个文件的权限设为 777

设置开机自启动,确保frpc和frpc.ini文件复制成功才能执行该命令,否则会出现服务无法停止现象,即使你kill进程程序仍然会自动重启,(我由于frpc文件没有cp成功)不断循环错误,除非你删除/etc/frp/frpc.ini文件或者systemctl disable frpc后kill进程。

systemctl list-unit-files | grep frpc可以查看进程是否设置开机自启动

frpc.service核心:

ExecStart=/usr/bin/frpc -c /etc/frp/frpc.ini,相当于在使用了./frpc -c frpc.ini,只要你的ExecStart的地址与frpc.ini文件位置跟你实际存放对的位置一致即可,你甚至可以直接更改ExecStart的地址而不去复制frpc.ini。我们这里不更改配置文件内容,而是根据配置文件将frpc.ini文件复制到对应地址。

服务端:

服务端同理,不更改frps.service,复制frps.ini到ExecStart对应的地址即可,其他步骤均一致。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。