我想检测用户正在使用哪种类型的 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]