1. 说明
我有台服务器,但它在内网里,我需要通过ssh方式访问它,目前可以采用:向日葵等商业软件,RustDesk等开源软件。或者,《自建内网穿透服务器》。
本教程把实现上述功能的所有步骤罗列出来,以及避坑攻略。注意,本教程采用Linux(公网服务器端、内网服务器端)。至于你自己ssh远程的客户端就随意了,windows和linux都可以ssh。
本教程参考了:
/video/BV1D7411q7cA?p=2
/qq_26290415/article/details/115839191
/frp-config/
/jackghq/article/details/54974141
等。
2. 工具准备
a. 带公网IP的公网服务器
b. 需要访问的内网服务器(很多教程叫它客户端,我认为这个实际是我需要访问的内网服务器,所以和其他人叫法有所区别。
c. 客户端(很多教程并未提及这个,实际设置上也有点trick。客户端是你自己的笔记本电脑之类的,你想要从客户端远程接入服务器)
3. 公网服务器申请
阿里云,腾讯云(轻量级应用即可满足一般需求)。截至 11月。Amazon依旧可以申请免费1年的服务器端。
网址:/cn/campaigns
申请免费1年的EC2。自己申请,具体教程要去找其他教程了。
本教程列出两个必要设置:
(1)EC2控制面板左侧,点击安全组。–》 找到”编辑入站规则“ --》编辑成下图3(所有流量均可访问)
(2)链接外网ip地址。这个ip地址,就是公网服务器的地址,也是你以后都要使用,来访问私网服务器的地址。有些教程是有公网域名的。也是可以的。本教程我们假设你申请到的IP是199.199.199.9
4. 公网服务器端设置
要求,使用root设置。
步骤1. 下载frps
cd ~wget /fatedier/frp/releases/frp_0.30.0_linux_amd64.tar.gztar -zxvf frp_0.30.0_linux_amd64.tar.gzmv frp_0.30.0_linux_amd64 frpcd frp/vi frps.ini
步骤2. 设置frps(请务必注意,这里是frps.ini,后面是frpc.ini,这个坑,耽误了我3个小时)
[common]bind_port = 7000token = ttt123# web online check status of frpdashboard_port=7500dashboard_user=shengdashboard_pwd=abc123# point to point bind_udp_port = 7001
这里的设置可变的项,有:
token,dashboard_user,dashboard_pwd,你可以设置为你想要的密钥,用户名和密码。后续有用。
你也可以增加其他服务端口,比如其他教程里加的:
# http, https portvhost_http_port = 8080vhost_https_port= 443
http
https服务。我不需要,所以没加。
步骤3. 开启服务并测试是否正常开启。
cd ~/frp./frps -c frps.ini
在外网服务器端开启该服务后,任何一台电脑,输入网址:
http://199.199.199.9:7500 (这个Ip请改成你自己申请到的IP)
输入账户sheng密码abc123(即你写的dashboard_user和dashboard_pwd的设置值)就可以直接访问该frp服务器端。查看状态。
步骤4. 内网服务器端设置。
在你的内网服务器,下载frps,
cd ~wget /fatedier/frp/releases/frp_0.30.0_linux_amd64.tar.gztar -zxvf frp_0.30.0_linux_amd64.tar.gzmv frp_0.30.0_linux_amd64 frpcd frp/vi frpc.ini
设置frpc.ini。请注意:
这里设置的是frpc.ini !!!
这里设置的是frpc.ini !!!
这里设置的是frpc.ini !!!
[common]server_addr = 199.199.199.9server_port = 7000token = ttt123# frpc客户端管理界面admin_addr = 127.0.0.1admin_port = 7400# 失败重连login_fail_exit = true[ssh1]type = tcplocal_ip = 0.0.0.0local_port = 22remote_port = 6001
这里设置的token必须和前面frps的token一致。
linux的ssh端口是22,所以必须使用22.
可以更改的有,
连接名:[ssh1]可以随意更改,以及增加。但不要重复。
local_ip:是你的内网服务器的ip地址。
remote_port可以设置为6000-7000随意。但不要重复。后续要用这个端口来ssh连接内网服务器。
步骤5. 内网服务器端测试
cd ~/frp./frpc -c frpc.ini
至此,你已经可以在任何一个客户端,访问内网服务器了。
步骤6. 客户端测试
注意坑2:
如果你的内网服务器是Ubuntu,那么需要开启ssh,(默认不开启)。开启ssh,开启ssh,开启ssh!!!
具体见:/jackghq/article/details/54974141
sudo apt-get install openssh-serverdpkg -l | grep sshps -e | grep ssh
然后,你用内网服务器的用户名和密码,即可访问内网服务器。
Windows:
putty里设置 IP: 199.199.199.9 Port: 6001
Linux:
ssh -p 6001 userid@199.199.199.9
也可以直接访问了。
步骤7:自启动设置(公网和内网服务器均需设置)
公网服务器端
cd /etc/systemd/system/vi frps.service
在frps.service里输入以下内容:
[Unit]Description=frps daemonAfter=syslog.target network.targetWants=network.target[Service]Type=simpleTimeoutStartSec=30ExecStart=~/frp/frps -c ~/frp/frps.iniRestart= alwaysRestartSec=1min[Install]WantedBy=multi-user.targetAlias=frps
接着开启自动启动,并开启frps服务:
systemctl enable frps.servicesystemctl start frpssystemctl status frps
内网服务器端
cd /etc/systemd/system/vi frpc.service
在frpc.service里输入以下内容:
[Unit]Description=frpc daemonAfter=syslog.target network.targetWants=network.target[Service]Type=simpleTimeoutStartSec=30ExecStart=~/frp/frpc -c ~/frp/frpc.iniRestart= alwaysRestartSec=1min[Install]WantedBy=multi-user.targetAlias=frpc
接着开启自动启动,并开启frpc服务:
systemctl enable frpc.servicesystemctl start frpcsystemctl status frpc
注意: 请自行检查并修改frps和frps.ini文件的路径。 请注意frpc和frps的区别
至此,所有设置完毕。