Capistrano 3.0 - 如何安全地提示输入密码? [英] Capistrano 3.0 — How securely prompt for password now?

查看:215
本文介绍了Capistrano 3.0 - 如何安全地提示输入密码?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

3.0 之前,有一种方法可以做到这一点:

Prior to 3.0 there was a way to do that:

# ...
set :mysql_password, proc { Capistrano::CLI.password_prompt "Gimme remote database server password. Don't worry, I won't tell anyone: " }
# ...

namespace :db do
  desc 'Dump remote database'
  task :dump do
    run "mysqldump -u #{mysql_user} -p #{mysql_database} > ~/#{mysql_database}.sql" do |channel, stream, data|
      if data =~ /^Enter password:/
        channel.send_data "#{mysql_password}\n"
      end
    end
  end
end

它提示输入密码,不会在您键入时显示,也不会在其中留下痕迹日志和输出。

It prompts for password, doesn't show it as you type and leaves no traces of it in the logs and the output.

现在,截至 3.0 是我找到的唯一方法:

Now, as of 3.0 the only way I have found:

# ...

namespace :db do
  desc 'Dump remote database'
  task :dump do
    ask :mysql_password, nil
    on roles(:db) do
      execute "mysqldump -u#{fetch :mysql_user} -p#{fetch :mysql_password} #{fetch :mysql_database} > ~/#{fetch :mysql_database}.sql"
    end
  end
end

它做的工作,但显示密码无处不在。

It does the job but reveals password everywhere.

有没有人找到一个安全的方式密码提示在 3.0 ?谢谢!

Have anyone found a secure way for password prompting in 3.0? Thanks!

推荐答案

# Capistrano >= 3.3.3 supports `echo: false`
ask :password, 'default', echo: false
server 'server.domain.com', user: 'ssh_user_name', port: 22, password: fetch(:password), roles: %w{web app db}

- faq@capistranorb.com

- @ mattbrictson,capistrano / capistrano

这篇关于Capistrano 3.0 - 如何安全地提示输入密码?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆