Alors, voici ma configuration:SSH multiples sauts avec Net :: SSH (Ruby)
ordinateur portable -> Hôte 1 -> Hôte 2 -> Hôte 3
ordinateur portable peut atteindre l'hôte 1, mais pas hôte 2 ou hôte 3
hôte 1 peut atteindre l'hôte 2, mais pas hôte 3
hôte 3 peut atteindre l'hôte 2, mais pas hôte 1
ce que je suis en train de faire est de mettre en place vers l'avant à distance de sorte qu'un processus en cours sur l'hôte 3 sera acheminé au service en cours sur l'ordinateur portable. Je l'ai fait avec succès en utilisant ce le code suivant:
Run de portable:
require 'rubygems'
require 'net/ssh'
threads = []
config = {:user => "user", :remote_port => 3333, :service_port => 2222}
threads << Thread.new{
Net::SSH.start("host1", config[:user]) do |ssh|
puts "Forwarding port #{config[:remote_port]} on host1 to #{config[:service_port]} on localhost"
ssh.forward.remote(config[:service_port], "localhost", config[:remote_port], "127.0.0.1")
ssh.exec! "ssh #{config[:user]}@host2 -R #{config[:remote_port]}:localhost:#{config[:remote_port]}"
ssh.loop {true}
end
}
threads << Thread.new{
Net::SSH.start("host3", config[:user]) do |ssh|
puts "Creating local forward for port #{config[:service_port]} on host3 to port #{config[:remote_port]} on host2"
ssh.exec! "ssh #{config[:user]}@host2 -L #{config[:service_port]}:localhost:#{config[:remote_port]}"
ssh.loop {true}
end
}
threads.each {|t| t.join}
Dans un fil, je suis la mise en place d'une télécommande avant de portable à l'hôte 1 et puis un autre à distance avant de l'hôte 1 à l'hôte 2. Dans un fil séparé, je commence une autre connexion de l'ordinateur portable à l'hôte 3, puis exécute un transfert local de l'hôte 3 à l'hôte 2.
La seule façon de me connecter de l'ordinateur portable à l'hôte 3 est à cause de mon fichier .ssh/config, qui me fait automatiquement passer par l'hôte 1 et l'hôte 2 lorsque j'essaie de me connecter à l'hôte 3 depuis l'ordinateur portable. Ce que je veux faire est de couper le deuxième thread où je me connecte de l'ordinateur portable à l'hôte 3 afin que je puisse supprimer la dépendance sur le fichier .ssh/config. Je veux faire toutes mes connexions depuis le premier fil.
Donc, fondamentalement, j'ai besoin de faire plusieurs sauts qui proviennent de l'ordinateur portable. Je peux lancer la première connexion de l'ordinateur portable à l'hôte 1, puis exécuter une commande sur l'hôte 1, mais après cela, je ne peux plus aller plus loin. Ce que je dois faire est d'initier la connexion de l'ordinateur portable à l'hôte 1, configurer l'avant sur l'hôte 1, se connecter à l'hôte 2 de l'hôte 1, puis configurer la deuxième sur l'hôte 2.
Est-ce possible? avec net/ssh?
Merci pour votre aide!