如何使用户能够使用ssh键登录但不能使用密码登录?


17

我想创建一个用户,没有密码。就像您无法使用密码登录一样。我想通过使用根将密钥添加到其authorized_keys。这是我的自动备份系统。

Answers:


26

使用passwd -d是完全错误的,至少在Fedora上,基于阴影-utils的任何Linux发行版。如果使用删除密码passwd -d,则意味着任何人都可以不提供密码登录(通过控制台或图形方式)该用户。

为了阻止使用密码身份验证的登录,请运行,它将锁定该帐户,使其仅对root用户可用。通过将加密的密码呈现为无效的字符串(通过在加密的字符串前面加上!前缀)来执行锁定。passwd -l username

任何本地或远程登录尝试都将导致“密码错误”,而公共密钥登录仍将起作用。然后可以使用解锁帐户。passwd -u username

如果要完全锁定一个帐户而不删除它,请编辑/etc/passwd并设置/sbin/nologin/bin/false在最后一个字段中。这将导致“此帐户当前不可用”。对于任何登录尝试。

请参考passwd(1)手册页。


@guido:不会将您的答案通知rvs。为此,您需要在他的回答中添加评论(我已经完成了)。请注意,读者可能会先阅读您的答案,然后再写出直接回答该问题的答案。指出这一点做得好!它适用于大多数Linux发行版(使用Linux影子实用程序的发行版)。
吉尔(Gilles)“所以,别再邪恶了”,

@吉尔斯:对不起,我是stackexchange的新手;我几乎没有指出这一点,因为它就像建议用户设置无密码帐户一样,并且被接受并标记为有用的 ……
guido

@guido:不用担心,我只是在解释如何使您的警告更有效。实际上,在极端危险的情况下,如果答案是错误的错误答案,建议添加警告或更正内容的编辑是适当的(希望您不会在网站上经常遇到这些情况)。
吉尔(Gilles)“所以,别再邪恶了”,

@guido:实际上,在回答问题的debian Squeeze(我不知道lenny或etch)上。它不允许除root以外的任何人登录,允许授权密钥,但密码少,它不接受密码。我很惊讶您可以“删除密码”,并且这样可以正常工作。但这确实满足了我的要求,也正是该答案的作用,并且是唯一的答案,所以我才接受。这个答案更有意义,我会接受的,因为我愿意打赌其他Disto确实允许任何人以不像debian一样无密码登录bc。无论如何,好的答案。

1
@ acidzombie24,@mattdn:他们可能已经删除nullokpam.d /密码身份验证,如果Debian使用PAM(我想是这样,但我不是一个debian的专家)。但是,passwd(1)联机帮助页明确指出,-d参数用于创建无密码帐户,因此此处的任何发行版特定推测都是次要的,因为这个问题非常笼统。
guido

2

您不是要特定于SSH守护程序,不接受基于密码的身份验证,而是接受密钥/密码身份验证吗?

寻找对的更改sshd_config

PasswordAuthentication No
PreferredAuthentications publickey,hostbased,keyboard-interactive
Protocol 2,1

man ssh_config中查找更多配置参数


0

只是不要为用户设置密码。如果已经有密码,请使用删除密码passwd -l <username>

但是仍然有可能以该用户身份登录-通过使用authorized_keys或通过特权帐户中的su或sudo进行登录。


1
正如guido指出的那样passwd -d使该帐户无密码,例如,您无需输入密码即可登录。使用passwd -l锁定帐户(认为它是给人一种不可能对输入密码)。
吉尔(Gilles)“所以,别再邪恶了”,

我已在您的帖子中添加了警告,因为它很危险。我将由您来决定是要修正您的答案,还是删除您的答案(如果您认为guido足够了),或者驳斥警告。
吉尔(Gilles)“所以,别再邪恶了”,

为什么为什么人们会接受甚至无效的答案?
mathepic 2011年

@mathepic:它确实适用于debian。正是我问的方式

您确定非特权用户无法su访问该用户吗?
mattdm 2011年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.