logo NodeSeekbeta

Scaleway小小鸡dd后丢失sshkey极限救援实录

楔子

这两天入了一个Scaleway巴黎的1C1G3G IPv6-only小小鸡,开机的时候只能选10G盘,对于什么都干不了的玩具鸡有点贵,就按ns大佬的帖子改成了3G盘,但在dd完开机后,可以连接上但是用sshkey却无法登录。ns和隔壁搜了下,说是要删除重建。这他哥的怎么能行,有问题必须解决。

想起来dd的时候是通过救援系统操作的,既然是救援系统是不是像winpe一样能操作系统文件,把公钥放进去,有想法就试试吧。

极限救援

进入救援模式

关机-->进入advanced-settings-->选择Use rescue image(救援系统)--> 保存-->开机


挂载系统盘

  1. 使用lsblk命令显示所有块设备信息

lsblk指令主要用于展示块设备(block devices)的信息,包括磁盘、分区和挂载点等。

root@scw-1c1g:~# lsblk
NAME    MAJ:MIN RM   SIZE RO TYPE MOUNTPOINTS
loop0     7:0    0  63.4M  1 loop /snap/core20/1974
loop1     7:1    0 111.9M  1 loop /snap/lxd/24322
loop2     7:2    0  53.3M  1 loop /snap/snapd/19457
sda       8:0    0   9.3G  1 disk 
├─sda1    8:1    0   3.1G  1 part /media/root-ro
├─sda14   8:14   0     4M  1 part 
└─sda15   8:15   0   106M  1 part /boot/efi
vda     252:0    0   2.8G  0 disk 
├─vda1  252:1    0   2.7G  0 part #这个就是我们的系统分区
├─vda14 252:14   0     3M  0 part 
└─vda15 252:15   0   124M  0 part
  1. 挂载系统分区到本地(救援系统)
root@scw-1c1g:~# mkdir /mnt/vda1 
root@scw-1c1g:~# mount /dev/vda1 /mnt/vda1 
root@scw-1c1g:~# cd /mnt/vda1
root@scw-1c1g:/mnt/vda1# ls # 如果输出如下内容就是挂载成功了
bin   dev  home  lib32  libx32      media  opt   root  sbin  sys  usr
boot  etc  lib   lib64  lost+found  mnt    proc  run   srv   tmp  var

写入sshkey

  1. 进入系统分区里的个人目录
root@scw-1c1g:/mnt/vda1# cd home/debian
root@scw-1c1g:/mnt/vda1/home/debian# ls -al
total 24
drwxr-xr-x 3 ubuntu ubuntu 4096 Nov 17 06:21 .
drwxr-xr-x 3 root   root   4096 Nov 17 06:21 ..
-rw-r--r-- 1 ubuntu ubuntu  220 Apr 23  2023 .bash_logout
-rw-r--r-- 1 ubuntu ubuntu 3526 Apr 23  2023 .bashrc
-rw-r--r-- 1 ubuntu ubuntu  807 Apr 23  2023 .profile
drwx------ 2 ubuntu ubuntu 4096 Nov 17 07:44 .ssh # 这就是存放authorized_keys的位置
  1. 看一下authorized_keys 存不存在,并且看下里边的内容
root@scw-1c1g:/mnt/vda1/home/debian# cd .ssh
root@scw-1c1g:/mnt/vda1/home/debian/.ssh# ls
authorized_keys # 输出这个说明是存在的
root@scw-1c1g:/mnt/vda1/home/debian/.ssh# cat authorized_keys
# 什么都没有输出,说明这文件是空的
  1. 把我们的sshkey写进authorized_keys文件,并保存

这里我用的vim编辑器,你可以用你喜欢的任何方法把sshkey写入到这个文件

root@scw-1c1g:/mnt/vda1/home/debian/.ssh# vim authorized_keys

卸载分区

  1. 卸载挂载的分区
root@scw-1c1g:/mnt/vda1/home/debian/.ssh# cd ~
root@scw-1c1g:~# umount /mnt/vda1
umount: /mnt/vda1: target is busy.

额,这是啥?我忙了半天,它怎么比我还忙!

  1. 解决target is busy的占用问题

lsof命令看一下是谁在占用它

root@scw-1c1g:~# lsof /mnt/vda1
COMMAND  PID USER   FD   TYPE DEVICE SIZE/OFF  NODE NAME
bash    1619 root  cwd    DIR  252,1     4096 25936 /mnt/vda1/home/debian/.ssh

是这个进程ID为1619的家伙占用的,既然找到它了就kill掉吧

root@scw-1c1g:~# kill 1619
root@scw-1c1g:~# umount /mnt/vda1
umount: /mnt/vda1: target is busy.

他哥的,它还在忙...
那就莫怪我狠心了,强制kill

root@scw-1c1g:~# kill -9 1619
root@scw-1c1g:~# umount /mnt/vda1

总算卸载掉了

结尾

关机并重新进入系统

关机-->切换回Use local boot,并将Boot volume 选择为大小为3G的卷-->开机

12
  • 不错 终于看见一篇稍微有技术含量的文章了

  • @dabao #0 我也去折腾一下

  • @markfeng #1 这个以前有人出过

  • @xbbazt #3 没你写的好 我也去折腾一下 弄好了发帖

  • @xbbazt #3 我怎么没找到,进不去系统,浪费了一天的o币

  • @markfeng #1 ac24

  • 我猜你在找这个链接

  • @xbbazt #7 就是看这个帖子改小的,然后出现了开机没有sshkey的问题

  • @dabao #8 我记得可以呀我还按着教程弄过
    星尘还能改1g那个我没玩过

  • DD完是debian+key登陆

12

你好啊,陌生人!

我的朋友,看起来你是新来的,如果想参与到讨论中,点击下面的按钮!

📈用户数目📈

目前论坛共有9831位seeker

🎉欢迎新用户🎉