【问题标题】:Google cloud platform, vm instance's ssh permission谷歌云平台,vm实例的ssh权限
【发布时间】:2018-12-10 04:49:26
【问题描述】:

在我的谷歌云平台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 command 或serial console。

我知道我需要将目录的权限改回644 或400,但我不知道如何访问 ssh。

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

任何帮助将不胜感激!

【问题讨论】:

    标签: ssh permissions google-cloud-platform google-compute-engine


    【解决方案1】:

    这个问题可以通过将启动盘附加到另一个实例来解决。

    第 1 步:

    因 SSH 问题关闭您的实例。登录到谷歌云控制台。转到 Compute Engine -> VM 实例。单击您的实例并记下“启动磁盘”名称。这将是“启动磁盘和本地磁盘”下的第一个磁盘。

    第 2 步:

    在执行任何进一步操作之前创建启动磁盘的快照。 虽然仍在 Compute Engine -> 磁盘中。点击你的启动盘。点击“创建快照”。

    第 3 步:

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

    第 4 步:

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

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

    确保之前的命令没有报错。

    第 5 步:

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

    确保修复实例正在运行。有时,如果多个磁盘可引导,实例可能会对从哪个磁盘引导感到困惑。

    转到 Compute Engine -> 虚拟机实例。单击您的实例。单击编辑。在“其他磁盘”下单击“添加项目”。对于名称,输入/选择您从损坏的实例中分离的磁盘。点击保存。

    第 6 步:

    SSH 连接到您的新实例并连接两个磁盘。

    第 7 步:

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

    • 成为超级用户。执行sudo -s
    • 执行df。确保 /dev/sdb1 未挂载。
    • 为挂载点创建一个目录: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_config 和 sshd_config 应该仍然是 644。如果不修复它们。
    • 关闭修复系统:halt

    第 8 步:

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

    注意:要重新连接启动盘,您必须使用带有 -boot 选项的 gcloud。

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

    【讨论】:

    • 我花了大约 1 天的时间来诊断问题并尝试解决它。如果您在同一条船上,请阅读@johnhanley 的答案并转到以下链接:groups.google.com/forum/#!topic/gce-discussion/m3pJ1-MlVbA。我能够解决这个问题。
    • 还要确保您先保留您的外部 IP 地址,以便您可以将相同的 IP 地址分配给新的 vm 实例!
    猜你喜欢
    • 2019-01-07
    • 1970-01-01
    • 1970-01-01
    • 2018-09-04
    • 1970-01-01
    • 2016-08-23
    • 2015-05-02
    • 2020-06-02
    • 1970-01-01
    相关资源
    最近更新 更多