我的 privkey.pem 私钥格式为
-----BEGIN RSA PRIVATE KEY-----
xxx
-----END RSA PRIVATE KEY-----
我需要创建一个 Bamboo 任务来使用此密钥通过 ssh 连接到服务器。不幸的是我发现 Bamboo 只能在一行中存储变量,所以如果我粘贴所有的键“ “ 被剥夺,所以这不起作用:
eval $(ssh-agent -s)
echo "${bamboo.sshKey}" | ssh-add - > /dev/null
scp -vvv -o StrictHostKeyChecking=no .....
有没有办法让私钥以“一行”格式从 ssh-add 读取? 或者,是否有一种干净的方法来重新解析密钥以再次获取被剥离的“ “?
我意识到我有点晚了,但是
sed
和 tr
的解决方案对我来说效果不佳。我最终使用了 base64
和 base64 -d
,例如
首先,像这样将 Linux 机器上的 SSH 私钥转换为
base64
,不带任何换行符:
base64 ~/.ssh/yourkey.id_rsa | tr -d '\n'
其次,将该行字符串复制并粘贴到名为“sshkey”的新计划变量中。
最后,创建一个脚本任务来解码密钥并使用它。
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用********
遮盖它,所以它有点随意地被遮盖了。它不安全,因为您可以轻松取消隐藏该值。
小心不要“编辑”
sshkey
,因为如果你编辑密钥并且它显示********
然后保存它,新密钥实际上将是一堆星号。(不是你的错,这是 UI 故障)
我不认识竹子。所以可能有更好的解决方案。但一种方法是使用一些符号来分隔变量中的行。然后在将其输入到
sed
时,使用 tr
或 ssh-add
之类的内容将符号转换为新行。