SSH 服务器检查来自其他来源的公钥

SSH 服务器检查来自其他来源的公钥

在密钥认证的 ssh 连接中,用户发送他想要使用的公钥的 ID。然后,服务器检查 authorized_keys 文件中的公钥。

我希望服务器不要在authorized_keys文件中查找该ID,而是使用用户名从另一个来源(例如数据库,另一个文件,远程服务器等)检索密钥。

可以这样做吗?

答案1

要更改文件路径,您可以指定授权密钥文件sshd_config 中的选项(假设服务器运行 OpenSSH)。您可以提供多个路径,可以是相对于用户主目录的路径,也可以是%u扩展到用户名的绝对路径。

例如,保留默认的 authorized_keys 位置和添加/etc 中的一个文件:

AuthorizedKeysFile  .ssh/authorized_keys  /etc/ssh/users/%u.txt

使用外部命令,如果服务器使用的是 OpenSSH 6.2 或更高版本,您可以指定授权密钥命令在服务器的 sshd_config 文件中,指向自定义程序或脚本。

该程序将在每次登录时运行,接收用户名作为命令行参数,并且需要通过 stdout 输出该用户的密钥列表(使用与 authorized_keys 相同的格式)。

例如,如果您使用 LDAP,则固态存储系统sss_ssh_authorizedkeysLDAP 客户端已经包含一个用于从用户的 sshPublicKey 属性中检索密钥的工具。

AuthorizedKeysCommand /usr/bin/sss_ssh_authorizedkeys
AuthorizedKeysCommandUser nobody

相关内容