以根用户身份连接到 Linux 虚拟机


本文档介绍如何以根用户身份连接到 Linux 虚拟机 (VM) 实例,以在虚拟机上启用超级用户权限。默认情况下,基于公共映像构建的 Compute Engine 虚拟机以及大多数常见操作系统都不允许使用密码通过 SSH 以根用户身份登录。

以根用户身份连接到虚拟机的替代方案是通过 sudo 运行命令,这才是我们建议的方法,而不要启用以根用户身份登录。

支持的操作系统

Compute Engine 上提供的所有公共 Linux 映像都支持这些连接方法。对于 Fedora CoreOS,您必须先设置 SSH 访问,然后才能使用这些方法。

启用以根用户身份登录

默认情况下,Compute Engine 虚拟机会将 /etc/ssh/sshd_config SSH 配置文件中的 PermitRootLogin 参数设置为 prohibit-passwordno。按照以下针对虚拟机的说明启用以根用户身份登录:

OS Login 虚拟机

通过执行以下操作来启用以根用户身份登录:

  1. 创建 SSH 密钥。复制 SSH 公钥以供稍后使用。

  2. 像往常一样连接到虚拟机

  3. 通过运行以下命令,在 /etc/ssh/sshd_config 文件中将 PermitRootLogin no 更改为 PermitRootLogin prohibit-password

    sudo sed -i 's/PermitRootLogin no/PermitRootLogin prohibit-password/g' /etc/ssh/sshd_config
    
  4. 使用以下命令创建 /root/.ssh 目录:

    sudo mkdir /root/.ssh
    
  5. 通过运行以下命令在 .ssh 目录中设置权限:

    sudo chmod 700 /root/.ssh
    
  6. 通过运行以下命令来创建 authorized_keys 文件:

    sudo touch /root/.ssh/authorized_keys
    
  7. 运行以下命令,设置 authorized_keys 文件的权限:

    sudo chmod 600 /root/.ssh/authorized_keys
    
  8. 将 SSH 公钥粘贴到 /root/.ssh/authorized_keys 文件中。

  9. 通过重启虚拟机或运行虚拟机操作系统的重启命令来重启 sshd 守护进程。等待虚拟机重新启动,然后以根用户身份进行连接。

非 OS Login 虚拟机

通过执行以下操作来启用以根用户身份登录:

  1. 像往常一样连接到虚拟机

  2. 通过运行以下命令,在 /etc/ssh/sshd_config 文件中将 PermitRootLogin no 更改为 PermitRootLogin prohibit-password

    sudo sed -i 's/PermitRootLogin no/PermitRootLogin prohibit-password/g' /etc/ssh/sshd_config
    
  3. 通过重启虚拟机或运行虚拟机操作系统的重启命令来重启 sshd 守护进程。等待虚拟机重新启动,然后以根用户身份进行连接。

以根用户身份连接

启用以根用户身份登录后,以根用户身份连接到虚拟机。如果您要连接到启用了 OS Login 的虚拟机,则必须使用第三方工具而不是 gcloud CLI。

gcloud

注意:如果您连接的虚拟机启用了 OS Login,则必须使用第三方工具才能以根用户身份进行连接。

使用 gcloud compute ssh 命令并在虚拟机名称前指定 root@,以根用户身份连接到虚拟机:

  1. 在 Google Cloud 控制台中,激活 Cloud Shell。

    激活 Cloud Shell

    Cloud Shell 会话随即会在 Google Cloud 控制台的底部启动,并显示命令行提示符。Cloud Shell 是一个已安装 Google Cloud CLI 且已为当前项目设置值的 Shell 环境。该会话可能需要几秒钟时间来完成初始化。

  2. 通过运行以下命令连接到虚拟机:

    gcloud compute ssh \
        --project=PROJECT_ID \
        --zone=ZONE \
        root@VM_NAME
    

    请替换以下内容:

    • PROJECT_ID:包含虚拟机的项目 ID。
    • ZONE:虚拟机所在区域的名称
    • VM_NAME:虚拟机的名称

第三方工具

按照针对虚拟机的说明,以根用户身份连接到虚拟机:

问题排查

如需查找诊断和解决失败的 SSH 连接问题的方法,请参阅排查 SSH 问题

后续步骤