限制一些SSH用户只有公钥authentication的最佳方法(禁用密码authentication)

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

完全公开,Server.app启用一些额外的Kerberos和GSSAPI选项(尽pipe我不是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在匹配语句中是不允许的,所以我试着只禁用密码validation:

 Match User git PasswordAuthentication no 

这不起作用 – 我仍然可以用用户名/密码login到git@my.server 🙁

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

 Match User git PasswordAuthentication no KbdInteractiveAuthentication no 

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

看来更好的方法是简单地将authentication方法限制为publickey

 Match User git AuthenticationMethods publickey 

这给出了答复`权限被拒绝(公钥)。

问题:

  1. ChallengeResponseAuthenticationKbdInteractiveAuthentication什么KbdInteractiveAuthentication ? 为什么在匹配语句中允许KbdInteractiveAuthentication而不是ChallengeResponseAuthentication
  2. AuthenticationMethods publickey方法有什么缺点/安全问题吗?
  3. (如果您可以帮助我理解gssapi-keyex / gssapi-with-mic以及它们与已启用的GSSAPI / Kerberos选项之间的关系)

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

KbdInteractiveAuthenticationChallengeResponseAuthentication是不同的东西。 ChallengeResponseAuthentication只是在简单情况下最终只是提示input密码。

ChallengeResponseAuthentication是一个全局设置,不能在Match子句中指定 – 有关详细信息,请参见sshd_config手册页。

git用户显式指定AuthenticationMethods publickey应该可以正常工作,并且比禁用不需要的更好(因为列表可能会更改)。

如果您在Kerberos环境(例如Active Directory域)中工作, gssapi选项将发挥作用。