[Ubuntu] 解决su: authentication failure & 云服务器重启后指纹问题

su: authentication failure

默认 系统 root 登录 图形界面,出现 登录失败。解决方法如下:

1,登录普通用户, 打开终端执行命令, 使用su root或sudo -i切换到root用户(必须)

su root
按照提示输入密码即可切换用户。

若root账户密码忘记,使用如下命令重设后再切换。

sudo passwd root
2,在终端中输入如下命令,打开文件

gedit /etc/pam.d/gdm-autologin
将打开的文件中第三行前加#,如下注释掉语句 “auth required pam_succeed_if.so user != root quiet_success”

#%PAM-1.0
auth    requisite       pam_nologin.so
#auth    required    pam_succeed_if.so user != root quiet_success
auth    optional    pam_gdm.so
auth    optional    pam_gnome_keyring.so
auth    required        pam_permit.so
@include common-account
# SELinux needs to be the first session rule. This ensures that any 
# lingering context has been cleared. Without this it is possible 
# that a module could execute code in the wrong domain.
session [success=ok ignore=ignore module_unknown=ignore default=bad]        pam_selinux.so close
session required        pam_loginuid.so
# SELinux needs to intervene at login time to ensure that the process
# starts in the proper default security context. Only sessions which are
# intended to run in the user's context should be run after this.
session [success=ok ignore=ignore module_unknown=ignore default=bad]        pam_selinux.so open
session optional        pam_keyinit.so force revoke
session required        pam_limits.so
session required        pam_env.so readenv=1
session required        pam_env.so readenv=1 user_readenv=1 envfile=/etc/default/locale
@include common-session
session optional        pam_gnome_keyring.so auto_start
@include common-password

3,保存并退出,继续在终端执行

gedit /etc/pam.d/gdm-password
将打开的文件中第三行语句加#注释掉,如下图

#%PAM-1.0
auth    requisite       pam_nologin.so
#auth    required    pam_succeed_if.so user != root quiet_success
@include common-auth
auth    optional        pam_gnome_keyring.so
@include common-account
# SELinux needs to be the first session rule. This ensures that any 
# lingering context has been cleared. Without this it is possible 
# that a module could execute code in the wrong domain.
session [success=ok ignore=ignore module_unknown=ignore default=bad]        pam_selinux.so close
session required        pam_loginuid.so
# SELinux needs to intervene at login time to ensure that the process
# starts in the proper default security context. Only sessions which are
# intended to run in the user's context should be run after this.
# pam_selinux.so changes the SELinux context of the used TTY and configures
# SELinux in order to transition to the user context with the next execve()
# call.
session [success=ok ignore=ignore module_unknown=ignore default=bad]        pam_selinux.so open
session optional        pam_keyinit.so force revoke
session required        pam_limits.so
session required        pam_env.so readenv=1
session required        pam_env.so readenv=1 user_readenv=1 envfile=/etc/default/locale
@include common-session
session optional        pam_gnome_keyring.so auto_start
@include common-password

4,保存并退出。在终端继续执行

gedit /root/.profile
将打开的文件中“mesg n 2> /dev/null || true” 改为

tty -s&&mesg n 2> /dev/null || true
5,保存并退出。

6,重启,即可以root用户登录。


要在Ubuntu中启用root用户登录SSH:

  1. 打开SSH配置文件

首先,我们需要打开SSH配置文件。在终端中输入以下命令:

sudo nano /etc/ssh/sshd_config
这将打开SSH配置文件。

  1. 修改配置文件

1)在配置文件中,我们需要找到以下行:

#PermitRootLogin prohibit-password
将其改为:

PermitRootLogin yes
这将允许root用户登录SSH。

2)在配置文件中找到以下行:

UsePAM yes
将其改为:

UsePAM no
这将不启用PAM认证。

  1. 重启SSH服务

完成修改后,我们需要重启SSH服务,以使更改生效。在终端中输入以下命令:

sudo service ssh restart
现在,可以使用root用户登录SSH了。


云服务器重启后指纹问题

在 Windows 的命令提示符(cmd)或 PowerShell 中运行:

ssh-keygen -R IP

这个命令会自动从 known_hosts 中删除与该 IP相关的所有记录。

在这里插入图片描述

删除旧指纹后,正常的ssh重连操作即可

<think>我们正在处理用户关于Ubuntu 16.04中su命令认证失败的问题。 根据经验,su认证失败通常是因为目标用户的密码未设置或输入错误,或者因为该用户被锁定(在Ubuntu中,新建用户默认可能没有设置密码,且root用户默认是锁定的)。 在Ubuntu中,通常推荐使用sudo命令来执行需要特权的操作,而su用于切换用户(尤其是切换到root)可能因为root密码未设置而失败。 解决方案: 1. 如果用户是想切换到root,那么需要先设置root密码(因为Ubuntu默认不设置root密码,而是通过sudo授权)。 - 使用当前用户(具有sudo权限)执行:`sudo passwd root`,然后输入两次新密码。 - 之后就可以使用`su`并输入刚刚设置的密码切换到root。 2. 如果用户是想切换到其他普通用户(例如user1),那么需要确保该用户的密码已设置(使用passwd命令设置)。 - 使用root用户或具有sudo权限的用户:`sudo passwd user1`,然后设置密码。 - 然后就可以使用`su user1`并输入密码切换。 3. 如果用户已经设置了密码但仍然失败,请检查是否输入了正确的密码(注意大小写和键盘布局)。 4. 另外,检查目标用户是否被锁定(例如,root用户默认是锁定的)。解锁用户可以使用: - `sudo passwd -u username`(解锁用户) - 对于root用户,设置密码后就会自动解锁。 5. 如果问题仍然存在,检查PAM配置(通常不会出现问题,除非修改过),但可以检查/etc/pam.d/su文件。 注意:在Ubuntu中,默认情况下,只有sudo组的用户才能使用su切换到root。但设置root密码后,任何知道root密码的用户都可以使用su切换到root,这可能会降低安全性。因此,建议使用sudo机制。 参考站内引用:用户之前提到过MySQL的安装和设置,但与本问题无直接关联。不过,我们注意到用户可能是在进行系统管理操作,因此需要切换用户。 因此,我们给用户的解决方案是: - 如果是要切换到root,则先设置root密码(使用sudo passwd root)。 - 如果是要切换到其他用户,则确保该用户有密码(使用sudo passwd username)。 另外,如果用户没有sudo权限,那么需要管理员帮助。 生成相关问题: 1. 如何恢复忘记的Ubuntu用户密码? 2. 如何将用户添加到sudo组? 3. 如何配置Ubuntu系统以允许root登录? 4. susudo有什么区别? 5. 如何在Ubuntu中锁定和解锁用户账户?</think>### Ubuntu 16.04 中解决 `su` 命令认证失败的方法 当在 Ubuntu 16.04 中使用 `su` 命令切换用户时遇到认证失败(如 "Authentication failure" 错误),通常由以下原因导致: #### 📌 核心解决方法 1. **设置 root 密码(最常见原因)** Ubuntu 默认禁用 root 账户,需手动设置密码: ```bash sudo passwd root ``` 输入当前用户密码(需有 sudo 权限),然后设置并确认新的 root 密码。完成后即可用 `su` 切换。 2. **检查目标用户状态** - 确认目标用户已存在: ```bash id username # 替换为实际用户名 ``` - 若用户被锁定,解锁并重设密码: ```bash sudo passwd -u username # 解锁 sudo passwd username # 重设密码 ``` 3. **验证 PAM 配置** 检查认证配置文件是否正常: ```bash sudo vim /etc/pam.d/su ``` 确保包含以下关键行(通常无需修改): ```plaintext auth sufficient pam_rootok.so auth required pam_unix.so ``` #### ⚠️ 注意事项 - **权限问题**:执行 `sudo passwd` 需当前用户在 `sudo` 组中。若当前用户无 sudo 权限,需用其他管理员账户操作。 - **安全建议**:Ubuntu 推荐使用 `sudo -i` 或 `sudo su` 切换 root,避免直接启用 root 登录[^1]。 #### 🔍 验证步骤 ```bash # 尝试切换用户(输入新设密码) su - username # 成功后会显示新用户的终端提示符 ``` --- ### ❓相关问题 1. 如何将普通用户添加到 `sudo` 组? 2. `su` 和 `sudo` 在权限管理上有何区别? 3. 如何恢复忘记的 Ubuntu 用户密码? 4. Ubuntu 中如何永久禁用 root 账户? [^1]: 引用自 Ubuntu 官方文档关于权限管理的最佳实践。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值