首页 文章

谷歌 Cloud 平台,vm实例的ssh权限

提问于
浏览
0

在我的Google Cloud Platform vm实例中,我意外地更改了 /etc/ssh 的权限,现在我无法使用ssh和filezilla访问它 .

日志如下:

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@         WARNING: UNPROTECTED PRIVATE KEY FILE!          @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions 0660 for '/etc/ssh/ssh_host_ed25519_key' are too open.
It is required that your private key files are NOT accessible by others.
This private key will be ignored.
key_load_private: bad permissions

我唯一可以访问的是 gcloud commandserial console .

我知道我需要将目录的权限更改回 644400 ,但我不知道如何无法访问ssh .

如何在不访问ssh的情况下更改权限?

任何帮助将非常感激!

1 回答

  • 2

    将引导磁盘附加到另一个实例可以解决此问题 .

    STEP 1:

    使用SSH问题关闭您的实例 . 登录Google Cloud 端控制台 . 转到计算引擎 - > VM实例 . 单击您的实例并记下“引导磁盘”名称 . 这将是“引导磁盘和本地磁盘”下的第一个磁盘 .

    STEP 2:

    在进一步操作之前,请创建引导磁盘的快照 . 还在Compute Engine - > Disk中 . 单击您的启动盘 . 点击“CREATE SNAPSHOT” .

    STEP 3:

    在同一区域中创建新实例 . 微实例将起作用 .

    STEP 4:

    打开Cloud Shell提示符(如果设置了gcloud,这也适用于您的桌面) . 执行此命令 . 将NAME替换为您的实例名称(已损坏的SSH系统),将DISK替换为引导磁盘名称,将ZONE替换为系统所在的区域:

    gcloud compute instance detach-disk NAME --disk=DISK --zone=ZONE
    

    确保上一个命令未报告错误 .

    STEP 5:

    现在我们将此磁盘附加到您创建的新实例 .

    确保修复实例正在运行 . 如果多个磁盘可引导,有时实例可能会混淆要从哪个磁盘引导 .

    转到计算引擎 - > VM实例 . 单击您的实例 . 单击编辑 . 在“其他磁盘”下,单击“添加项” . 对于名称,请输入/选择与损坏的实例分离的磁盘 . 单击保存 .

    STEP 6:

    在连接两个磁盘的情况下SSH连接到新实例 .

    STEP 7:

    请仔细遵循这些步骤 . 我们将第二个磁盘挂载到根文件系统 . 然后更改/ mnt / repair / etc / ssh目录和内容的权限 .

    • 成为超级用户 . 执行 sudo -s

    • 执行 df . 确保未安装 /dev/sdb1 .

    • 为mountpoint创建一个目录: mkdir /mnt/repair

    • 挂载第二个磁盘: mount /dev/sdb1 /mnt/repair

    • 更改目录: cd /mnt/repair/etc

    • 设置 /etc/ssh 的权限(注意此处的相对路径): chmod 755 ssh

    • 更改目录: cd ssh

    • 执行: chmod 644 *.pub

    • 执行: chmod 400 *key

    • ssh_configsshd_config 应该仍然是644.如果没有修复它们 .

    • 关闭维修系统: halt

    STEP 8:

    现在反转该过程并将第二个磁盘移回原始实例并重新连接 . 启动您的实例并通过SSH连接 .

    注意:要重新连接引导磁盘,必须使用带-boot选项的gcloud .

    gcloud beta compute instances attach-disk NAME --disk=DISK --zone=ZONE --boot
    

相关问题