访问内网服务器并配置远程开发环境
一、背景
人在外网,想要使用的主机在内网,而学校提供的VPN是网页端,非常不好用。
使用远程桌面软件会有收费问题且不能保证安全。
解决方案就是用FRP搭建一个穿透服务器,通过内网穿透进行访问。
成本是一个公网服务器,可以使用最低档的学生机。
二、环境
- A:内网中的机器
- B:公网上的云服务器
- C:自己手边的主机
三、配置工作
需要在A机器和B服务器上进行配置
A内网机器
1. 下载frp
下载并解压frp
(以linux x86为例),这里使用0.46.0版本作为演示。
wget https://github.com/fatedier/frp/releases/download/v0.46.0/frp_0.46.0_linux_amd64.tar.gz
tar -xvzf frp_0.46.0_linux_amd64.tar.gz
移动到local文件夹下
sudo mv frp_0.46.0_linux_amd64 /usr/local/frp
cd /usr/local/frp
2. 修改配置文件
编辑器打开frpc.ini
配置内网机器
sudo vim frpc.ini
必须修改项:
server_addr:为公网机器B的IP地址
可选修改项:
server_port为公网机器B用来连接A的开放端口
remote_port为用户C用来连接A时的端口
[common]
server_addr = x.x.x.x
server_port = 7000
[ssh]
type = tcp
local_ip = 127.0.0.1
local_port = 22
remote_port = 6000
3. 注册服务
注册为系统服务,这样就不用每次都手动运行了。
sudo vim /usr/lib/systemd/system/frpc.service
粘贴下面内容
[Unit]
Description=frp cilent
After=network.target
[Service]
Type=simple
ExecStart=/usr/local/frp/frpc -c /usr/local/frp/frpc.ini
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
[Install]
WantedBy=multi-user.target
4. 启动服务
sudo systemctl enable frpc
sudo systemctl start frpc
sudo systemctl status frpc
正常的话,应该会是active状态,即为配置成功
B公网服务器
1. 下载frp
前面步骤和A一样
wget https://github.com/fatedier/frp/releases/download/v0.46.0/frp_0.46.0_linux_amd64.tar.gz
tar -xvzf frp_0.46.0_linux_amd64.tar.gz
sudo mv frp_0.46.0_linux_amd64 /usr/local/frp
cd /usr/local/frp
2. 修改配置文件(可跳过)
编辑器打开frps.ini
配置frp服务器
sudo vim frps.ini
可选修改项:
bind_port为公网机器B用来连接A的开放端口,和之前配置的server_port一致
[common]
bind_port = 7000
3. 注册服务
注册为系统服务,这样就不用每次都手动运行了。
sudo vim /usr/lib/systemd/system/frps.service
[Unit]
Description=frp server
After=network.target
[Service]
Type=simple
ExecStart=/usr/local/frp/frps -c /usr/local/frp/frps.ini
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
[Install]
WantedBy=multi-user.target
4. 启动服务
sudo systemctl enable frps
sudo systemctl start frps
sudo systemctl status frps
正常的话,应该是active状态。
5. 开启防火墙
在云服务器的防火墙规则里开放之前配置的remote_port和bind_port端口,默认是6000和7000。
四、连接
在主机C上使用ssh连接A,
user为A的用户名,ip地址为B的公网ip,-p后为frpc中的remote_port
ssh user@x.x.x.x -p6000
效果:使用vscode中的ssh远程连接、端口转发