如何配置Ubuntu系统间的SSH远程连接,以应对GUI无法访问的故障排查场景
我特别理解你这种远程折腾驱动、CUDA这类工具后,怕GUI崩了连不上的焦虑——毕竟AnyDesk这类工具全靠图形界面撑着,一旦系统起不来就彻底抓瞎了。SSH确实是这种应急场景下的救命稻草,我来帮你把整个配置流程捋清楚,补上你可能漏掉的关键步骤:
第一步:完善SSH服务基础配置(你已经完成大半啦)
你已经安装并启动了OpenSSH服务,本地ssh 127.0.0.1能成功连接,说明服务本身是正常的。这里再加个关键操作:设置SSH开机自启,确保系统重启后(比如装驱动后重启)SSH能自动运行,不用手动启动:sudo systemctl enable ssh第二步:放行Ubuntu本地防火墙的SSH端口
Ubuntu默认启用ufw防火墙,如果没放行SSH端口,外部连进来会被拦截。执行以下命令开放默认的SSH端口(22):sudo ufw allow ssh # 或者更明确地指定TCP协议 sudo ufw allow 22/tcp执行
sudo ufw status确认规则已经生效,看到22/tcp处于ALLOW状态就没问题了。第三步:配置路由器端口转发(内网机器必做)
你用curl icanhazip.com拿到的公网IP其实是你家里路由器的IP,不是Ubuntu机器的直接公网IP。要让外部网络能通过这个公网IP访问到内网的Ubuntu,需要在路由器里设置端口转发:- 先查到Ubuntu的内网IP:执行
ip a,找到类似192.168.1.105这样的局域网地址(一般在eth0或wlan0接口下)。 - 登录路由器管理后台(通常在浏览器输入
192.168.1.1或192.168.0.1,账号密码在路由器背面)。 - 找到「端口转发」「虚拟服务器」这类选项,添加一条规则:
- 外部端口:填22(或者自定义一个非默认端口,比如2222,更安全)
- 内部IP:填刚才查到的Ubuntu内网IP
- 内部端口:填22(SSH默认端口)
- 协议:选择TCP
- 保存规则,重启路由器生效。
- 先查到Ubuntu的内网IP:执行
第四步:测试远程SSH连接
找一台不在同一局域网的设备(比如用手机流量的电脑、朋友的机器),执行以下命令尝试连接:ssh 你的Ubuntu用户名@你的公网IP # 如果改了自定义端口,就加-p参数 ssh -p 2222 你的Ubuntu用户名@你的公网IP输入Ubuntu用户的密码后能成功登录,就说明配置完成了。
可选进阶优化(提升安全性)
如果担心默认端口被暴力破解,可以改SSH默认端口:编辑/etc/ssh/sshd_config文件,找到Port 22改成自定义端口(比如2222),然后重启SSH服务sudo systemctl restart ssh,同时记得在UFW和路由器里同步更新端口规则。
另外,禁用密码登录改用密钥对认证会更安全,不过应急场景下先保证能连上,之后再慢慢优化也没问题。
备注:内容来源于stack exchange,提问作者Hossein




