SSH PKI 认证

SSH PKI 认证

在我的公司,我们目前正在将 AD 身份验证集成到我们的 Linux 服务器中。我已经能够使用 PBISO(Power Broker Identity Service)完成这部分。用户可以使用 AD 帐户登录。

我们现在更进一步,我的任务是通过公钥启用无密码登录。这是我遇到问题的地方。为了实现这一点,我几乎需要将每个用户的公钥粘贴到他们的 ~/.ssh/authorized_keys 中。但这是不切实际的,而且效率极低。我需要找到一种方法来自动化此操作。你可能会说这可以编写脚本,但我相信这是一个更深的兔子洞。无法手动创建 AD 主目录。

我想出的一种变体是将用户重定向到组目录,例如 /home/group1/。因此,我创建了这个本地用户 group1,然后在 /home/group1/.ssh/authorized_keys 中添加了 aduser pubkey 来测试这一点。当我以 aduser 身份进行 SSH 时,它要求输入密码而不是使用密钥。仅当我以 group1 本地用户身份 ssh 时它才有效。

问题:您可以将公钥存储到本地用户 ~/.ssh/authorized_keys 并以其他用户身份登录吗?如果这是可行的,我怎样才能让它发挥作用?

我的目标是让用户使用他们的 AD 帐户登录,重定向到 /home/group1/ 并使用authorized_keys进行无密码身份验证。

任何意见都会受到赞赏。谢谢。

答案1

感谢 @PhilipCouling 的输入,我找到了任务的解决方案。

我已在 /etc/ssh/sshd_config 中启用 AuthorizedKeysCommand 和 AuthorizedKeysCommandUser 来运行将获取公钥的查找脚本。

AuthorizedKeysCommand /sshkey-check.sh AuthorizedKeysCommandUser root

在此脚本中,我在哈希数组中添加了用户密钥,并回显相应的密钥以进行身份​​验证。

即:ssh 域\aduser1@centosbox

#!/bin/bash

declare -A keys

# remove the domain name and the backslash from the username entered, i.e. domain\
user=$(echo $1 | sed 's@.*\\@@') 

keys[aduser1]="public key"
keys[aduser2]="public key"
keys[aduser3]="public key"

echo ${keys[${user}]}

相关内容