部分Linux操作系统的ECS实例在设置登录名时,支持选择系统用户root或者普通用户ecs-user。本文将介绍两种不同的登录名以及登录名相关操作。
背景信息
如果您使用系统用户root登录Linux操作系统的ECS实例,则可以获取系统最高权限。该方式虽然便于您进行系统运维操作,但如果ECS实例被入侵,则会存在影响严重的数据安全风险。阿里云基于云服务器安全考虑,在部分Linux操作系统默认的系统用户root之外,提供了普通用户ecs-user作为Linux实例的登录名,并推荐您使用ecs-user用户登录实例。
说明 普通用户ecs-user登录ECS实例后,仍然具备系统管理员权限,但与系统用户root不同的是,ecs-user无法进行系统敏感操作。例如:使用systemctl命令重启服务、使用mount命令挂载云盘等。如果您必须进行系统敏感操作,则需要在待执行的命令前加上sudo命令进行提权。
镜像支持说明
支持ecs-user用户的镜像列表
当您选择以下镜像版本创建ECS实例时,支持设置普通用户ecs-user作为登录名。
- Ubuntu 18.04/20.04/22.04 64位
- Rocky Linux 8.6/8.7/9.0/9.1 64位
- OpenSUSE 15.4 64位
- Fedora 35 64位
- Debian 10.12/10.13/11.3/11.4/11.5 64位、11.6 64位 UEFI版
- CentOS 7.9 64位
- CentOS Stream 8/9 64位
- Anolis OS 7.9/8.2/8.4/8.6 64位
- AlmaLinux 8.6/8.7/9.0/9.1 64位
- Alibaba Cloud Linux 2.1903 LTS 64位
- Alibaba Cloud Linux 3.2104 LTS 64位、快速启动版、等保2.0三级版、UEFI版、ARM版等保2.0三级版、ARM版
对于其他还不支持选择普通用户ecs-user作为登录名的操作系统,您可以创建ECS实例后,在实例内手动添加普通用户用于登录ECS实例。以下列出了在实例内添加普通用户的相关操作指引供您参考,您也可以根据自身运维习惯自行创建普通用户用于登录ECS实例。
- 创建普通用户的命令为useradd [username],其中[username]为变量,需要设置为您自定义的用户名称。
- 修改普通用户密码的命令为passwd [username],其中[username]为变量,需要设置为您自定义的用户名称。
- 如果您需要对创建的普通用户进行权限控制,可以通过/etc/sudoers文件或者/etc/sudoers.d/目录进行权限修改。
查询镜像是否支持ecs-user用户
您可以通过DescribeImages接口查询,返回值中LoginAsNonRootSupported
的值为true
,则表示该镜像支持ecs-user用户,否则不支持。
设置ECS实例登录名
如果您选择普通用户ecs-user作为ECS实例的登录名,则需要注意:
- 使用SSH/TTY远程登录ECS实例时,必须使用ecs-user登录名进行登录,root登录名不再提供登录实例的能力。
- 使用ecs-user登录名登录实例后,如果需要系统敏感操作,相关命令前需要添加sudo提权。
- 通过ECS控制台离线重置ECS实例密码时,只能重置ecs-user登录名的密码,无法重置其他用户名的密码。
说明 基于以上注意事项,您在选择ecs-user作为ECS实例登录名之前,请务必确认清楚您业务相关的系统、应用不依赖root用户。
当您新建ECS实例、更换操作系统或者重新初始化系统盘时,均可以设置普通用户ecs-user作为登录名。相关操作说明如下表:
设置用户名的方式 | 操作说明 |
---|---|
创建实例 | 创建ECS实例的具体操作,请参见使用向导创建实例。各项配置请您结合实际需求进行设置,其中您需要注意:
|
更换操作系统 | 更换操作系统的具体操作,请参见更换操作系统(系统盘)。其中您需要注意:
|
重新初始化系统盘 | 重新初始化系统盘的具体操作,请参见重新初始化系统盘。其中您需要注意:
|
您为ECS实例设置ecs-user登录名后,在远程连接ECS实例时,需要指定ecs-user用户名并输入您设置的登录密码。关于远程连接ECS实例的相关操作说明,请参见 连接方式概述 。
例如:当您通过ECS控制台使用Workbench远程登录ECS实例时,用户名需要设置为ecs-user。

修改ECS实例的登录名
ECS实例不支持通过控制台或OpenAPI的方式修改实例的登录名。如果您在使用ecs-user用户作为ECS实例的登录名后,又需要将登录名更换为root用户进行登录,则需要登录ECS实例内部进行登录名的修改。具体操作说明如下:
- 远程登录待修改登录名的ECS实例。远程登录实例的具体操作,请参见 连接方式概述 。重要 使用ecs-user用户作为ECS实例登录名后,您不能直接使用root用户登录实例,而需要使用ecs-user登录名以及对应的密码登录实例。
- 修改实例的登录名,并设置密码或密钥对。根据不同的登录方式,修改实例登录名的方式也不同。具体说明如下:
- root用户使用密码登录ECS实例
- 运行以下命令,为root用户设置密码。
运行命令后,您需要根据命令行的回显信息,设置root用户的密码。sudo passwd root
- 运行以下命令,打开/etc/ssh/sshd_config文件。
vi /etc/ssh/sshd_config
- 在/etc/ssh/sshd_config文件中找到以
PasswordAuthentication
开头的配置行,将该行内容修改为PasswordAuthentication yes
。文件内容修改后如下图所示:说明 如果PasswordAuthentication
的配置默认为yes
,则您无需再修改文件内容。 - 修改完成后,按Esc键退出编辑模式,然后输入
:wq
并按Enter键,保存退出文件。 - 运行以下命令,重启SSH服务,使配置生效。
后续您可以使用root用户与密码信息,通过SSH/TTY方式远程登录ECS实例。sudo systemctl restart sshd
- 运行以下命令,为root用户设置密码。
- root用户使用密钥对登录ECS实例
将密钥对的公钥配置信息保存到/root/.ssh/authorized_keys配置文件中,即可使用root用户与密钥对信息,通过SSH/TTY方式远程登录ECS实例。
- root用户使用密码登录ECS实例
重置ECS实例的登录密码
通过ECS控制台离线重置ECS实例的登录密码时,您只能重置ECS实例当前默认设置的登录名对应的密码。例如,您的Linux实例登录名为ecs-user,则您只能重置ecs-user的用户密码。关于重置实例密码的具体操作,请参见重置实例登录密码。
如果您的ECS实例默认使用ecs-user用户登录实例,但已在操作系统中修改为root用户使用密码登录ECS实例。后续当您需要修改root用户的密码时,可以通过以下任一方式修改:
- 如果您的ECS实例支持在线修改密码,可以在线修改root用户的密码。更多信息,请参见在线重置实例密码原理说明。
- 在操作系统内部,使用sudo passwd [username]命令修改用户密码。其中[username]为变量,例如您需要修改root用户的密码,则需要运行sudo passwd root命令。