如何为SSHD中的特定用户禁用密码validation

我已经阅读了几篇关于限制所有用户进行密钥身份validation的文章,但是我只想强制一个用户(svn)进入密钥身份validation,其余的可以是密钥或密码。

我读了https://stackoverflow.com/questions/4241197/how-to-disable-password-authentication-for-every-users-except-several ,但似乎sshd_config的“匹配用户”的一部分是openssh- 5.1。 我正在运行CentOS 5.6,只有OpenSSH 4.3。 我目前有以下回购。

$ yum repolist Loaded plugins: fastestmirror repo id repo name status base CentOS-5 - Base enabled: 3,535 epel Extra Packages for Enterprise Linux 5 - x86_64 enabled: 6,510 extras CentOS-5 - Extras enabled: 299 ius IUS Community Packages for Enterprise Linux 5 - x86_64 enabled: 218 rpmforge RHEL 5 - RPMforge.net - dag enabled: 10,636 updates CentOS-5 - Updates enabled: 720 repolist: 21,918 

我主要使用epel,rpmforge是用于颠覆的最新版本(1.6)。

有什么办法来实现我目前的设置? 我不想限制服务器的密钥只是因为如果我失去了我的密钥我失去了我的服务器;-)

您可以在您的sshdconfiguration中设置参数PermitEmptyPasswords no ,并删除某些用户的密码,以强制ssh密钥身份validation。

将一个匹配块添加到您的sshd_config文件。 像这样的东西:

 Match Group SSH_Key_Only_Users PasswordAuthentication no 

或者如果它真的是一个用户

 Match User Bad_User PasswordAuthentication no 

有关更多详细信息,请参阅man sshd_config ,以了解可以匹配的内容以及可以放入哪些限制。

我刚刚学会了CentOS 5(截至今天的最新更新)通过将自己locking在远程服务器之外不支持Match命令。 娱乐时间。

因此,如果您尝试将匹配命令添加到CE5,并且执行服务sshd重新启动它不会,警告如果您closures您的sshd客户端,一直locking,直到您可以通过控制台重新login以删除这两行。