已断开连接:使用密码进行身份验证的 sudo 用户不支持身份验证方法

已断开连接:使用密码进行身份验证的 sudo 用户不支持身份验证方法

在 Amazon Linux 2 EC2 实例上,已通过在cloud-init启动脚本期间运行以下命令启用远程用户的密码身份验证:sed -i 's/PasswordAuthentication no/PasswordAuthentication yes/' /etc/ssh/sshd_config 。因此,远程用户在登录 Amazon Linux 2 EC2 实例时不使用密钥对进行身份验证。其中一位用户someuser需要能够sudo在不输入密码的情况下运行命令。

Cloud-Init 启动脚本

完整的cloud-init启动脚本如下:

/usr/sbin/useradd someuser
echo someuser:some-password | chpasswd
sed -i 's/PasswordAuthentication no/PasswordAuthentication yes/' /etc/ssh/sshd_config
systemctl restart sshd  

cat << 'EOF' > /etc/sudoers.d/someuser
someuser ALL=(ALL) NOPASSWD: ALL
EOF   


问题

在上面的启动脚本中需要使用什么特定语法,cloud-init以便能够在不重述密码的情况下someuser运行sudo命令,同时仍然能够someuser使用给定的密码通过 Putty 远程登录?


错误信息

以下屏幕截图说明了错误消息:

远程登录被拒绝


切换错误

上述当前语法会导致someuser由于缺少公钥而无法使用 Putty。但是,如果将上述 3 行命令注释掉,则可以删除该错误,以便someuser能够登录,但无法执行命令:sudocat


  #cat << 'EOF' > /etc/sudoers.d/someuser   
  #someuser ALL=(ALL) NOPASSWD: ALL   
  #EOF   



问题出在最后发布的前三行中。如何重写、替换或扩充这 3 行,以使该用户能够升级到sudo无需密码,同时仍保留 Putty 仅使用密码的能力?

答案1

/etc/sudoers.d/README

它是受到推崇的使用维苏多,因为它会阻止在出现错误时进行更改,并且它还会处理新文件模式(第0440章)。

这意味着您的初始化脚本只需要对新创建的文件(/etc/sudoers.d/someuser)进行模式更改

chmod 0440 /etc/sudoers.d/someuser;

但你确实找到了解决方案这里更好 ,

echo 'someuser ALL=(ALL:ALL) ALL' | sudo EDITOR='tee -a' visudo

Visudo 这里将使用tee而不是nano附加新内容,而不需要相互作用,这就是我错过的魔法!

相关内容