Capistrano 3 部署要求输入 SSH 密码,但无法输入

Posted

技术标签:

【中文标题】Capistrano 3 部署要求输入 SSH 密码,但无法输入【英文标题】:Capistrano 3 deploy asking for SSH passphrase but cannot type it in 【发布时间】:2014-05-19 10:59:57 【问题描述】:

我正在尝试使用 Capistrano 3 部署 Rails 4 应用程序。

#config valid only for Capistrano 3.1
lock '3.1.0'

set :application, 'testapp'
set :scm, :git
set :repo_url, 'git@bitbucket.org:sergiotapia/testapp.git'

set :user, "deploy" # The user on the VPS server.
set :password, "hunter2$$"
set :use_sudo, false
set :deploy_to, "/home/deploy/www/testapp"
set :deploy_via, :remote_cache
set :pty, true
set :format, :pretty
set :keep_releases, 1
set :rails_env, "production"
set :migrate_target, :latest

namespace :deploy do

  desc 'Restart application'
  task :restart do
    on roles(:app), in: :sequence, wait: 5 do
      # Your restart mechanism here, for example:
      # execute :touch, release_path.join('tmp/restart.txt')
      execute :touch, release_path.join('tmp/restart.txt')
      system "curl --silent #fetch(:ping_url)"
    end
  end

  after :publishing, :restart

  after :restart, :clear_cache do
    on roles(:web), in: :groups, limit: 3, wait: 10 do
      # Here we can do anything such as:
      # within release_path do
      #   execute :rake, 'cache:clear'
      # end
    end
  end

end

运行cap production deploy 时,我收到以下消息:

DEBUG [322bb1fd]    Enter passphrase for key '/home/deploy/.ssh/id_rsa': 

当我在终端输入时,我可以看到字符,通常你输入密码时只是看到空格,对吧?

DEBUG [484154d4]    Enter passphrase for key '/home/deploy/.ssh/id_rsa': 
qwef

ewf
qw
ef
qwef
wqe
f
qwef
wqe
f
^Ccap aborted!
Interrupt: 

我输入密码并按回车,它就一直呆在那里,没有任何新的进展。我必须 Ctrl + C 才能真正离开终端。

我可以在 deploy.rb 文件中设置我的 SSH 密码吗?

【问题讨论】:

我应该使用无密码的 ssh-key 来部署服务器吗? 【参考方案1】:

我遇到了同样的问题。

我所做的是更改我的配置。为了避免 capistrano 询问您必须设置的密码短语`

set :pty, false

然后,您必须在用于触发终端的任何计算机中生成部署密钥(您可以在这里找到一个非常好的指南 https://confluence.atlassian.com/display/BITBUCKET/Set+up+SSH+for+Git,特别是如果您使用的是 bitbucket)并运行 cap production deploy

问题是,默认情况下,capistrano 会将 forward_agent 设置为 true,这将使用您计算机中生成的密钥在远程代码仓库中进行身份验证。

【讨论】:

你能告诉我passphrase在capistrano做什么吗? @Vinay 它代表您的密钥的密码【参考方案2】:

我所做的是删除密码

第一步:$ssh-keygen -p

第二步:$ssh-keygen -p [-P old_passphrase] [-N new_passphrase] [-f keyfile]

参考:

How do I remove the passphrase for the SSH key without having to create a new key?

【讨论】:

以上是关于Capistrano 3 部署要求输入 SSH 密码,但无法输入的主要内容,如果未能解决你的问题,请参考以下文章

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

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

Capistrano 和几个 SSH 密钥

使用 pem 文件与 capistrano 一起部署

Capistrano自动化部署工具安装详细过程

SSH免密登录实现