如何在通过 Capistrano 部署 Rails 应用程序时输入 ssh 密钥的密码?

Posted

技术标签:

【中文标题】如何在通过 Capistrano 部署 Rails 应用程序时输入 ssh 密钥的密码?【英文标题】:How to enter passphrase for ssh key while deploy rails app via Capistrano? 【发布时间】:2017-04-18 22:32:32 【问题描述】:

我尝试按照本教程将我的应用部署到数字海洋服务器。

https://www.digitalocean.com/community/tutorials/deploying-a-rails-app-on-ubuntu-14-04-with-capistrano-nginx-and-puma

所以我可以成功克隆我的应用程序,但是在部署生产应用程序时,它要求我输入密码,但是当我在终端中输入密码时,似乎没有发生这样的事情

cap production deploy:initial
deploy@xxxxxx's password: 
deploy@xxxxxx's password: 
rvm 1.27.0 (latest) by Wayne E. Seguin <wayneeseguin@gmail.com>, Michal Papis <mpapis@gmail.com> [https://rvm.io/]
ruby-2.3.0
ruby 2.3.0p0 (2015-12-25 revision 53290) [x86_64-linux]
00:00 git:wrapper
      01 mkdir -p /tmp
    ✔ 01 deploy@139.59.235.223 0.080s
      Uploading /tmp/xxxx.sh 100.0%
      02 chmod 700 /tmp/xxxx.sh
    ✔ 02 deploy@139.59.235.223 0.088s
00:00 git:check
      01 git ls-remote --heads git@bitbucket.org:xxxx/xxxx.git
      01 Enter passphrase for key '/home/deploy/.ssh/id_rsa':
password101
passwordyololo
howtotypepassword

那么我怎样才能在我的终端中输入密码并通过这种安全性呢?

谢谢!

【问题讨论】:

【参考方案1】:

正确完成的 SSH 密钥身份验证不应触发用户名密码检查。

尝试将您的 SSH 密钥添加到您的 Droplet 上的授权密钥中。您可以通过与您的 Droplet 建立 SSH 连接来检查您的设置,如果它要求输入用户名密码,则重新进行设置。

cat ~/.ssh/id_rsa.pub | ssh -p your_port_num deploy@your_server_ip 'cat >> ~/.ssh/authorized_keys'

此外,由于您向 ssh 密钥添加了密码,因此您需要将 SSH 密钥添加到 ssh-agent,这样它就可以记住您的密码,而无需您在每次部署时都输入密码。

ssh-add -k ~/.ssh/id_rsa

使用带有密码短语的 ssh 密钥的其他信息: https://help.github.com/articles/working-with-ssh-key-passphrases/

【讨论】:

【参考方案2】:

您需要先设置密钥。看: https://www.digitalocean.com/community/tutorials/deploying-a-rails-app-on-ubuntu-14-04-with-capistrano-nginx-and-puma#step-5-—-setting-up-ssh-keys

【讨论】:

我已经正确设置了,即使我可以将 repo 克隆到我的 droplet。

以上是关于如何在通过 Capistrano 部署 Rails 应用程序时输入 ssh 密钥的密码?的主要内容,如果未能解决你的问题,请参考以下文章

无法通过 capistrano 部署 rails 5 应用程序

Rails 4,Capistrano 3.0.0,无法加载这样的文件——部署

当通过 NVM 安装 NPM 时,Capistrano 部署失败并出现 react_on_rails

部署后缺少宝石(Ruby,Ruby on Rails,Capistrano)

Rails 4 + Capistrano + AWS Net::SSH::AuthenticationFailed: 部署

加速资产:使用 Rails 3.1/3.2 Capistrano 部署预编译