ruby - ruby-检查通过另一台机器到远程的SSH连接

我正在使用aws sdk来创建计算机,并且在创建计算机后,我想检查与这些计算机的ssh连接。
问题是-从我的机器上,我无法访问EC2机器,但是我的网络上还有另一台机器,我可以通过ssh对其进行访问,而该机器也可以访问EC2机器。
现在,有没有一种简单的方法可以通过ruby检查到EC2机器的ssh?

我尝试了以下方法:

proxy = Net::SSH::Proxy::HTTP.new('<proxy ip>', 22)
Net::SSH.start('<EC2 machine's IP>', '<USER>', :proxy => proxy) do |ssh|
end
Errno::ECONNRESET: Connection reset by peer
from /home/galt/.rvm/gems/ruby-1.9.3-p484/gems/net-ssh-2.7.0/lib/net/ssh/proxy/http.rb:76:in `gets'
from /home/galt/.rvm/gems/ruby-1.9.3-p484/gems/net-ssh-2.7.0/lib/net/ssh/proxy/http.rb:76:in `parse_response'
from /home/galt/.rvm/gems/ruby-1.9.3-p484/gems/net-ssh-2.7.0/lib/net/ssh/proxy/http.rb:62:in `open'
from /home/galt/.rvm/gems/ruby-1.9.3-p484/gems/net-ssh-2.7.0/lib/net/ssh/transport/session.rb:67:in `block in initialize'
from /home/galt/.rvm/rubies/ruby-1.9.3-p484/lib/ruby/1.9.1/timeout.rb:55:in `timeout'
from /home/galt/.rvm/rubies/ruby-1.9.3-p484/lib/ruby/1.9.1/timeout.rb:100:in `timeout'
from /home/galt/.rvm/gems/ruby-1.9.3-p484/gems/net-ssh-2.7.0/lib/net/ssh/transport/session.rb:67:in `initialize'
from /home/galt/.rvm/gems/ruby-1.9.3-p484/gems/net-ssh-2.7.0/lib/net/ssh.rb:200:in `new'
from /home/galt/.rvm/gems/ruby-1.9.3-p484/gems/net-ssh-2.7.0/lib/net/ssh.rb:200:in `start'
from (irb):12
from /home/galt/.rvm/rubies/ruby-1.9.3-p484/bin/irb:12:in `<main>'

谢谢 !

最佳答案

Net::SSH::Proxy::HTTP类旨在指向ssh连接的HTTP代理。因此,您将需要在该计算机上设置HTTP代理,以便能够通过它代理您的连接。

如果您不能这样做,建议您使用SSH反向隧道。我们将通过打开本地计算机上的端口8080,使用SSH隧道将发送到该服务器的流量转发到Server并使服务器将其转发到端口22上的EC2实例来实现此目的。net-ssh ruby​​ gem已经提供了帮助我们的命令。 ,但我们需要使用线程并行运行2个 session :

proxy_thread = Thread.new do
  Net::SSH.start('<proxy ip>', '<user>') do |ssh|
    ssh.forward.remote(8080, "<AWS ip>", 22)
    ssh.loop { true }
  end
end

proxy_thread.start

Net::SSH.start('localhost', '<localhost user>', port: 8080) do |ssh|
  #done
end

proxy_thread.kill

https://stackoverflow.com/questions/25037813/

相关文章:

hibernate - Grails渴望通过滚动获取

shell - 在每行的开头添加文本

ajax - 在Grails中使用Ajax动态刷新图像

git - "Permission denied (publickey)."Git错误

command-line - SSH与FTP:通过终端将本地文件推送到服务器

grails - Grails中的String的默认数据库映射类型是什么?

grails - grails控制列表方法的外观

ruby-on-rails - Rails 4.1:Rails:Module的未定义方法 `appl

grails - Grails Spring Security必填字段

grails - 使用 resources.groovy 定义服务