我对下面的配置和随后的行为感到困惑。
/etc/ssh/sshd_config:
AuthorizedPrincipalsFile /etc/ssh/principals/etc/ssh/主体:
all
host.example.com
dev这允许我以任何用户的身份登录,使用具有一个或多个匹配主体的证书。
我在这里错过了什么?
我现在明白了,这是注定的:
AuthorizedPrincipalsFile /etc/ssh/principals/%u但是我的(Mis)配置肯定不应该允许任何用户?
Ubuntu 18.04.5 LTS
OpenSSH_7.6p1 Ubuntu-4 ubuntu0.3,OpenSSL 1.0.2n 2017年12月7日
发布于 2021-09-13 16:17:38
这是故意的行为。基本上,如果您指定了一个静态的、非参数化的AuthorizedPrincipalFiles,那么对所有用户都使用相同的文件。如果您想要基于用户的控制,您必须使用%u的东西。
如果您查看AuthorizesPrincipalsCommand,在引擎盖下发生的事情会变得更清楚。它运行指定的命令,将用户作为参数传递。所述命令可以是任何内容,但应该将有效的主体字符串输出到stdout,然后sshd将继续使用该字符串作为主体文件。
现在想想
AuthorizedPrincipalsFile /etc/ssh/principals在概念上与
AuthorizedPrincipalsCommand /bin/AuthorizedPrincipalsFile其中,AuthorizedPrincipalsFile是一个丢弃用户参数并只返回静态字符串的程序:
#!/bin/bash
# /bin/AuthorizedPrincipalsFile
echo "I'm not using this: $1" >/dev/null
cat /etc/ssh/principals因此,只要密钥证书中提到的主体(S)也在服务器静态/etc/ssh/principals中,密钥的所有者就可以作为每个用户登录。
见手册:https://man.openbsd.org/sshd_config#AuthorizedPrincipalsCommand
https://security.stackexchange.com/questions/254193
复制相似问题