调整GCP VM磁盘容量后出现"Permission denied (publickey)"错误,求助恢复服务器访问与磁盘数据
调整GCP VM磁盘容量后出现"Permission denied (publickey)"错误,求助恢复服务器访问与磁盘数据
别着急,我来帮你一步步解决这个问题,先把数据保住是关键!下面分两种情况给你可行的方案:
一、先尝试通过串行控制台直接登录VM(绕开SSH密钥限制)
这是最直接的方式,能跳过SSH问题直接进入系统:
- 打开GCP控制台,找到你的VM实例,点击顶部的「编辑」按钮
- 下拉找到「启用串行控制台连接」选项,勾选后点击底部「保存」
- 回到实例详情页,点击「连接」按钮的下拉菜单,选择「连接到串行端口」
- 打开串行控制台窗口后按几次Enter键,输入你的VM用户名(比如默认的
ubuntu、centos或者你自己设置的用户名) - 如果提示需要密码但你之前没设置过,可以尝试输入
sudo su -(如果之前允许无密码sudo的话)切换到root,然后用passwd 你的用户名设置密码,之后就能用密码登录了
如果成功进入系统,接下来修复SSH问题:
- 检查用户目录下的SSH密钥文件权限是否正确:
确保ls -ld ~/.ssh ls -l ~/.ssh/authorized_keys.ssh目录权限是700,authorized_keys文件权限是600,不对的话就修改:chmod 700 ~/.ssh chmod 600 ~/.ssh/authorized_keys - 打开SSH服务配置文件
/etc/ssh/sshd_config,确认PubkeyAuthentication yes没有被注释;如果需要临时用密码登录,也可以把PasswordAuthentication no改成yes,保存后重启SSH服务:
这样应该就能正常用SSH登录了sudo systemctl restart sshd
二、如果串行控制台也无法登录,直接挂载磁盘到临时VM恢复数据
如果第一种方法行不通,我们可以把故障磁盘挂载到新的临时VM上,直接访问数据:
- 先停止你的故障VM实例(在GCP控制台实例页面点击「停止」)
- 在实例的「磁盘」标签页,找到故障磁盘,点击「分离」注意不要删除磁盘!
- 创建一个新的临时VM实例(选择和故障VM同区域、同操作系统的镜像,配置不用太高,能正常运行即可)
- 临时VM创建好后进入「编辑」页面,下拉到「附加磁盘」,点击「添加磁盘」,选择刚才分离的故障磁盘,保存设置
- 登录临时VM,先查看磁盘设备路径:
你会看到一个新的磁盘(比如lsblk/dev/sdb,对应分区是/dev/sdb1) - 创建挂载点并挂载磁盘:
如果挂载失败,先尝试修复文件系统:sudo mkdir /mnt/recovery sudo mount /dev/sdb1 /mnt/recoverysudo fsck /dev/sdb1 - 现在你可以直接访问
/mnt/recovery目录,里面就是故障磁盘的所有数据,先把重要的实验数据复制到安全位置(比如临时VM磁盘或GCP云存储桶) - 之后还可以检查故障磁盘里的SSH配置文件(
/mnt/recovery/etc/ssh/sshd_config)或用户密钥文件(/mnt/recovery/home/你的用户名/.ssh/authorized_keys),找出问题后修复,再把磁盘挂载回原VM
最后提醒下,问题解决后一定要给VM磁盘创建快照备份,GCP的快照功能很方便,定期备份能避免这种紧急情况!
备注:内容来源于stack exchange,提问作者user1085844
相关产品推荐
相关产品推荐

