以根用户身份连接到 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. In the Google Cloud console, activate Cloud Shell.

    Activate Cloud Shell

    At the bottom of the Google 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:虚拟机的名称

第三方工具

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

问题排查

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

后续步骤