【问题标题】:travis-ci - ssh-add asking for my passphrasetravis-ci - ssh-add 询问我的密码
【发布时间】:2017-01-21 00:26:35
【问题描述】:

我正在与 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

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

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

【问题讨论】:

  • "StrictHostKeyChecking no ...难道不应该让它不问我密码吗?" - 不。StrictHostKeyChecking 相当于 SSH其他协议(如 HTTPS)中的公钥固定。它与远程登录凭据无关。

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


【解决方案1】:

您正在使用加密的私钥(这很好),但它需要密码(这对脚本编写不利)。您可以继续进行以下几种可能性:

  • 从密钥中删除密码并使用未加密的密码(不太安全)

    ssh-keygen -p -P "old_passphrase" -N "" -f ~/.ssh/id_rsa
    
  • 使用sshpass工具解锁密钥(在脚本中将密码存储在密钥旁边基本上会破坏加密密钥的安全性)

    sshpass -p passphrase ssh-add ~/.ssh/id_rsa
    

【讨论】:

  • 我的操作可能有问题...我已经测试了你的两个命令,他们看起来很适合解决我的问题,但它对我说“密码错误”所以我不明白,因为在在我的计算机上本地它可以工作....我错过了 travis 上的 ssh 密钥我想...我在本地创建了另一个没有密码的 ssh 密钥将它放在 travis 上,它也对我说“密码错误”。 ..奇怪..
  • 请清楚说明您做了什么,对上述“脚本”做了哪些修改,您是如何创建旧密钥或新密钥的。
  • 忘记我的新密钥,我现在只使用旧密钥,这是我个人计算机上当前的本地密钥。我在 travis-ci.org 设置面板($id_rsa 和 $id_rsa.pub)的两个环境变量中复制了 .ssh/id_rsa 和 .ssh/id_rsa.pub 的内容。我对 $passphrase 中的密码也做了同样的事情。在我发布的脚本中(before_script 部分,在 ss-add 命令之前),我添加了“sshpass -p $passphrase ssh-add ~/.ssh/id_rsa”。它对我说“密码错误”。我在没有环境变量的计算机上本地尝试了相同的命令,它使用相同的键。
  • - echo -e $id_rsa > ~/.ssh/id_rsa 听起来不对。 id 是多行的,我认为 echo 不能正确处理它
  • 我在我的脚本中使用硬编码的密码进行了测试,它也告诉我密码错误。验证我的密钥后,我有一些可以帮助的东西: cat -e ~/.ssh/id_rsa.pub -----BEGIN.pub$ 并且文件在这里完成。
【解决方案2】:

我已经解决了我的问题。 我在环境变量和回显的基本使用方面遇到了不同的问题。

  • 我的环境变量名称不好。 travis 中的“$id_rsa.pub”由 $id_rsa 解释。 “.pub” 所以它在我的内容中添加了一些错误的字符。我将其重命名为 id_rsa_pub。

  • 我忘记在 "\" 中转换 " " 并用 "\n" 转换换行符,并且使用 travis 和他的环境变量,您必须写 "\\n" 而不仅仅是 "\n"。

我的问题部分是因为 ssh 文件错误,并且因为我使用带密码的 rsa 密钥。就我而言,拥有密码并不重要,因此我将其删除。 为此,我使用 jakuje 的答案。我的 ssh 密钥现在已正确安装在每个版本中。

感谢您的帮助!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-19
    • 2018-02-20
    • 2015-10-01
    • 2020-02-17
    • 1970-01-01
    • 2015-12-19
    相关资源
    最近更新 更多