本文档介绍如何以根用户身份连接到 Linux 虚拟机 (VM) 实例,以在虚拟机上启用超级用户权限。默认情况下,基于公共映像构建的 Compute Engine 虚拟机以及大多数常见操作系统都不允许使用密码通过 SSH 以根用户身份登录。
以根用户身份连接到虚拟机的替代方案是通过 sudo
运行命令,这才是我们建议的方法,而不要启用以根用户身份登录。
支持的操作系统
Compute Engine 上提供的所有公共 Linux 映像都支持这些连接方法。对于 Fedora CoreOS 映像,您必须先设置 SSH 访问,然后才能使用这些方法。
启用以根用户身份登录
默认情况下,Compute Engine 虚拟机会将 /etc/ssh/sshd_config
SSH 配置文件中的 PermitRootLogin
参数设置为 prohibit-password
或 no
。按照以下针对虚拟机的说明启用以根用户身份登录:
OS Login 虚拟机
通过执行以下操作来启用以根用户身份登录:
创建 SSH 密钥。复制 SSH 公钥以供稍后使用。
像往常一样连接到虚拟机。
通过运行以下命令,在
/etc/ssh/sshd_config
文件中将PermitRootLogin no
更改为PermitRootLogin prohibit-password
:sudo sed -i 's/PermitRootLogin no/PermitRootLogin prohibit-password/g' /etc/ssh/sshd_config
使用以下命令创建
/root/.ssh
目录:sudo mkdir /root/.ssh
通过运行以下命令在
.ssh
目录中设置权限:sudo chmod 700 /root/.ssh
通过运行以下命令来创建
authorized_keys
文件:sudo touch /root/.ssh/authorized_keys
运行以下命令,设置
authorized_keys
文件的权限:sudo chmod 600 /root/.ssh/authorized_keys
将 SSH 公钥粘贴到
/root/.ssh/authorized_keys
文件中。通过重启虚拟机或运行虚拟机操作系统的重启命令来重启
sshd
守护程序。等待虚拟机重新启动,然后以根用户身份进行连接。
非 OS Login 虚拟机
通过执行以下操作来启用以根用户身份登录:
像往常一样连接到虚拟机。
通过运行以下命令,在
/etc/ssh/sshd_config
文件中将PermitRootLogin no
更改为PermitRootLogin prohibit-password
:sudo sed -i 's/PermitRootLogin no/PermitRootLogin prohibit-password/g' /etc/ssh/sshd_config
通过重启虚拟机或运行虚拟机操作系统的重启命令来重启
sshd
守护程序。等待虚拟机重新启动,然后以根用户身份进行连接。
以根用户身份连接
启用以根用户身份登录后,以根用户身份连接到虚拟机。 如果您要连接到启用了 OS Login 的虚拟机,则必须使用第三方工具而不是 gcloud CLI。
gcloud
注意:如果您连接的虚拟机启用了 OS Login,则必须使用第三方工具才能以根用户身份进行连接。
使用 gcloud compute ssh
命令并在虚拟机名称前指定 root@
,以根用户身份连接到虚拟机:
-
In the Google Cloud console, 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.
通过运行以下命令连接到虚拟机:
gcloud compute ssh \ --project=PROJECT_ID \ --zone=ZONE \ root@VM_NAME
请替换以下内容:
PROJECT_ID
:包含虚拟机的项目 ID。ZONE
:虚拟机所在区域的名称VM_NAME
:虚拟机的名称
第三方工具
按照针对虚拟机的说明,以根用户身份连接到虚拟机:
OS Login 虚拟机
使用第三方工具进行连接,并指定以下内容:
- 私钥:与您添加到
authorized_keys
文件中的公钥相对应的私钥 - 用户名:用户名必须是
root
- 私钥:与您添加到
非 OS Login 虚拟机
为根用户创建 SSH 密钥。密钥的用户名必须是
root
。使用第三方工具进行连接,并指定以下内容:
私钥:根用户的私钥
用户名:用户名必须是
root
问题排查
如需查找诊断和解决失败的 SSH 连接问题的方法,请参阅排查 SSH 问题。
后续步骤
- 了解如何管理对虚拟机的访问权限。
- 了解如何将文件传输到虚拟机。
- 了解与 Linux 虚拟机的 SSH 连接在 Compute Engine 上的工作原理。