You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何配置Ubuntu系统间的SSH远程连接,以应对GUI无法访问的故障排查场景

如何配置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,需要在路由器里设置端口转发

    1. 先查到Ubuntu的内网IP:执行ip a,找到类似192.168.1.105这样的局域网地址(一般在eth0wlan0接口下)。
    2. 登录路由器管理后台(通常在浏览器输入192.168.1.1192.168.0.1,账号密码在路由器背面)。
    3. 找到「端口转发」「虚拟服务器」这类选项,添加一条规则:
      • 外部端口:填22(或者自定义一个非默认端口,比如2222,更安全)
      • 内部IP:填刚才查到的Ubuntu内网IP
      • 内部端口:填22(SSH默认端口)
      • 协议:选择TCP
    4. 保存规则,重启路由器生效。
  • 第四步:测试远程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

火山引擎 最新活动