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

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

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

支持的操作系统

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

启用以根用户身份登录

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

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

  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 守护程序。等待虚拟机重新启动,然后以根用户身份进行连接。

以根用户身份连接

启用以根用户身份登录后,以根用户身份连接到虚拟机。

gcloud

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

  1. In the Trusted Cloud console, activate Cloud Shell.

    Activate Cloud Shell

    At the bottom of the Trusted Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.

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

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

    请替换以下内容:

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

第三方工具

  1. 为根用户创建 SSH 密钥。密钥的用户名必须是 root

  2. 将根用户的密钥添加到元数据

  3. 使用第三方工具进行连接,并指定以下内容:

    • 私钥:根用户的私钥

    • 用户名:用户名必须是 root

问题排查

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

后续步骤