sshd 匹配身份验证用户使用的公钥类型(匹配公钥接受算法)

sshd 匹配身份验证用户使用的公钥类型(匹配公钥接受算法)

我想检测用户正在使用哪种类型的 ssh 公钥,并在 中对其执行匹配语句sshd_config
目标是防止在安全密钥(https://man.openbsd.org/ssh-keygen#FIDO_AUTHENTICATOR)或其他类型的公钥。
我看到https://man.openbsd.org/sshd_config#MatchMatch 属性PubkeyAcceptedAlgorithms。但是当我像这样使用它时:

Match PubkeyAcceptedAlgorithms [email protected],[email protected]

当我尝试重新启动 sshd 时出现此错误:

Apr 10 12:59:42 ssh sshd[67517]: Unsupported Match attribute PubkeyAcceptedAlgorithms
Apr 10 12:59:42 ssh sshd[67517]: /etc/ssh/sshd_config line 136: Bad Match condition

您有解决方案来满足我的要求吗?

答案1

PubkeyAcceptedAlgoritms 不是 Match 属性。您找到的列表是可以已更改在 Match 部分中,但唯一可以匹配是:

可用的条件包括用户、组、主机、本地地址、本地端口、RDomain 和地址

OpenSSH 并不真正支持这种复杂的身份验证逻辑。不过,我认为在最近的版本中,它为 PAM 模块设置了一个特殊的 PAM 环境变量,以获取有关早期身份验证机制的信息,因此理论上您可以要求“publickey + pam”,但使用特定的 PAM 堆栈,如果它发现使用了硬件密钥,则会自动成功,否则继续使用 pam_unix。

答案2

根据手动的为了匹配指示:

可用的标准是用户团体主持人本地地址本地端口, 和地址

这是第一个条件的标准,然后您可以使用。块中列出的所有条件之间PubkeyAcceptedAlgorithms都有逻辑:AND

Match User root
  PasswordAuthentication no
  PubkeyAcceptedAlgorithms [email protected],[email protected]

相关内容