从第3章初始化ssh会话?

问题描述:

我曾经使用cap-ssh作为快捷方式来启动到服务器的ssh连接,但it doesn't look like it works in capistrano 3了。从第3章初始化ssh会话?

有没有人有任何建议,从第3帽capistrano启动SSH连接?

您可以定义SSH的任务是这样的:

desc 'Start an ssh session to your servers.' 
task :ssh do 
    role = (ENV['ROLE'] || :app).to_sym 
    on roles(role) do 
    hosts = env.instance_variable_get(:@servers).instance_variable_get(:@servers) 
    hosts = hosts.select { |h| h.roles.include? role } if role 
    if hosts.size > 1 
     $stdout.puts "Pick a server to connect to:" 
     hosts.each.with_index do |host, i| 
     $stdout.puts "\t#{i + 1}: #{host.user}@#{host.hostname} role: #{host.roles.to_a}" 
     end 
     selected = $stdin.gets 
     selected = 1 if selected.empty? 
     host = hosts[selected.to_i - 1] 
    else 
     host = hosts.first 
    end 
    fail "No server defined!" unless host 

    port = host.netssh_options[:port] || fetch(:ssh_options) && fetch(:ssh_options)[:port] || 22 
    system "ssh -t -p #{port} #{host.user}@#{host.hostname} #{host.netssh_options[:forward_agent] ? '-a' : ''} 'cd #{current_path}; bash --login'" 
    end 
end