如何在 SSHD 中禁用特定用户的密码验证

如何在 SSHD 中禁用特定用户的密码验证

我已经阅读了几篇关于限制所有用户仅进行密钥身份验证的帖子,但是我想强制仅单个用户(svn)进行密钥身份验证,其余用户可以是密钥或密码。

我读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用到的是subversion的最新版本(1.6)。

有没有办法用我当前的设置来实现这一点?我不想将服务器限制为仅使用密钥,因为如果我丢失了密钥,我就会丢失服务器 ;-)

答案1

PermitEmptyPasswords no您可以在配置中设置参数sshd,并删除某些用户的密码,以强制他们进行 ssh 密钥认证。

答案2

向 sshd_config 文件中添加 Match 块。如下所示:

Match Group SSH_Key_Only_Users
    PasswordAuthentication no

或者如果真的只有一个用户

Match User Bad_User
    PasswordAuthentication no

查看man sshd_config有关您可以匹配的内容以及可以添加哪些限制的更多详细信息。

答案3

我刚刚从痛苦中认识到 CentOS 5(截至今天的最新更新)不支持匹配命令,将我自己锁定在远程服务器之外。很有趣。

因此,如果您尝试添加匹配命令到 CE5,然后你就可以服务 sshd 重启它不会,而且一旦你关闭 sshd 客户端,你就会被锁定,直到你可以通过控制台重新登录来删除这两行。

相关内容