有没有办法配置 SSH 来检查多个用户的单个 authorized_keys 文件?我知道我可以将公钥复制到每个用户的 authorized_keys 文件中,但为了便于管理,我希望为管理员提供一个额外的 authorized_keys 文件,以允许他们登录所有用户(或特定用户组)。
答案1
您可以使用AuthorizedKeysFile
/etc/ssh/sshd_config 中的指令来执行此操作。默认位置是,.ssh/authorized_keys
但您可以使用包含绝对路径的内容,例如
AuthorizedKeysFile /path/to/your/keyfile
手册页上说了这一点
授权密钥文件
指定包含可用于用户身份验证的公钥的文件。AuthorizedKeysFile 可能包含在连接设置期间替换的 %T 形式的令牌。定义了以下令牌:%% 由文字“%”替换,%h 由正在验证的用户的主目录替换,%u 由该用户的用户名替换。扩展后,AuthorizedKeysFile 被视为绝对路径或相对于用户主目录的路径。默认值为“.ssh/authorized_keys”。
答案2
您的管理员应该使用适当的(适合您的环境的)sudo
和组合su
。
ssh
不是适合此目的的工具。
矛盾 编辑(抱歉,看来我得了标题盲症。谢谢佐尔达什):
将所有服务帐户放在同一个组中,使用该组作为块group
的一部分,指定您希望它们全部使用的。(匹配组是这样的Match
sshd_config
AuthorisedKeysFile
全部帐户不受影响。但是,他们将不再拥有单独的 AuthorisedKeysFiles。openssh-lpk
可能允许单独的帐户另外拥有自己的密钥,但我对此并不确定。
答案3
编辑:你应该赞同@Iain 的回答多于。它是完整和准确的。我下面的回答是针对共享的私人的键 - 显然是我的误解。我将这个答案留在这里,因为我认为这是一个有价值的信息,但不是针对这个特定问题。
我不知道您的用例,但我很想说“您做错了”。
每个用户都应该有自己的密钥。这样,当用户离职、调职、晋升为管理角色或发生任何其他需要撤销权限的情况时,您只需撤销该密钥即可。这也使有效审计变得更加困难。
如果您需要用户能够模拟其他用户,则应使用 对其进行配置sudo
。共享 SSH 密钥通常不是一个好主意。
答案4
截至撰写本文时,可以通过 sshd_config 中的以下配置来实现:
AuthorizedKeysFile .ssh/authorized_keys /etc/ssh/authorized_keys
并确保 /etc/ssh/authorized_keys 至少可供您尝试登录的用户读取。如果 chmod 为 600,仅供 root 读取,则它将不起作用。
chmod 644 /etc/ssh/authorized_keys
然后它就会起作用。
这样,就不需要将所有 SSH 公钥不必要地合并到一个地方,并且我们保留了查找的自然功能~/.ssh/authorized_keys
。
由于该文件仅包含公钥,我们将 chmod 设置为 644,使其可供所有人读取但不可写入。另一种方法是创建一个自定义组,以稍微减少暴露,但无论如何,无论我们做什么,总会有多个用户有权访问此文件,因此在这种情况下没有必要为此文件设置过于复杂的权限。
请注意,所有用户root
也包括在内,因此您应该只将自己添加到/etc/ssh/authorized_keys
您已经具有根访问权限的服务器上。