travis-ci - ssh-add询问我的密码

时间:2017-01-21 00:26:36

标签: linux ssh continuous-integration debian travis-ci

我正在与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_rsaecho "$MY_PASSWORD" | ssh-add ~/.ssh/id_rsa,但它不起作用。

我已添加到我的.ssh / config(您可以在我的配置中看到它):

Host *
    StrictHostKeyChecking no

是不是应该让它不要问我密码?

也许有人有想法? 谢谢:))

2 个答案:

答案 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密钥现在已在每个版本中正确安装。

感谢您的帮助!