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

问题描述 投票:0回答:2

我的 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 读取? 或者,是否有一种干净的方法来重新解析密钥以再次获取被剥离的“ “?

unix ssh-keys bamboo
2个回答
3
投票

我意识到我有点晚了,但是

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 故障)


0
投票

我不认识竹子。所以可能有更好的解决方案。但一种方法是使用一些符号来分隔变量中的行。然后在将其输入到

sed
时,使用
tr
ssh-add
之类的内容将符号转换为新行。

参见 在 MacOS 上的 sed 中用换行符替换逗号?

© www.soinside.com 2019 - 2024. All rights reserved.