我正在使用运行 CentOS 的 Amazon AWS 实例。我试图创建一个具有 SUDO 权限的用户,然后禁用 Root 登录以保护系统。我已经完成了使此操作生效所需的操作,但现在遇到了一个我无法理解的问题。
当我创建用户(例如 ABC)时,我没有为其设置密码。相反,我使用 RSA 密钥进行身份验证。
然后我使用visudo
命令并添加到ABC ALL=(ALL) ALL
文件底部以授予该用户 sudo 权限。
然后我打开/etc/ssh/sshd_config
并vi
转到PermitRootLogin
并no
重新启动 sshd。这是为了禁用 root 访问权限。
我原本以为就是这样,即禁用 root 登录并让 ABC 执行所有必需的管理任务。但现在我陷入了困境。
我的问题是,当我登录 ABC 并尝试sudo
任何命令时,它都会要求输入用户密码。此用户没有密码,但有一个 RSA 密钥,我认为它不能与 SUDO 一起使用。
我尝试使用命令为该用户设置密码passwd
。这也不起作用。出现以下错误。
$ passwd
Changing password for user kagzisa.
Changing password for kagzisa
(current) UNIX password:
passwd: Authentication token manipulation error
当系统提示输入当前密码时,我只是按下回车键,因为没有指定当前密码。
现在我陷入了困境,因为我已禁用 Root 登录,无法从 ABC 执行任何 sudo 命令。我不能失去这个系统,因为上面正在运行一些重要的进程。
有什么方法可以修复这个问题吗?是重新激活 root 权限还是能够使用 sudo 命令?
答案1
您可能应该在 visudo 中使用 NOPASSWORD 标签,这样它就不会要求您输入任何密码。ABC ALL = NOPASSWD: ALL
答案2
首先成为 root。
作为 root 你不需要知道任何密码就可以更改它:
# passwd kagzisa
Enter new UNIX password:
答案3
您可能需要安装一个 pam_ssh_agent_auth 包(适用于 Centos 7),然后使用 /etc/pam.d/sudo 将其作为 ABC 的授权(如果您有权限)最后,您可能需要将 SSH_AUTH_SOCK 添加到 sudo 期间持续存在的环境变量列表中。
或者使用之前推荐的 Nopassword。否则,启动新机器,分离 ebs 并连接到新的 ec2(如果可以承受停机时间)