限制某些SSH用户仅使用publickey身份验证的最佳方法(禁用密码身份验证)

Modified on: Sat, 09 Nov 2019 07:00:02 +0800

我正在Yosemite上运行Mac OS X Server.app并且我已为/etc/sshd_config中的默认设置启用了SSH(默认情况下启用了publickey和密码auth)。 但是,我需要限制git本地用户只能通过SSH访问公钥。

完全公开,Server.app启用了一些额外的Kerberos和GSSAPI选项(虽然我不能100%确定这些如何影响我的问题):

# Kerberos options
KerberosAuthentication yes
KerberosOrLocalPasswd yes
KerberosTicketCleanup yes

# GSSAPI options
GSSAPIAuthentication yes
GSSAPICleanupCredentials yes
GSSAPIStrictAcceptorCheck yes
GSSAPIKeyExchange no

/etc/sshd_config说明如下:

# To disable tunneled clear text passwords both PasswordAuthentication and
# ChallengeResponseAuthentication must be set to "no".

但是,匹配语句中不允许使用ChallengeResponseAuthentication,因此我尝试仅禁用密码身份验证:

Match User git
      PasswordAuthentication no

这不起作用 - 我仍然可以使用用户名/密码登录git@my.server :(

但是,添加KbdInteractiveAuthentication no似乎可以正常工作:

Match User git
      PasswordAuthentication no
      KbdInteractiveAuthentication no

现在,当我尝试在没有公钥的情况下登录时,我得到Permission denied (publickey,gssapi-keyex,gssapi-with-mic)。这似乎表明除了publickey之外还有一些方法允许从git用户登录(即gssapi-keyexgssapi-with-mic

似乎更好的方法是简单地将身份验证方法限制为publickey

Match User git
    AuthenticationMethods publickey

这会给出响应“Permission denied(publickey)。

问题:强>

  1. ChallengeResponseAuthentication和之间有什么区别?
    KbdInteractiveAuthentication?为什么是
    匹配语句中允许KbdInteractiveAuthentication但不允许
    ChallengeResponseAuthentication
  2. AuthenticationMethods publickey方法是否存在任何缺点/安全问题?
  3. (如果您可以帮助我理解gssapi-keyex / gssapi-with-mic以及它们与已启用的GSSAPI / Kerberos选项的关系,那么可以获得奖励)
  4. 醇>
作者:cdwilson

最佳答案

有一个很好的总结ChallengeResponseAuthenticationKbdInteractiveAuthentication之间的区别
http://blog.tankywoo.com/ linux / 2013/09/14 / ssh-passwordauthentication-vs-challengeresponseauthentication.html - 摘要是ChallengeResponse经常最终只是要求输入密码(但坚持以交互方式提供)。

KbdInteractiveAuthenticationChallengeResponseAuthentication是不同的事情。只是ChallengeResponseAuthentication最终只能在简单的情况下提示输入密码。

ChallengeResponseAuthentication是一个全局设置,无法在Match子句中指定 - 有关详细信息,请参阅sshd_config手册页。

明确指定AuthenticationMethods publickey用户的git应该可以正常运行,并且比禁用不需要的那些(因为列表可能会更改)更好。< / p>

如果您在gssapi环境(例如Active Directory域)中工作,Kerberos选项就会起作用。

作者:,Paul Haldane

相关问答

添加新评论