通过 frp 内网穿透实现异地 SSH 连接(反向代理)
起因是我放假回家,想在家里通过 SSH 连接放在学校的无显示器的 Linux,但是学校的 Linux 是内网,无法直接连接,且无显示器无法使用向日葵等远程桌面软件,所以想到了使用 frp 的反向代理功能实现内网穿透,进而实现异地 SSH 连接。
前提
- 一台具有公网 IP 的服务器(阿里云、腾讯云等)
配置远程主机
我们需要有三台主机,分别是:自己的电脑、远程 Linux 主机和具有公网 IP 的服务器。
只需要在远程 Linux 和具有公网 IP 的服务器上配置 frp 即可。
首先在远程 Linux 上下载 frp,Github 下载地址。下载远程主机对应的版本,我这里是 ARM64 架构的 Linux,所以下载 frp_0.51.2_linux_arm64.tar.gz
。
下载完毕后解压:
远程 Linux 为客户端,所以只需要保留 frpc*
文件即可,frps
可以删除。
修改frpc.ini
,只需要将server_addr
修改为服务器的 IP 地址即可,local_ip
不变。server_port
和remote_port
一般不变,若与其他服务冲突了可以修改。
配置服务器
同样下载好对应系统版本的 frp,解压后删除frpc*
文件。
修改frpc.ini
,确保bind_port
与 frpc 客户端,即远程主机的server_port
一致。
再前往阿里云或腾讯云官网配置服务器防火墙规则,开放服务器的 6000 和 7000 端口(若修改了则开放修改后的端口)。
启动 frp
先启动服务器的frps
:
显示以下三行则代表启动成功:
再启动远程主机的frpc
:
连接远程主机
启动成功后就可以尝试 SSH 连接远程 Linux 主机了:
其中,frpc.ini
里的server_port
,frpc.ini
里的server_port
,