frp内网穿透SSH远程连接Ubuntu 2022-03-05 机器学习 暂无评论 658 次阅读 ## 服务器端配置 服务器环境:ubuntu SSH连接到服务器之后运行如下命令查看处理器架构,根据架构下载不同版本的frp ```shell arch ``` 查看结果是“X86_64“即选择”amd64”, 运行如下命令,根据架构不同,选择相应版本并进行下载 ```shell wget https://github.com/fatedier/frp/releases/download/v0.39.1/frp_0.39.1_linux_amd64.tar.gz ``` 然后解压 ```shell tar -zxvf frp_0.39.1_linux_amd64.tar.gz ``` 文件夹改个名,方便使用 ```bash cp -r frp_0.39.1_linux_amd64 frp ``` 进入该目录 ```shell cd frp ``` 查看一下文件 ```shell ls -a ``` 我们只需要关注如下几个文件 - frps - frps.ini - frpc - frpc.ini 前两个文件(s结尾代表server)分别是服务端程序和服务端配置文件,后两个文件(c结尾代表client)分别是客户端程序和客户端配置文件。 因为我们正在配置服务端,可以删除客户端的两个文件 ```shell rm frpc rm frpc.ini ``` 然后修改frps.ini文件 ```shell vim frps.ini ``` 这个文件修改成如下格式 ``` [common] bind_port = 7000 dashboard_port = 7500 token = 12345678 dashboard_user = admin dashboard_pwd = admin vhost_http_port = 10080 vhost_https_port = 10443 ``` - “bind_port”表示用于客户端和服务端连接的端口,这个端口号我们之后在配置客户端的时候要用到。 - “dashboard_port”是服务端仪表板的端口,若使用7500端口,在配置完成服务启动后可以通过浏览器访问 x.x.x.x:7500 (其中x.x.x.x为VPS的IP)查看frp服务运行信息。 - “token”是用于客户端和服务端连接的口令,请自行设置并记录,稍后会用到。 - “dashboard_user”和“dashboard_pwd”表示打开仪表板页面登录的用户名和密码,自行设置即可。 - “vhost_http_port”和“vhost_https_port”用于反向代理HTTP主机时使用,本文不涉及HTTP协议,删除这两条均可。 编辑完成后保存 之后我们就可以运行frps的服务端了 ```shell ./frps -c frps.ini ``` 如果看到屏幕输出这样一段内容,即表示运行正常,如果出现错误提示,请检查上面的步骤。 ``` 2019/01/12 15:22:39 [I] [service.go:130] frps tcp listen on 0.0.0.0:7000 2019/01/12 15:22:39 [I] [service.go:172] http service listen on 0.0.0.0:10080 2019/01/12 15:22:39 [I] [service.go:193] https service listen on 0.0.0.0:10443 2019/01/12 15:22:39 [I] [service.go:216] Dashboard listen on 0.0.0.0:7500 2019/01/12 15:22:39 [I] [root.go:210] Start frps success ``` 此时访问 x.x.x.x:7500 并使用自己设置的用户名密码登录,即可看到仪表板界面  #### *服务器端后台运行* 至此,我们的服务端仅运行在前台,如果Ctrl+C停止或者关闭SSH窗口后,frps均会停止运行,因而我们使用 nohup命令将其运行在后台。 ```shell nohup ./frps -c frps.ini & ``` 输出如下内容即表示正常运行 ``` nohup: ignoring input and appending output to 'nohup.out' ``` 此时可先使用Ctrl+C关闭nohup,frps依然会在后台运行,使用jobs命令查看后台运行的程序 ```shell jobs ``` 在结果中我们可以看到frps正在后台正常运行 ``` [1]+ Running nohup ./frps -c frps.ini & ``` 此时访问 x.x.x.x:7500 依然可以打开仪表板界面,至此,服务端即设置完成,可以关闭SSH窗口了。 ## 客户端配置 客户端环境:Ubuntu20.04,一个需要被远程连接的主机 客户端前面的操作和服务端是一模一样的 ```bash 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 cp -r frp_0.39.1_linux_amd64 frp cd frp rm -r frps rm frps.ini vim frpc.ini ``` 客户端的配置如下 ```bash [common] server_addr = x.x.x.x server_port = 7000 token=12345678 [ssh] type = tcp local_ip = 127.0.0.1 local_port = 22 remote_port = 6000 ``` 上面的配置和服务端是对应的。 `[common]`中 - `server_addr`:填frp服务端的ip(也就是外网主机的IP) - `server_port`:填frp服务端的`bind_prot`。 `[ssh]`中 - `local_port`:填客户端的ssh端口(即22端口)。 - `remote_port`:ssh映射的端口,通过`服务器ip:remote_port`访问`客户端的22端口` 保存配置,输入以下指令运行frp客户端。 ```bash ./frpc -c ./frpc.ini ``` #### *客户端把frp改成系统服务的方式,开机自启* 现在客户端的frp只能运行在前台,把他改成系统服务开机自启后台运行 (1)改名frpc为frpservice,frpc.ini改名为frpservice.ini并拷贝到系统目录下 ``` cd frp sudo cp frpc /usr/bin/frpservice sudo cp frpc.ini /etc/frpservice.ini ``` (2)为frpc创建系统服务 ``` sudo vim /lib/systemd/system/frpservice.service ``` 添加以下内容: ``` [Unit] Description=frpservice After=network.target [Service] Type=simple #服务种类 User=nobody Restart=on-failure RestartSec=5s ExecStart=/usr/bin/frpservice -c /etc/frpservice.ini #启动时执行 ExecReload=/usr/bin/frpservice reload -c /etc/frpservice.ini #重启时执行 [Install] WantedBy=multi-user.target ``` - [Unit] 段: 启动顺序与依赖关系,如After=network.target,就说明在network.target服务启动之后。 - [Service] 段: 启动行为,如何启动,启动类型; - [Install] 段: 定义如何安装这个配置文件,即怎样做到开机启动 (3)开启服务 ``` sudo chmod 777 /lib/systemd/system/frpservice.service # 开启服务 systemctl enable frpservice.service # 启动服务 systemctl start frpservice.service ``` - chmod:控制用户对文件的权限的命令 - 一些相关命令 - systemctl enable xxx.service 加入开机自启动 - systemctl disable xxx.service 移除开机自启动 - systemctl start xxx.service 启动服务 - systemctl stop xxx.service 停止服务 - systemctl restart xxxservice 重启服务 - systemctl daemon-reload 修改了文件后重新加载 现在ssh连接`服务器ip:remote_port`即可实现远程SSH连接Ubuntu --- ### 参考 > [使用frp进行内网穿透 - 少数派 (sspai.com)](https://sspai.com/post/52523) > [使用frp实现内网穿透 - 简书 (jianshu.com)](https://www.jianshu.com/p/e8e26bcc6fe6) > [ ubuntu frp方式,实现内网穿透_ck784101777的博客-CSDN博客_](https://blog.csdn.net/ck784101777/article/details/108724672) > [Ubuntu18.04添加服务并设置开机启动_Fighting-Dawn丶的专栏-CSDN博客](https://blog.csdn.net/u012313382/article/details/106711146) 标签: none 本作品采用 知识共享署名-相同方式共享 4.0 国际许可协议 进行许可。