从今天开始,当我尝试使用 Putty 或任何 SSH 客户端以 root 身份连接到我的 CentOS VM 时,我再也无法登录。连接已建立,但登录本身失败。我确信我输入了正确的密码,因为当我直接登录 VM 本身时它可以正常工作。
使用几周前做的备份,我可以毫无问题地使用 SSH。这实际上是今天才开始发生的。
我已经对此做了一些研究,并且:
- SSH 登录失败时,我的日志文件没有任何更新
- 在连接期间,使用 -vvv 获取有关登录过程的信息,我的备份登录和我当前的 VM 过程之间的唯一区别是,在我输入密码后,我当前的 VM 显示
debug3: receive packet: type 51
。就是这样。它只是一遍又一遍地要求我输入密码。 - 已
sshd_config
正确设置,允许 root 登录和所有。
再次,昨天运行得非常好,查看我的命令历史记录,我看不到任何可能破坏 SSHD 的东西。只有cat
s 和tail
s,最坏的情况是apachectl restart
s 并且 VM 是本地托管的,只有我可以访问它,因为它无法在我的 PC 关闭时运行。
我只是不明白发生了什么。是不是有文件损坏了?这能修复吗?我的备份缺少一些配置,我真的不想再次设置。
编辑:以其他用户身份登录确实有效。然后我可以使用sudo -i
成为 root。现在这样就行了,但我不会将此标记为“已解决”,直到我真正找到真正的解决方案。
答案1
如果你碰巧改变了任何SELinux针对 root 的策略,它可能已经抹去了授权。
您可以将授权文件从任何其他服务器复制到此服务器,或将该文件用于任何其他用户。您还可以使用 keygen 生成新的授权文件。
ssh 密钥存储在:
<home>/.ssh/
对于 root
/root/.ssh
答案2
最后,SSH做过工作——问题不在于 SSH 的配置,而在于虚拟机的接口。其中一个接口使用的 IP 地址由其他网络上的 VM —— 因此,当我尝试通过 SSH 连接到它时,我无法以 root 身份登录,因为我确实使用了错误的密码。
我通过重新启动虚拟机并重新启动 PC 解决了这个问题多次直到它的接口被赋予一个新的 IP,我才能连接。
然而,虚拟机本身已被损坏或损坏到一定程度(apache 非常慢,上面提到的有问题的接口丢失了它的 IP 地址并且不断拒绝再次使用激活ifup
,所以我最终放弃并使用了我的备份。