无
最近家里弄了一台4090显卡的服务器炼丹,考虑到有时候在图书馆学习,会有在公网连接家里服务器的需求,然后做一下内网穿透。
首先,需要一台公网静态ip服务器A,和我们的局域网服务器B,和准备在公网连接服务器B的电脑C。
去frp github官网下载release包,选择amd64架构和arm64架构(m2 mac使用,也是上面的电脑C)下载。
下载好的tar.gz包,解压,然后把amd64架构的文件夹,上传到A和B服务器,然后进入文件目录,修改以下配置:
服务器A修改frps.ini:
[common]
bind_port = 2998
服务器B 修改frpc.ini
[common]
server_addr = your_server_ip_of_A
server_port = 2998
[p2p_ssh]
type = xtcp
sk = your_password
local_ip = 127.0.0.1
local_port = 22
然后修改电脑C的 frpc.ini 配置
[common]
server_addr = your_server_ip_of_A
server_port = 2998
[p2p_ssh]
type = xtcp
role = visitor
server_name = p2p_ssh
sk = your_password
bind_addr = 127.0.0.1
bind_port = 6000
# when automatic tunnel persistence is required, set it to true
keep_tunnel_open = false
最后再修改一下电脑C的~/.ssh/config
Host b
HostName 127.0.0.1
User your_user_of_server_b
Port 6000
然后我们在server A启动frp服务端服务,通过 ./frps -c frps.ini
在server B启动frp 客户端服务,./frpc -c frpc.ini
在我们的电脑B 启动frp客户端服务,./frpc -c frpc.ini
上述服务,也可以通过nohup加入后台进程,当然比较好的方式是写入系统后台进程,比如systemctl后台进程,这里不再具体写这部分。
最后我们只需要 ssh b
,如果B电脑有C的ssh公钥,我们就直接连上了,否则可能还要密码。这时候就发现不需要通过A作为跳板,我们直接连上了服务器B,A在这个过程中只起了帮助连接的作用,后续不再需要A中转。所以速度很快,延迟也很低。
虽然使用总体很顺利,但最后记录一下踩到的一个坑:服务器A和B一般都不会更换网络环境,但是服务器C会。在C更换网络环境后,需要重启frpc服务,不然连接服务器B会失败。
发表于 2023.06.22
© 自由转载 - 非商用 - 非衍生 - 保持署名