在 Ubuntu 22.04 上允许 SSH root 登录

SH(Secure Shell)是远程管理 Linux 系统的常用方式,默认情况下 Ubuntu 22.04 禁用了 root 用户的 SSH 登录,这是出于安全考虑。不过在某些特定场景下,可能需要启用这一功能。以下是详细的操作步骤:

一、安全风险提示

在启用 root 用户 SSH 登录前,需要明确这一操作存在的安全风险:

  • root 用户拥有系统的最高权限,一旦被恶意登录,可能导致系统被完全控制
  • 公开的 root 账号会成为黑客攻击的主要目标
  • 建议在启用前确保系统已安装最新的安全更新,并考虑结合其他安全措施(如密钥认证、防火墙等)

二、登录普通用户并获取权限

首先需要通过普通用户登录系统,然后获取管理员权限:

# 登录到你的 Ubuntu 系统(使用普通用户账号)
ssh your_username@your_server_ip
# 获取 root 权限
sudo su-

三、备份 SSH 配置文件

在修改配置文件前,先进行备份,以便出现问题时可以恢复:

# 备份 SSH 配置文件
cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak

四、修改 SSH 配置文件

使用文本编辑器打开 SSH 配置文件,修改相关参数:

# 使用 nano 编辑器打开配置文件(也可以使用 vi 或 vim)
nano /etc/ssh/sshd_config
在文件中找到以下两行(如果没有可以直接添加),并修改其值:
# 找到 PermitRootLogin 配置项,默认值为 prohibit-password 或 without-password
PermitRootLogin yes
# 如果你希望同时允许普通用户和 root 用户使用密码登录(可选)

PasswordAuthentication yes

配置说明:

  • PermitRootLogin yes:允许 root 用户通过 SSH 登录
  • PasswordAuthentication yes:允许使用密码认证(如果之前设置为 no,则需要开启)

五、重启 SSH 服务使配置生效

修改配置文件后,需要重启 SSH 服务才能使新的设置生效:

# 重启 SSH 服务
systemctl restart ssh
# 检查 SSH 服务状态,确保重启成功
systemctl status ssh

六、验证 root 登录功能

可以通过以下方式验证 root 登录是否已启用:

# 在本地终端尝试使用 root 账号登录(替换为你的服务器 IP)
ssh root@your_server_ip
# 输入 root 密码(如果提示登录成功,说明配置已生效)

七、增强安全的可选措施

为了在启用 root 登录的同时提高系统安全性,可以采取以下措施:

1. 启用密钥认证(推荐)

# 在 root 账户下生成 SSH 密钥对(如果尚未生成)
su - root
ssh-keygen
# 将公钥添加到授权列表
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
chmod 700 ~/.ssh
# 在 sshd_config 中禁用密码登录(提高安全性)
PermitRootLogin without-password
PasswordAuthentication no

2. 设置 root 账号强密码

# 为 root 账号设置强密码
passwd root

3. 限制 root 登录的 IP 地址(通过防火墙)

# 使用 ufw 防火墙限制只有特定 IP 可以访问 SSH
ufw allow from your_allowed_ip to any port 22

4. 修改 SSH 端口(可选)

# 在 sshd_config 中修改默认端口(如改为 2222)
Port 2222
# 并在防火墙中允许新端口
ufw allow 2222/tcp

八、故障排除

如果无法通过 root 账号登录,可尝试以下排查步骤:

  • 查看 SSH 日志获取详细错误信息:
grep "PermitRootLogin" /etc/ssh/sshd_config
grep "PasswordAuthentication" /etc/ssh/sshd_config
  • 查看 SSH 日志获取详细错误信息:
tail -f /var/log/auth.log
  • 确保没有其他安全工具(如 fail2ban)阻止登录:
systemctl status fail2ban

九、恢复默认配置(如果需要)

如果想恢复到 Ubuntu 默认的禁用 root 登录状态:# 覆盖回备份的配置文件

cp /etc/ssh/sshd_config.bak /etc/ssh/sshd_config

# 重启 SSH 服务

systemctl restart ssh

总结:

启用 root 用户的 SSH 登录虽然方便,但会降低系统的安全性。在生产环境中,更推荐使用普通用户登录并通过 sudo 命令获取权限,或结合 SSH 密钥认证来提高安全性。如果确实需要启用 root 登录,务必采取额外的安全措施,并定期检查系统日志,确保没有异常登录行为。

未经允许不得转载:云端研习社 » 在 Ubuntu 22.04 上允许 SSH root 登录