我已经阅读了几篇关于限制所有用户仅进行密钥身份验证的帖子,但是我想强制仅单个用户(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 客户端,你就会被锁定,直到你可以通过控制台重新登录来删除这两行。