You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何制作支持SSH远程连接的Ubuntu救援USB,以异地修复无法启动的主机?

如何制作支持SSH远程连接的Ubuntu救援USB,以异地修复无法启动的主机?

这种异地救砖的情况确实挺棘手的,不过你的思路完全找对了方向!我来给你一套可落地的步骤,帮你远程搞定这台Ubuntu主机:

一、选对基础镜像:用Ubuntu Server Live镜像更省心

别用传统的救援CD了,直接用Ubuntu Server的最新LTS Live镜像(比如22.04)——它默认自带SSH服务,还支持cloud-init工具,能帮我们预先注入SSH密钥和配置,完全不用手动修改系统文件。

二、制作带自动SSH配置的救援U盘

我们用cloud-init来实现开机即开启SSH+自动导入你的公钥,步骤如下:

  1. 准备U盘:找一个至少8G的U盘,先格式化(注意备份数据)。我们需要给它分两个分区:

    • 第一个分区:写入Ubuntu Server Live镜像(用dd工具或者Etcher这类可视化工具都可以)
    • 第二个分区:格式化为FAT32,命名为cidata(这个名字是硬性要求,cloud-init会自动识别)
  2. 创建cloud-init配置文件:在cidata分区里新建两个文件:

    • user-data(核心配置,复制下面内容并替换你的公钥):
      #cloud-config
      users:
        - name: rescueadmin
          ssh_authorized_keys:
            - ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQ... 这里替换成你本地机器的~/.ssh/id_rsa.pub内容
          sudo: ['ALL=(ALL) NOPASSWD:ALL']
          groups: sudo
          shell: /bin/bash
      ssh_pwauth: false  # 禁用密码登录,只允许密钥登录更安全
      disable_root: false
      network:
        version: 2
        ethernets:
          all:
            dhcp4: true  # 自动获取IP,适合大多数家庭网络
      
    • meta-data(可以是空文件,或者填点标识信息):
      instance-id: rescue-001
      local-hostname: rescue-box
      
  3. 验证配置:确保两个文件没有拼写错误,尤其是cidata分区的名字和user-data里的公钥格式。

三、指导你的朋友操作

  1. 让他把做好的U盘插到故障主机上,开机后按对应按键(一般是F12、F2或Del)进入BIOS,选择从U盘启动。
  2. 主机启动后,cloud-init会自动完成配置:创建用户、导入你的公钥、启动SSH服务——这个过程大概需要1-2分钟,不用他做任何操作。
  3. 让他登录家里的路由器后台,找到这台主机的内网IP(可以看DHCP客户端列表),然后做端口转发:把路由器的某个公网端口(比如2222)转发到主机的22端口。
  4. 最后让他告诉你路由器的公网IP和转发的端口,你就可以用SSH连接了:
    ssh rescueadmin@朋友的公网IP -p 2222
    

四、额外小贴士

  • 如果主机所在的网络没有DHCP,你可以在user-data里配置静态IP,替换掉上面的network部分即可。
  • 连接后你可以用fsck检查磁盘、挂载系统分区修复启动项,或者做任何控制台能完成的救援操作。
  • 用完记得让朋友关掉端口转发,避免安全风险。

备注:内容来源于stack exchange,提问作者Justin Finkelstein

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.22 10:09:31