我正在build立一个新的Ubuntu 13.04服务器。 我创build了一些用户,并将ssh身份validation的公钥复制到他们的主文件夹中。 通过密码login将被禁用。 到目前为止一切正常,但如果我通过SSH +私钥login,我不能sudo。 我必须input密码,但所有的密码都是空的。
我发现了几个提示如何更改/ etc / sudoers,但也有很多警告不要手动编辑文件。 所以我的问题是:
你真的在谈论两件不同的事情。 configurationSSH只执行基于密钥的身份validation是sshdconfiguration的一部分,并且sudo(无密码或无)由pam处理。 你应该做的是这样的:
编辑/etc/ssh/sshd_config以根据需要修改和/或添加以下内容
PubkeyAuthentication yes PasswordAuthentication no
然后重新启动sshd服务。
你要select你的sudo组,并使用visudo命令修改sudoers文件,并添加这样的东西。
%wheel ALL=(ALL) ALL
这将允许轮组中的每个人以任何用户的身份执行任何命令。 请注意,他们需要input密码才能执行此操作。 默认情况下,大多数发行版都有自己的密码,但有时sudo被configuration为让他们input目标密码。
另外,你也可以configurationsudo而不要求input密码。 除了服务帐户自动执行的操作外,我不build议这样做。 在这种情况下,您只能指定服务帐户只能执行特定的命令。 但是,通过将上面的行更改为如下所示的内容,您不仅可以删除sudo密码要求:
%wheel ALL=(ALL) NOPASSWD: ALL
为什么密码是空的? 您可以在SSH中禁用密码authentication,并保持密码进入sudo。 要在SSH中禁用密码authentication,请编辑/ etc / ssh / sshd_config并激活PasswordAuthentication no
密钥交换比密码安全得多:有2048个字节来代替5-10个字符。