我在 VMware 虚拟机中安装了最新的 Rocky Linux 9。 遇到了一个非常奇怪的问题:在虚拟机的黑窗口(控制台)中,使用 root 账号和密码可以正常登录。但是当使用 FinalShell 或 Xshell 等 SSH 工具进行远程连接时,输入了正确的密码,却一直提示“认证失败”或无限循环要求输入密码。
经过排查,发现这是 Rocky Linux 9(以及较新的 Linux 发行版)默认的安全策略导致的。这里记录一下解决方案。
进入配置文件
在虚拟机的终端中,输入以下命令编辑 sshd_config 文件:
vi /etc/ssh/sshd_config
修改配置项
进入编辑器后(如果是 vi/vim):
- 按
/键进入搜索模式,输入PermitRootLogin并回车,找到对应的行。 - 按
i键进入编辑模式。 - 找到
PermitRootLogin这一项。它被设置成了prohibit-password。 - 将其修改为:
PermitRootLogin yes
保存并退出
按 Esc 键退出编辑模式,输入 :wq 保存并退出。
验证
回到 FinalShell,再次尝试使用 root 用户连接,就能秒连成功了
在生产环境(公司服务器)中,为了安全起见,通常不建议开启 root 远程登录,最好创建一个普通用户并配置 sudo 权限。但在本地虚拟机学习 Redis 或 Java 开发时,开启 root 权限能省去很多麻烦。