为服务器安装程序预配置 ssh 密码

为服务器安装程序预配置 ssh 密码

我正在尝试在可用的 HDMI 端口损坏的设备上安装 Ubuntu Server,因此无法连接任何显示器。我在文档中读到 (这里) 可以通过 SSH 连接到安装程序。我设法在我的设备上启动安装程序,并找到了具有相应开放 ssh 端口的 IP 地址。问题是,我不知道要使用的密码,如果我理解正确的话,我也无法从屏幕上读取密码。一些在线资源表明可能如此,ubuntu但事实并非如此。

有没有办法可以预先设置密钥/密码或者修改它?

我已经找到了关于几乎相同问题的问题,但它没有包含我可以使用的答案。

答案1

如果您使用“live-server”安装程序(下位性) 则默认设置将创建一个带有installer随机密码的用户。该installer用户可用于通过 SSH 访问安装程序 TUI。

取决于版本下位性随机生成的密码将打印到屏幕上或在“帮助”菜单下找到。

用户是在安装程序启动时installer创建的。通过更改配置,可以为用户设置密码或将 SSH 密钥添加为已知内容。有几种配置方法。cloud-initcloud-initinstallercloud-init

使用自动安装

我已经能够installer使用autoinstall文件设置密码。该文件具有如下内容,用于设置密码和设置 SSH 密钥。

#cloud-config
autoinstall:
...
# set password to r00tme
chpasswd:
    expire: false
    list:
        - installer:$6$.c38i4RIqZeF4RtR$hRu2RFep/.6DziHLnRqGOEImb15JT2i.K/F9ojBkK/79zqY30Ll2/xx6QClQfdelLe.ZjpeVYfE8xBBcyLspa/
ssh_authorized_keys:
    - ssh-rsa FILLINYOUROWNKEYHERE 

修改 ISO

我没有这样做过,但你可以尝试修改 ISO。installer用户设置在/etc/cloud.cfg文件。您可以修改此文件来定义密码或 SSH 密钥。

也可以看看

答案2

确实可以制作修改后的服务器安装程序磁盘。以下步骤基于Ubuntu LiveCD 定制说明和这个回答。或者你可以从这个 bash 脚本并根据您的需要进行修改。

  1. 下载ubuntu-22.04.3-live-server-amd64.iso并安装:

    mkdir ub && mount ubuntu-22.04.3-live-server-amd64.iso ub
    
  2. 使用相关安装程序信息挂载 squash 文件系统并复制它:

    mkdir sqfs && mount ub/casper/ubuntu-server-minimal.ubuntu-server.installer.squashfs sqfs
    find sqfs -xdev -print0 | cpio -pa0V nsqfs
    
  3. 使用您喜欢的编辑器编辑该cloud.cfg文件,例如vi nsqfs/sqfs/etc/cloud/cloud.cfg获取密码,并在此处添加您的 ssh 密钥:

    default_user:
      name: installer
      lock_passwd: false
      ... don't other stuff ...
      # password r00tme
      passwd: $6$.c38i4RIqZeF4RtR$hRu2RFep/.6DziHLnRqGOEImb15JT2i.K/F9ojBkK/79zqY30Ll2/xx6QClQfdelLe.ZjpeVYfE8xBBcyLspa/
      ssh_authorized_keys:
        - ssh-rsa HERE_YOUR_SSH_KEY
    
  4. 将已安装的安装程序磁盘(只读)复制ubub_mod

    mkdir ub_mod && cd ub && tar cf - . | (cd ../ub_mod; tar xfp -) && cd ..
    
  5. 压缩已修改的文件:

    cd nsqfs
    mksquashfs sqfs ../ub_mod/casper/ubuntu-server-minimal.ubuntu-server.installer.squash
    cd ..
    
  6. 更新尺寸文件:

    printf $(du -sx --block-size=1 nsqfs/sqfs | cut -f1) > ub_mod/casper/ubuntu-server-minimal.ubuntu-server.installer.size
    
  7. 更改签名(不确定是否有必要),local-user用您自己的密钥替换密钥(用列出您的密钥gpg --list-secret-keys):

    rm ub_mod/casper/ubuntu-server-minimal.ubuntu-server.installer.squashfs.gpg
    gpg --local-user 2661D59A01F3022FAFB75644F440B26DF14188A2 --output ub_mod/casper/ubuntu-server-minimal.ubuntu-server.installer.squashfs.gpg --detach-sign ub_mod/casper/ubuntu-server-minimal.ubuntu-server.installer.squashfs
    
  8. 重新计算 md5 校验和:

    cd ub_mod
    rm md5sum.txt
    find -type f -print0 | xargs -0 md5sum | grep -v isolinux/boot.cat | tee md5sum.txt
    cd ..
    
  9. 从原始 Ubuntu 安装程序磁盘中提取 MBR 和 EFI 分区。您需要根据命令的输出调整下面的count和字段skipfdisk

    fdisk -l ubuntu-22.04.3-live-server-amd64.iso
    dd bs=1 count=446 if=ubuntu-22.04.3-live-server-amd64.iso of=mbr.img
    dd bs=512 count=10068 skip=4156048 if=ubuntu-22.04.3-live-server-amd64.iso of=EFI.img
    
  10. 用于xorriso查找创建新启动盘所需的标志:

xorriso -indev ~ubuntu-22.04.3-live-server-amd64.iso -report_el_torito cmd

然后修改它们以引用 mbr 和 EFI。我的xorisso行最终看起来像这样(复制到 bash 文件中以进行编辑/运行):

#!/bin/bash
xorriso -outdev hacked_installer.iso -map ub_mod / -- -volid 'Ubuntu-Server 22.04.3 LTS amd64' -volume_date uuid '2023081005062500' -boot_image grub grub2_mbr=mbr.img -boot_image any partition_table=on -boot_image any partition_cyl_align=off -boot_image any partition_offset=16 -boot_image any mbr_force_bootable=on -append_partition 2 28732ac11ff8d211ba4b00a0c93ec93b EFI.img -boot_image any appended_part_as=gpt -boot_image any iso_mbr_part_type=a2a0d0ebe5b9334487c068b6b72699c7 -boot_image any cat_path='/boot.catalog' -boot_image grub bin_path='/boot/grub/i386-pc/eltorito.img' -boot_image any platform_id=0x00 -boot_image any emul_type=no_emulation -boot_image any load_size=2048 -boot_image any boot_info_table=on -boot_image grub grub2_boot_info=on -boot_image any next -boot_image any efi_path='--interval:appended_partition_2_start_1039012s_size_10068d:all::' -boot_image any platform_id=0xef -boot_image any emul_type=no_emulation -boot_image any load_size=5154816

我唯一需要触及的字段是引用EFI.imgmbr.img

如果一切顺利,您现在应该有一个启动盘hacked_installer.iso,您可以使用 ssh 密钥登录

相关内容