1. 说明
我有台服务器,但它在内网里,我需要通过ssh方式访问它,目前可以采用:向日葵等商业软件,RustDesk等开源软件。或者,《自建内网穿透服务器》。 本教程把实现上述功能的所有步骤罗列出来,以及避坑攻略。注意,本教程采用Linux(公网服务器端、内网服务器端)。至于你自己ssh远程的客户端就随意了,windows和linux都可以ssh。 本教程参考了: https://www.bilibili.com/video/BV1D7411q7cA?p=2 https://blog.csdn.net/qq_26290415/article/details/115839191 https://www.ofuni.com/frp-config/ https://blog.csdn.net/jackghq/article/details/54974141 等。
2. 工具准备
a. 带公网IP的公网服务器 b. 需要访问的内网服务器(很多教程叫它客户端,我认为这个实际是我需要访问的内网服务器,所以和其他人叫法有所区别。 c. 客户端(很多教程并未提及这个,实际设置上也有点trick。客户端是你自己的笔记本电脑之类的,你想要从客户端远程接入服务器)
3. 公网服务器申请
阿里云,腾讯云(轻量级应用即可满足一般需求)。截至 2021年11月。Amazon依旧可以申请免费1年的服务器端。 网址:https://aws.amazon.com/cn/campaigns 申请免费1年的EC2。自己申请,具体教程要去找其他教程了。 本教程列出两个必要设置: (1)EC2控制面板左侧,点击安全组。–》 找到”编辑入站规则“ --》编辑成下图3(所有流量均可访问) (2)链接外网ip地址。这个ip地址,就是公网服务器的地址,也是你以后都要使用,来访问私网服务器的地址。有些教程是有公网域名的。也是可以的。本教程我们假设你申请到的IP是199.199.199.9
4. 公网服务器端设置
要求,使用root设置。
步骤1. 下载frps
cd ~
wget https://github.com/fatedier/frp/releases/frp_0.30.0_linux_amd64.tar.gz
tar -zxvf frp_0.30.0_linux_amd64.tar.gz
mv frp_0.30.0_linux_amd64 frp
cd frp/
vi frps.ini
步骤2. 设置frps(请务必注意,这里是frps.ini,后面是frpc.ini,这个坑,耽误了我3个小时)
[common]
bind_port = 7000
token = ttt123
dashboard_port=7500
dashboard_user=sheng
dashboard_pwd=abc123
bind_udp_port = 7001
这里的设置可变的项,有: token,dashboard_user,dashboard_pwd,你可以设置为你想要的密钥,用户名和密码。后续有用。 你也可以增加其他服务端口,比如其他教程里加的:
vhost_http_port = 8080
vhost_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 https://github.com/fatedier/frp/releases/frp_0.30.0_linux_amd64.tar.gz
tar -zxvf frp_0.30.0_linux_amd64.tar.gz
mv frp_0.30.0_linux_amd64 frp
cd frp/
vi frpc.ini
设置frpc.ini。请注意: 这里设置的是frpc.ini !!! 这里设置的是frpc.ini !!! 这里设置的是frpc.ini !!!
[common]
server_addr = 199.199.199.9
server_port = 7000
token = ttt123
admin_addr = 127.0.0.1
admin_port = 7400
login_fail_exit = true
[ssh1]
type = tcp
local_ip = 0.0.0.0
local_port = 22
remote_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!!! 具体见:https://blog.csdn.net/jackghq/article/details/54974141
sudo apt-get install openssh-server
dpkg -l | grep ssh
ps -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 daemon
After=syslog.target network.target
Wants=network.target
[Service]
Type=simple
TimeoutStartSec=30
ExecStart=~/frp/frps -c ~/frp/frps.ini
Restart= always
RestartSec=1min
[Install]
WantedBy=multi-user.target
Alias=frps
接着开启自动启动,并开启frps服务:
systemctl enable frps.service
systemctl start frps
systemctl status frps
内网服务器端
cd /etc/systemd/system/
vi frpc.service
在frpc.service里输入以下内容:
[Unit]
Description=frpc daemon
After=syslog.target network.target
Wants=network.target
[Service]
Type=simple
TimeoutStartSec=30
ExecStart=~/frp/frpc -c ~/frp/frpc.ini
Restart= always
RestartSec=1min
[Install]
WantedBy=multi-user.target
Alias=frpc
接着开启自动启动,并开启frpc服务:
systemctl enable frpc.service
systemctl start frpc
systemctl status frpc
注意: 请自行检查并修改frps和frps.ini文件的路径。 请注意frpc和frps的区别
至此,所有设置完毕。
|