数据太大了,存在单位服务器上的。但是单位服务器是和外网断联的。那在家怎么连服务器?
办法是这样:在家里访问办公室Linux,再从办公室Linux访问单位内网服务器。 单位服务器不需要暴露公网。通过办公室Linux主动连到VPS,家里再通过VPS反向连接办公室Linux。
需要准备的事情
- 得买一个VPS,我买的是阿里云的轻量应用服务器。目前买了一个月的,34块。系统选Ubuntu 24.04,内存:1G,两核。
然后打开工作台,在“更多操作”里选重置密码,输入
你喜欢的人的名字新密码。 然后得把下面几个值先记下来:
VPS 公网 IP:VPS_IP,这个在“工作台”的“服务器概览”里面可以看到。
VPS 登录用户:root
确认:
- VPS 有公网 IP。
- VPS 的 SSH 端口
22可以访问。 - 不需要开放
2222端口,因为我们会把反向端口绑定在 VPS 自己的127.0.0.1上。
在自家电脑上确认可以登录 VPS
如果使用密码登录:
ssh root@VPS_IP
如果使用 .pem 私钥,例如 ~/Downloads/mac.pem:
chmod 400 ~/Downloads/mac.pem
ssh -i ~/Downloads/mac.pem -o IdentitiesOnly=yes root@VPS_IP
能进入 VPS 后,说明 Mac 到 VPS 的网络没问题。
在办公室Linux上确认可以登录 VPS
你可以人在办公室本机操作,也可以SSH到办公室Fedora,再在那个远程会话里操作。
在办公室Linux上执行:
ssh root@VPS_IP
如果 Fedora 上使用单独的私钥,例如 ~/.ssh/vps_ed25519:
chmod 400 ~/.ssh/vps_ed25519
ssh -i ~/.ssh/vps_ed25519 root@VPS_IP
在办公室Linux上启动反向 SSH 通道
推荐先用 tmux,避免通道占住当前 SSH 窗口。
在办公室 Fedora 上执行:
tmux new -s vps-tunnel
进入 tmux 后,启动反向通道:
ssh \
-o ExitOnForwardFailure=yes \
-o ServerAliveInterval=60 \
-o ServerAliveCountMax=3 \
-N \
-R 127.0.0.1:2222:localhost:22 \
root@VPS_IP
如果需要私钥:
ssh \
-i ~/.ssh/vps_ed25519 \
-o ExitOnForwardFailure=yes \
-o ServerAliveInterval=60 \
-o ServerAliveCountMax=3 \
-N \
-R 127.0.0.1:2222:localhost:22 \
root@VPS_IP
如果命令停在那里、没有报错,就是正常。它表示:
VPS 的 127.0.0.1:2222
-> 办公室的 localhost:22
然后按:
Ctrl-b
d
这会把 tmux 会话放到后台,反向通道继续运行。
查看通道会话:
tmux ls
重新进入通道会话:
tmux attach -t vps-tunnel
在家里连接办公室Linux
前提:第 4 步的反向通道正在办公室Linux上运行。
方法 A:分两步连接
先从 Mac 登录 VPS:
ssh root@VPS_IP
如果 VPS 用 .pem:
ssh -i ~/Downloads/mac.pem -o IdentitiesOnly=yes root@VPS_IP
进入 VPS 后,再连办公室Linux:
ssh -p 2222 User_name@127.0.0.1
成功后,你就在办公室 Fedora 里面。
方法 B:一条命令直连办公室Linux
如果 VPS 用密码或默认密钥:
ssh -J root@VPS_IP -p 2222 User_name@127.0.0.1
如果 VPS 需要 mac.pem,可以写成:
ssh \
-o ProxyCommand="ssh -i ~/Downloads/mac.pem -W %h:%p root@VPS_IP" \
-p 2222 \
User_name@127.0.0.1
从办公室Linux连接单位服务器
登录办公室 Fedora 后,再执行:
ssh SERVER_USER@SERVER_IP
这样完整链路就是:
Mac -> VPS -> 办公室 Fedora -> 单位服务器
配置快捷连接
编辑本地SSH配置:
nano ~/.ssh/config
加入:
Host vps
HostName VPS_IP
User root
IdentityFile ~/Downloads/mac.pem
IdentitiesOnly yes
Host office-remote
HostName 127.0.0.1
Port 2222
User FEDORA_USER
ProxyJump vps
以后在家直接:
ssh office-remote
如果 VPS 不使用 mac.pem,可以把 IdentityFile 和 IdentitiesOnly 两行删掉。
常见问题
Mac 登录 VPS 报 Permission denied (publickey)
通常是私钥不对、权限不对、用户名不对,或者密钥没有绑定到这台 VPS。
先试:
chmod 400 ~/Downloads/mac.pem
ssh -i ~/Downloads/mac.pem -o IdentitiesOnly=yes root@VPS_IP
如果仍失败,去阿里云控制台确认:
- 这把 key 是否绑定到当前实例。
- 是否应该用密码登录。
- 是否需要重置 root 密码。
从 VPS 连 127.0.0.1:2222 失败
先确认办公室 Fedora 上反向通道还在:
tmux ls
tmux attach -t vps-tunnel
如果通道断了,重新运行第 4 步的反向 SSH 命令。
remote port forwarding failed for listen port 2222
说明 VPS 上的 2222 已经被占用。
可以换一个端口,例如 2223:
办公室 Fedora 上:
ssh -N -R 127.0.0.1:2223:localhost:22 root@VPS_IP
家里 Mac 连接时也改成:
ssh -J root@VPS_IP -p 2223 FEDORA_USER@127.0.0.1
办公室 Fedora 重启后家里连不上
tmux 里的通道不会跨重启自动恢复。需要重新登录办公室 Fedora 并启动通道。
以后可以进一步配置 autossh 或 systemd,让办公室 Fedora 开机后自动连 VPS。
安全注意事项
- 不要把单位服务器 SSH 直接暴露到公网。
- 反向端口使用
127.0.0.1:2222,不要写成0.0.0.0:2222。 - VPS 的
2222不需要在阿里云防火墙里开放。 - 尽量使用 SSH 密钥登录,少用密码。
- 不要把 Mac 的私钥随便复制到多台机器。更好的方式是在办公室 Fedora 上单独生成一把访问 VPS 的密钥。
- 确认这种远程访问方式符合单位规定。
推荐的日常使用顺序
在办公室Linux上长期保持:
tmux attach -t vps-tunnel
如果没有这个会话,就重新创建:
tmux new -s vps-tunnel
ssh -N -R 127.0.0.1:2222:localhost:22 root@VPS_IP
在家里:
ssh office-remote
进入办公室 Fedora 后:
ssh SERVER_USER@SERVER_IP