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