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 登录,务必采取额外的安全措施,并定期检查系统日志,确保没有异常登录行为。


