그래서 여기 내 설정입니다 : -> 호스트 1 -여러 SSH는 인터넷과 홉 :: SSH (루비)
노트북> 호스트 2 -> 호스트 3
는 노트북이 호스트 1에 도달하지만이 호스트 수 또는 호스트 3
호스트 1 호스트 2에 도달 할 수 있지만 3
호스트 3 호스트이 도달 할 수있는 호스트가 아닌 호스트 수 1
내가 원격 전달 설정 할 노력하고있어 그래서 실행중인 프로세스 호스트 3에서 랩탑에서 실행중인 서비스로 라우팅됩니다. 호스트에서 다음 다른 원격 앞으로
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}
하나 개의 스레드에서, 나는 1을 호스트하는 노트북에서 원격 앞으로 설정하고있어 :
노트북에서 실행 : 나는 성공적으로 다음 코드를 사용하여 이런 짓을했습니다 1 to Host 2. 별도의 스레드에서 랩톱에서 호스트 3으로 연결을 시작한 다음 호스트 3에서 호스트 2로 로컬 전달을 시작합니다.
랩톱에서 호스트 3에 연결할 수있는 유일한 방법은 다음과 같습니다. 내 .ssh/config 파일 때문에 랩톱에서 호스트 3에 연결하려고하면 자동으로 호스트 1과 호스트 2를 통해 라우팅됩니다.
내가 원하는 것은 .ssh/config 파일의 종속성을 제거 할 수 있도록 랩톱에서 호스트 3으로 연결하는 두 번째 스레드를 잘라 냈습니다. 첫 번째 스레드 내에서 모든 연결을 원합니다.
그래서 기본적으로 랩톱에서 발생한 여러 개의 홉을 수행해야합니다. 랩톱에서 호스트 1 로의 첫 번째 연결을 시작한 다음 호스트 1에서 명령을 실행할 수는 있지만 그 이후에는 더 이상 얻을 수 없습니다. 내가해야 할 일은 랩톱에서 호스트 1로 연결을 시작하고, 호스트 1에서 포워드를 설정하고, 호스트 1에서 호스트 2에 연결 한 다음 호스트 2에서 두 번째 포워드를 설정하는 것입니다.
가능한 작업은 다음과 같습니다. 그물/ssh와 함께?
도움 주셔서 감사합니다.