将 ssh pubkey 添加到本地主机上的authorized_keys(跳过现有的)

将 ssh pubkey 添加到本地主机上的authorized_keys(跳过现有的)

authorized_keys当使用 jenkins 启动 docker 容器时,我需要将 jenkins pubkey 添加到我的主机中。寻找解决方案,但在互联网上找不到准备好的解决方案。可能看起来很明显,但至少对我来说不是:)

答案1

PUBKEY=$(cat ~/.ssh/id_rsa.pub); grep -q "$PUBKEY"  ~/.ssh/authorized_keys || echo "$PUBKEY" >> ~/.ssh/authorized_keys

此单行代码检查authorized_keys文件中是否已存在 pubkey,如果不存在,则将其附加到文件末尾。

~/.ssh/id_rsa.pub这是添加的 pubkey 的路径

~/.ssh/authorized_keys这是目标文件的路径authorized_keys~符号是主目录,即/home/accountname/

对于远程主机,可以使用ssh-copy-id

答案2

您可能想跳过使用 ~/.ssh/authorized_keys 的整个想法,而只使用 SSH CA 功能,如下所示:https://www.digitalocean.com/community/tutorials/how-to-create-an-ssh-ca-to-validate-hosts-and-clients-with-ubuntu(向下滚动到“如何配置用户密钥”)。

这样做的好处是,您只需配置容器一次(通过添加包含本地计算机上生成的 CA 密钥的公共部分的TrustedUserCAKeys /etc/ssh/users_ca.pub位置users_ca.pub),从那时起,如果您想向任何密钥授予对容器的访问权限,只需签署该密钥的公共部分与您的 CA 私钥并指定哪些帐户允许使用您正在签名的密钥。就像魔术一样工作:)

答案3

假设公钥位于 中~/.ssh/id_rsa.pub,那么您可以无条件地将其添加到~/.ssh/authorized_keys文件中,并在该文件上使用来sort -u删除重复项:

# Make sure that the file exists and has the correct permissions
touch ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys

# Add new key, removing duplicates.
sort -u -o ~/.ssh/authorized_keys ~/.ssh/authorized_keys ~/.ssh/id_rsa.pub

相关内容