如何在通过 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: 部署