借助静态IP VPS从动态IP家庭PC远程访问防火墙后工作PC的方案及安全性咨询
借助静态IP VPS从动态IP家庭PC远程访问防火墙后工作PC的方案及安全性咨询
当然可以实现!这种跨防火墙、动态IP场景的远程访问需求,用反向SSH隧道就能完美解决,正好适配你现有三台Linux机器的配置。我给你详细讲实现步骤和安全注意事项:
一、先在工作PC上建立到VPS的持久反向隧道
因为工作PC在公司防火墙后,主动发起出站连接到VPS一般是不受限制的(只要公司没禁SSH出站)。我们要把工作PC的SSH端口转发到VPS上的一个端口,这样后续就能通过VPS间接访问工作PC:
基础反向隧道命令
在工作PC上执行这条命令,把工作PC的22端口(默认SSH端口)转发到VPS的2222端口:ssh -fN -R 2222:localhost:22 your_vps_username@vps_static_ip参数解释:
-f:让SSH在后台运行-N:不执行远程命令,只建立隧道-R:反向转发,意思是VPS的2222端口收到的请求,会转发到工作PC的本地22端口
让隧道持久化(避免断连后手动重连)
普通SSH隧道可能会因为网络波动断开,推荐用autossh工具自动维持隧道:- 先在工作PC上安装autossh:
sudo apt install autossh(Debian/Ubuntu)或sudo dnf install autossh(RHEL/CentOS) - 执行持久化隧道命令:
autossh -M 20000 -fN -R 2222:localhost:22 your_vps_username@vps_static_ip-M 20000指定一个用于监测隧道状态的端口(只要VPS上没被占用即可,不用开放给公网),autossh会定期检测,隧道断了就自动重连。
- 先在工作PC上安装autossh:
二、回家后从家庭PC访问工作PC的方法
有两种方式,选你觉得方便的:
两步跳转法
- 第一步,从家庭PC SSH登录到VPS:
ssh your_vps_username@vps_static_ip - 第二步,在VPS上通过反向隧道连接工作PC:
这里的ssh your_workpc_username@localhost -p 2222localhost其实指向VPS的2222端口,会自动转发到工作PC的22端口,相当于直接连工作PC。
- 第一步,从家庭PC SSH登录到VPS:
一步跳转法(更高效)
用SSH的-J跳转参数,直接从家庭PC通过VPS连工作PC:ssh -J your_vps_username@vps_static_ip your_workpc_username@localhost -p 2222
三、安全性关键注意事项
既然涉及远程访问,安全绝对不能马虎,这几点一定要做到:
全机器禁用SSH密码登录:三台机器都改用SSH密钥登录,彻底杜绝暴力破解风险。
- 生成密钥对:在本地机器执行
ssh-keygen(一路回车即可,不用设密码更方便,但如果要更安全可以设密钥密码) - 把公钥复制到目标机器:
ssh-copy-id username@target_ip - 修改
/etc/ssh/sshd_config,设置PasswordAuthentication no,然后重启SSHD服务:sudo systemctl restart sshd
- 生成密钥对:在本地机器执行
限制VPS的SSH暴露面:
- 如果你知道工作PC的固定出站IP,可以在VPS的防火墙(比如ufw)里只允许这个IP访问SSH端口,减少被扫描的概率;
- 安装
fail2ban工具,它会自动封禁多次登录失败的IP,有效抵御暴力破解:sudo apt install fail2ban,默认配置就够用。
修改默认SSH端口:把三台机器的SSH默认22端口改成非标准端口(比如2200),在
/etc/ssh/sshd_config里修改Port 2200,重启SSHD后别忘了在防火墙开放新端口,能大幅降低被自动化扫描的几率。隧道本身的安全性:SSH隧道全程加密,传输过程中的数据不会被窃听或篡改,这点可以放心。
额外注意点
- 确认工作PC的本地防火墙允许SSH访问(默认是允许的,但如果改过规则要检查);
- VPS上的转发端口(比如2222)不需要开放给公网,因为我们是从VPS本地访问这个端口,只要VPS的本地防火墙允许即可;
- 家庭PC是动态IP没关系,因为是家庭PC主动连VPS,只要能上网就能访问VPS,不受动态IP影响。
备注:内容来源于stack exchange,提问作者bliako
相关产品推荐
相关产品推荐

