2012-11-18 5 views
3

원격 레거시 애플리케이션과 안전하게 이야기하기 위해 사용할 SSH 터널을 만들고 싶지만 다른 로컬 애플리케이션이이를 사용할 수 없도록해야합니다. 파이썬 및/또는 루비에서 가능한가요? 보통 소켓 핸들처럼 쓰고 읽을 수있는 터널에 메모리 내 핸들을 사용하고 있을까요?로컬 포트를 만들지 않고도 Ruby 또는 Python에서 SSH 터널을 만들 수 있습니까?

ssh ssh_host -W host:port 

내가 파이썬이나 루비 모르겠지만, 펄 당신 easyly Net::OpenSSH이 기능을 사용할 수 있습니다 OpenSSH를의

+0

코드가 원격 응용 프로그램과 어떻게 대화합니까? – Reactormonk

+2

로컬 터널 포트에 대한 액세스를 제어함으로써'iptables'를 사용하여 이렇게 할 수 있습니다 : [XY 어플리케이션/사용자 만 허용하는 iptables/pf 규칙] (http://unix.stackexchange.com/questions/12499/ iptables-pf-rule-to-only-allow-xy-application-user) –

+0

https://github.com/apenwarr/sshuttle에서 TCP 스트림을 디스 어셈블합니다. – Reactormonk

답변

1

최신 버전은 원격 TCP 포트에 표준 입출력을 연결하는 -W 플래그를 지원합니다. 예 :

use Net::OpenSSH; 
my $ssh = Net::OpenSSH->new($host); 
my $out = $ssh->capture({tunnel => 1, 
         stdin_data => "GET/HTTP/1.0\n\n" }, 
         'www.google.com', 80); 

print $out; 
+0

이것은 유망 해 보입니다 ... 최대한 빨리 나가겠습니다. 감사! – Bryan

+1

글쎄, 나는 더 이상 이것을 할 필요가 없어서 나는 그것을 줄 수 없었다. 그러나 나는 STDIN과 STDOUT에 대한 액세스가 루비와 파이썬에서 가능할 것이므로 내 질문에 대한 대답으로 받아 들일 것입니다. :) – Bryan