最近闲着没事干,刚好实验室给我们配了一个新电脑,实验室也有一台服务器,但是只有连上实验室的网络才能连上服务器,我们实验室又不在学校这边,因此连服务器很不方便。听同学说可以内网穿透什么的,遂尝试下。
需要什么:云服务器、实验室电脑、实验室服务器、宿舍电脑
效果如何:让宿舍电脑通过实验室电脑连上实验室的服务器,在宿舍也能使用上实验室的服务器

首先是github搜索下载frp,实验室电脑和云服务器都要下载,一个作为客户端一个作为服务端

云服务器配置:建立中转站,打通外部流量入口

添加防火墙规则

以aliyun为例,在网络与安全组中的防火墙规则,添加入方向规则,访问来源填0.0.0.0/0,端口填2222

注1:有的端口不一定行,我之前开的端口是7000就不行,可能是被实验室的防火墙给拦截了,最好用常用些的端口,不过也不能用已经被占用的
注2:开放端口后试一下:可以在自己电脑的PowerShell中输入:Test-NetConnection 云服务器公网IP地址 -Port 2222
注3:可以在云服务器中运行firewall-cmd –list-ports看看有没有成功配置防火墙规则

配置frps.toml(frps是服务端软件,而frpc是客户端的,这里不用管)

文件内写入:
bindAddr = “0.0.0.0”
bindPort = 2222 # 这里改成了 2222

注1:在某些云服务器镜像中,如果程序只绑定了 IPv6,IPv4 的流量是进不来的

后台运行frp

命令行输入:nohup ./frps -c frps.toml > frps.log 2>&1 &

实验室电脑(windows)配置:把内网大门打开,并具备转发能力

配置 frpc.toml

文件中写入:
serverAddr = “47.98.x.x” # 你的 VPS 公网 IP
serverPort = 2222 # 对应服务端端口

[[proxies]]
name = “ssh-lab”
type = “tcp”
localIP = “127.0.0.1”
localPort = 22
remotePort = 6000 # 宿舍电脑连接的端口

安装必要组件

以下三条命令在PowerShell中输入

OpenSSH Server (用于接收宿舍的连接):Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0
OpenSSH Client (用于发起对服务器的连接):Add-WindowsCapability -Online -Name OpenSSH.Client~~~~0.0.1.0
重启服务:Start-Service sshd

使用 NSSM 将 FRP 注册为系统服务

下载解压 NSSM ,把 nssm.exe 复制到你存放 frpc.exe 的那个文件夹里,在文件夹的PowerShell中输入:.\nssm.exe install frpc
然后会弹出窗口配置 nssm ,其中 path 选择你的 frpc.exe ,参数填-c frpc.toml,然后点安装服务。最后在PowerShell中输入:Start-Service frpc

注1:最好设置开机自启NSSM

宿舍电脑配置:一键直连,免密登录,像操作本地文件一样操作服务器

注1:以下操作均在C:\Users\用户.ssh文件下

准备密钥

从实验室电脑取回私钥文件 (id_rsa_lab),保存到宿舍电脑 C:\Users\用户.ssh\id_rsa_lab

VsCode配置(.ssh/config)

=== 第一跳:连接实验室电脑 (通过 VPS) ===
Host lab-pc-relay
HostName 47.98.x.x
User <实验室电脑Windows用户名>
Port 6000

=== 第二跳:最终连接 GPU 服务器 ===
Host lab-server-gpu
HostName <服务器内网IP>
User <服务器Linux用户名>
IdentityFile “C:\Users\你的用户.ssh\id_rsa_lab”
ProxyCommand C:\Windows\System32\OpenSSH\ssh.exe -q -W %h:%p lab-pc-relay

注1:需要把宿舍电脑的 公钥 (Public Key) 放到实验室电脑里,也就是.ssh/id_rsa.pub的内容复制到实验室电脑.ssh/authorized_keys中
注2:这部分最好要知道VsCode如何远程连接服务器
注3:不懂的可以问AI