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

u0njafvf  于 2023-10-16  发布在  Linux
关注(0)|答案(3)|浏览(90)

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

不是应该让别问我密码吗?
也许有人有一个主意吗?谢谢您的支持:)

vhmi4jdf

vhmi4jdf1#

您使用的是加密的私钥(这很好),但它需要密码(这对脚本来说很糟糕)。有几种可能性,你可以继续:

  • 从密钥中删除密码,并在未加密的情况下使用它(安全性较低)
ssh-keygen -p -P "old_passphrase" -N "" -f ~/.ssh/id_rsa
  • 使用sshpass工具解锁密钥(在脚本中将密码存储在密钥旁边基本上会破坏加密密钥的安全性)
sshpass -p passphrase ssh-add ~/.ssh/id_rsa
2jcobegt

2jcobegt2#

我已经解决了我的问题。我有不同的问题,在基本利用环境变量和回声。

  • 我的环境变量名不好。travis中的“$id_rsa.pub”由$id_rsa解释。“.pub”所以它在我的内容中添加了一些错误的字符。我将其重命名为id_rsa_pub。
  • 我忘了把““转换成““,把换行符转换成“\n”,对于travis和他的环境变量,你必须写“\n”而不仅仅是“\n”。

我的问题部分是因为糟糕的ssh文件,因为我使用rsa密钥和密码。在我的情况下,它并不重要,有一个密码,所以我删除了它。对此,我使用了jakuje的答案。我的ssh密钥现在已经正确安装在每个版本中了。
谢谢您的帮助!

cngwdvgl

cngwdvgl3#

你可以做

before_install:
    - [...]
    - chmod 600 ~/.ssh/id_rsa
    - chmod 700 local-ssh-askpass
    - eval `ssh-agent -s`
    - DISPLAY=1 SSH_ASKPASS_REQUIRE=force SSH_ASKPASS=./local-ssh-askpass ssh-add ~/.ssh/id_rsa < /dev/null

别忘了设置:

  • =1以强制本地请求脚本
  • 重定向/dev/null中的输入
  • 来自local-ssh-askpass脚本的任何回显密码

相关问题