Ubuntu默认禁用root直接登录,但只要改两个配置文件就能放开,具体分图形界面和SSH远程两条路,按下面步骤操作即可。
Ubuntu root登录设置方法:先激活root账号再谈登录
Ubuntu和Debian系发行版有个默认安全策略:安装时不给root设置独立密码,而是用sudo授权普通用户提权,这个设计初衷是防止误操作和暴力破解,但管理和维护VPS、云服务器、物理机时,直接用root往往更高效。改配置前必须清楚一点:Ubuntu放行root登录的前提是先给root设置密码,没有密码,后续改任何文件都只是打开一扇没有钥匙的门。
设置root密码只需一条命令,在终端执行:
sudo passwd root
系统会让你先验证当前用户的密码,然后连续输入两次新密码,确认后root账号就激活了,这条命令在Ubuntu 20.04到24.04各版本上都通用,也是VPS厂商预装系统后管理员最常做的第一件事。
激活root后,能不能直接登录取决于你用的是哪种方式,本地方言图界面是一种,SSH远程是另一种,两者改的文件完全不同。
图形界面登录:修改GDM或LightDM配置
本地打开Ubuntu桌面,登录界面默认只显示普通用户,想切换到root,需要在登录界面点”未列出”或按Ctrl+Alt+F2切换到tty终端,如果连终端里都用不了root,那就是PAM配置拦住了。
图形界面放行root登录,需要修改认证配置文件,在终端执行:
sudo nano /etc/pam.d/gdm-password
找到这行,用注释掉:
auth required pam_succeed_if.so user != root quiet_success
保存退出后,重启图形服务或直接重启系统,重启后登录界面选择”其他用户”,手动输入root和刚才设置的密码,就能进桌面了。
部分使用LightDM的Ubuntu衍生版,比如Xubuntu、Lubuntu,改的路径稍有不同,需要在/etc/lightdm/lightdm.conf里加两行配置:
greeter-show-manual-login=true
greeter-hide-users=true
然后同样注释掉PAM里对应文件(通常是/etc/pam.d/lightdm)限制root的那行。
命令行本地登录:直接编辑login配置
只有SSH没有图形界面,或者你习惯开机后在tty终端输入账号,那要改的是/etc/pam.d/login和/etc/pam.d/common-auth,多数情况下,默认配置对本地tty登录的限制比较宽松,root输对密码就能进,真正卡脖子的是SSH,这也是云服务器管理员最常碰到的场景。
如果你在用VPS或云服务器做网站运维,大概率只通过SSH登录,那上面的图形界面操作对你没什么用,接下来看SSH的配置。
Ubuntu SSH root登录配置详解:PermitRootLogin是关键
SSH是远程管理Linux服务器最常用的通道,Ubuntu默认的sshd_config配置里,PermitRootLogin的值是prohibit-password,意思是允许root密钥登录,但拒绝密码登录,这个设置同时挡住了两种行为:一是别人拿root账号试探密码,二是你自己想用root密码远程登录。
查看当前值:
sudo grep PermitRootLogin /etc/ssh/sshd_config
如果没有任何输出,说明配置文件里没显式写这项,用的还是编译时的默认值prohibit-password。
修改方法很简单,编辑/etc/ssh/sshd_config,找到或添加这行:
PermitRootLogin yes
修改前先备份一份原文件,这是行业共识,防止改错后无法回滚:
sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak
改完后重启SSH服务验证:
sudo systemctl restart sshd
重启服务不会断开当前连接,新配置只对后续的新连接生效,这是测试配置最稳妥的方式,万一改坏了,当前的SSH窗口还开着,可以马上回滚。
SSH root登录的三种放行策略对比
PermitRootLogin有几种取值,不同场景选择不同方案,用表格罗列出来:
| 参数值 | 行为 | 适用场景 |
|---|---|---|
| yes | 允许root密码和密钥登录 | 内网测试机、临时调试环境 |
| prohibit-password | 允许root密钥登录,禁止密码登录 | 生产环境服务器、有密钥管理习惯的团队 |
| no | 完全禁止root登录 | 多人协作服务器、合规要求高的业务系统 |
对公网暴露的服务器,业内专家建议用prohibit-password而不是yes,因为密码暴力破解是云服务器上最常见的安全威胁,如果一定需要root密码登录,至少配合密钥认证和fail2ban拦截工具一起使用。
开启root密钥登录的实操步骤
如果你在简米云、酷番云、AWS这些平台买了香港VPS或国内服务器,登录方式大多是密钥对,想用root直接密钥登录,先确认当前用户拿到root权限后,把公钥放进root的授权文件:
sudo mkdir -p /root/.ssh sudo cp ~/.ssh/authorized_keys /root/.ssh/authorized_keys sudo chown -R root:root /root/.ssh sudo chmod 700 /root/.ssh sudo chmod 600 /root/.ssh/authorized_keys
然后确保sshd_config里这三项没被注释:
PubkeyAuthentication yes
PermitRootLogin prohibit-password
AuthorizedKeysFile .ssh/authorized_keys
重启sshd后,root用户就可以免密登录了,这种方式既不用每次输密码,又挡住了远程密码爆破,是VPS运维中最推荐的root登录配置。
ubuntu修改允许root直接登录常见坑:改完还是进不去
不少用户按教程改完配置,重启后依然无法用root登录,问题多半出在下面几个环节,逐个排查即可。
密码策略和时效问题
Ubuntu的root密码默认没有过期时间,但某些云厂商的镜像会预设密码策略,确认root密码确实设置成功的办法是切换到root再退出:
su - root
exit
如果su切换没问题,那root账号本身是激活的,如果su都进不去,回到sudo passwd root重新设置一遍。
Selinux或AppArmor的主板拦截
Ubuntu默认启用AppArmor安全模块,它会限制SSH读取root密钥的路径,如果你把公钥放在自定义目录而非/root/.ssh/,AppArmor可能会拦截,遇到密钥登录被拒绝但密码符合要求的情况,先检查系统日志:
sudo tail -f /var/log/auth.log
日志里有Permission denied或AppArmor字样,说明是安全模块出手了,把密钥文件放回标准路径,或者调整AppArmor配置文件,别硬绕。
云服务器厂商安全组因素
很多云服务商在控制台层面有额外的登录限制,比如简米云的安全组规则、酷番云的防火墙策略,如果不放行对应端口,或者默认禁用了root的密码登录功能,那系统层面怎么改都是徒劳,这类平台限制通常在控制台操作,改完安全组再回服务器上测试。
新手最容易犯的错误:忘了改公网绑定地址
有些用户把sshd_config改完并重启,发现局域网IP能登录,但公网IP始终连不上,八成是SSH只监听了内网地址,检查ListenAddress这一项是否需要手动指定0.0.0:
ListenAddress 0.0.0.0
加上后重启SSH,公网连接才会走root登录的逻辑。
修改root登录会影响哪些功能:安全与便利的天平
改完root登录后,系统的APT更新、cron任务、Docker容器运行这些需要最高权限的操作,以后可以直接以root执行,省去sudo前缀,crontab配置也更自由,不用再操心权限继承问题。
但代价同样明确,root在系统里拥有绝对控制权,一条rm -rf命令比普通用户误删的后果严重得多。如果机器多人共用,或者暴露在公网,建议保留普通用户+sudo作为日常操作,root仅用于关键配置和故障恢复。
行业共识认为,放行root登录适合以下场景:
- 个人自用的VPS或云主机
- 临时搭的实验环境
- 需要通过自动化脚本部署的CI/CD服务器
- 没有其他用户、物理隔离的内网机器
不适合的场景包括:团队共享的测试服务器、有等保合规审计要求的生产系统、培训教学用的多用户环境。
Ubuntu root登录问题排查Q&A
root密码设置成功了,但SSH连接提示Access denied,怎么解决?
检查sshd_config里PermitRootLogin是否真的改成yes或prohibit-password,改完后有没有重启sshd服务,再看/etc/ssh/sshd_config.d/目录下有没有其他配置文件的条目覆盖了主文件的设置,Ubuntu从20.04开始,sshd_config.d里的配置优先级高于主配置文件,常见情况是主文件改好了,但子目录下的某项仍写着PermitRootLogin no,导致登录被拒,最后确认密码输入时注意大小写,以及是否开启了Caps Lock。
按教程改配置后重启,图形界面登录时直接闪退,卡在登录循环里怎么办?
常出现在修改PAM文件且注释错误的情况下,回到tty界面输入root或普通用户账号,检查/etc/pam.d/gdm-password是否被误删或漏写关键行,如果之前备份过原文件,直接回滚最省事,没有备份的,把注释掉的那行恢复原样,重启图形服务,登录循环的另一个常见原因是root目录下.Xauthority文件权限被改,执行chown root:root /root/.Xauthority修复,但根治方法还是确保PAM文件没有语法错误。
服务器商提供的是Ubuntu系统,vps上root登录修改后失效,重装系统才能恢复吗?
不需要重装,VPS厂商通常提供VNC或救援模式,通过网页终端进入系统,以普通用户身份登录后,把sshd_config改回来即可,如果普通用户也被锁在系统外,用厂商的控制台重置root密码功能,或者启动到救援模式挂载系统盘,修改对应配置文件后重启,这类登录问题解决起来花的时间不超过十分钟,重装系统反而要重新配置环境,代价大得多。
首发原创文章,作者:王坚,如若转载,请注明出处:https://idctop.com/article/668881.html





