误改/etc权限导致GCP实例SSH无法连接,如何恢复连接?
解决GCP实例因/etc权限错误导致SSH无法连接的问题
核心原因
执行chmod -R 777 /etc彻底破坏了/etc目录下所有文件和子目录的权限,包括SSH服务(sshd)依赖的配置文件、用户认证相关文件(如/etc/passwd、/etc/shadow)的权限,导致sshd无法正常启动或完成身份验证,进而拒绝SSH连接。
修复步骤
1. 启用并连接到实例的串行控制台
- 登录GCP控制台,找到目标VM实例进入详情页面
- 在远程访问区域,点击连接到串行控制台
- 若首次使用,需先启用串行端口:进入实例编辑页面,找到串行端口,勾选启用连接到串行端口,保存修改后再返回连接串行控制台
2. 在串行控制台中登录实例
- 控制台加载完成后按回车键,出现登录提示符
- 使用实例的系统用户(如默认
ubuntu/debian或自定义管理员用户)登录,输入用户名和密码;若未设置过密码,先在实例详情页点击设置密码完成配置后再登录
3. 修复/etc目录及关键文件权限
依次执行以下命令恢复权限:
- 恢复/etc目录基本权限:
sudo chmod 755 /etc - 修复用户认证相关文件权限:
sudo chmod 644 /etc/passwd sudo chmod 640 /etc/shadow sudo chmod 644 /etc/group sudo chmod 640 /etc/gshadow - 修复sshd配置文件及目录权限:
sudo chmod 644 /etc/ssh/sshd_config sudo chmod 755 /etc/ssh - 修复sudoers文件权限:
sudo chmod 440 /etc/sudoers sudo chmod 755 /etc/sudoers.d - 恢复其他关键子目录权限:
sudo chmod 755 /etc/systemd /etc/pam.d /etc/profile.d sudo chmod 644 /etc/pam.d/*
4. 重启sshd服务
sudo systemctl restart sshd
5. 验证SSH连接
关闭串行控制台,尝试通过Web控制台、gcloud CLI或VSCode重新建立SSH连接,确认问题解决。
6. 挂载磁盘的正确操作(补充)
当初你要实现磁盘自动挂载,正确操作应为:
- 执行
sudo blkid获取磁盘UUID - 使用
sudo nano /etc/fstab或sudo vi /etc/fstab编辑挂载配置(无需修改/etc目录权限) - 添加挂载条目,示例:
UUID=xxxx-xxxx /mnt/disks/mydisk ext4 defaults 0 2 - 执行
sudo mount -a测试挂载是否正常
内容的提问来源于stack exchange,提问作者JITHU PRAKASH
相关产品推荐
相关产品推荐

