Debian 12下SSH登录root需先通过sudo重置root密码的问题咨询
Debian 12下SSH登录root需先通过sudo重置root密码的问题咨询
兄弟,我来帮你捋捋这个问题哈!你说在Debian 12上通过SSH连进普通用户后,每次要登录root都得先跑sudo passwd root重置密码,之后才能用root@<服务器IP>在新终端登录,而且已经确认/etc/ssh/sshd_config里PermitRootLogin是yes对吧?
这事儿其实和Debian 12的默认配置直接相关,我给你拆解清楚:
核心原因
Debian 12默认情况下,root账户是处于锁定状态的(你可以看/etc/shadow文件里root行的密码字段,会是!或者*),这意味着没有有效密码能用来验证登录。你每次执行sudo passwd root,本质是给root设置了有效密码,同时自动解锁了账户,所以之后SSH才能用root密码登录。但你其实不需要每次都重置,只要一次性搞定就行。
解决步骤
先确认root账户状态
执行这条命令查看root的密码锁定状态:sudo cat /etc/shadow | grep root如果输出里root行的第二个字段是
!或者*,就说明账户确实被锁定了。一次性设置并解锁root账户
- 先给root设置一个安全的密码:
按照提示输入两次新密码即可。sudo passwd root - 一般设置密码的操作会自动解锁账户,但保险起见可以再跑一遍解锁命令:
sudo passwd -u root
- 先给root设置一个安全的密码:
检查SSH的其他关键配置
除了PermitRootLogin yes,还要确保密码登录功能是开启的(如果你用密码登录root的话):
编辑/etc/ssh/sshd_config,找到PasswordAuthentication项,设置为:PasswordAuthentication yes然后重启SSH服务让配置生效:
sudo systemctl restart sshd
这样操作之后,你下次直接用root@<服务器IP>通过SSH登录就不需要再重复重置密码啦!
备注:内容来源于stack exchange,提问作者Waqas Saeed




