我正在与Travis CI进行持续整合。 这是我的配置:
before_install:
- echo -e "Host *\n\tStrictHostKeyChecking no\n" > ~/.ssh/config
- echo -e $id_rsa.pub > ~/.ssh/id_rsa.pub
- echo -e $id_rsa > ~/.ssh/id_rsa
- sudo chmod 600 ~/.ssh/*
- sudo chmod 644 ~/.ssh/config
- eval `ssh-agent -s`
- ssh-add ~/.ssh/id_rsa
...
$ ssh-add ~/.ssh/id_rsa
Enter passphrase for /home/travis/.ssh/id_rsa:
在ssh-add步骤中,它会询问密码并停止部署。我已经使用其他没有密码短语的ssh密钥进行了测试,但它没有解决我的问题。
我测试过很多解决方案,例如yes $MY_PASSWORD | ssh-add ~/.ssh/id_rsa
或echo "$MY_PASSWORD" | ssh-add ~/.ssh/id_rsa
,但它不起作用。
我已添加到我的.ssh / config(您可以在我的配置中看到它):
Host *
StrictHostKeyChecking no
是不是应该让它不要问我密码?
也许有人有想法? 谢谢:))
答案 0 :(得分:0)
您正在使用加密私钥(这很好),但它需要密码(这对脚本来说不好)。有几种可能性可以继续:
从密钥中删除密码并使用未加密的密码(安全性较低)
ssh-keygen -p -P "old_passphrase" -N "" -f ~/.ssh/id_rsa
使用sshpass
工具解锁密钥(在脚本中存储密钥旁边的密码短语基本上会破坏加密密钥的安全性)
sshpass -p passphrase ssh-add ~/.ssh/id_rsa
答案 1 :(得分:0)
我解决了我的问题。 我在环境变量和echo的基本使用方面遇到了不同的问题。
我的环境变量名称并不好。 " $ id_rsa.pub"在travis中由$ id_rsa解释。 "的.pub"所以它为我的内容添加了一些错误的字符。我将其重命名为id_rsa_pub。
我忘了转变" " in" \"和#34; \ n"并且使用travis和他的环境变量,你必须写" \\ n"而不只是" \ n"。
我的问题部分是因为糟糕的ssh文件,并且因为我使用带密码的rsa密钥。在我的情况下,拥有密码并不重要,所以我删除了它。 为此,我使用jakuje的答案。我的ssh密钥现在已在每个版本中正确安装。
感谢您的帮助!