来自一行环境变量的 ssh 私钥

Private ssh key from one line environment var

我的 privkey.pem 私钥格式为

-----BEGIN RSA PRIVATE KEY-----
xxx
-----END RSA PRIVATE KEY-----

我需要创建一个 Bamboo 任务以使用此密钥通过 ssh 连接到服务器。不幸的是,我看到 Bamboo 只能在一行中存储变量,所以如果我粘贴密钥,所有“\n”都会被删除,所以这不起作用:

eval $(ssh-agent -s)
echo "${bamboo.sshKey}" | ssh-add - > /dev/null
scp -vvv -o StrictHostKeyChecking=no .....

有没有一种方法可以让 ssh-add 读取“一行”格式的私钥? 或者,是否有一种干净的方法来重新解析密钥以再次获得剥离的“\n”?

我不知道斑竹。所以可能有更好的解决方案。但一种方法是使用一些符号来分隔变量中的行。然后在将符号输入 ssh-add.

时使用 sedtr 之类的东西将符号转换为新行

Replace comma with newline in sed on MacOS?

我意识到我有点晚了,但是 sedtr 的解决方案对我来说效果不佳。我最终使用了 base64base64 -d,例如

echo "${bamboo.sshkey}" | base64 -d > id_rsa
chmod 600 id_rsa
export GIT_SSH_COMMAND='ssh -i id_rsa -o StrictHostKeyChecking=no'
....
rm id_rsa

使用像 sshkey 这样的变量名会使 Bamboo 掩盖它。