2012-01-10 5 views
14

현재 모든 들어오는 연결을 거부하는 방화벽 뒤의 서버에 SSH를 적용하는 방법을 연구 중입니다. 서버는 SSH를 수행 할 수 있으므로 방화벽 뒤에 서버를 설치하여 내 워크 스테이션에 SSH 터널을 생성 한 다음 내 워크 스테이션이이를 통해 서버로 명령을 다시 보낼 수있게 할 수 있는지 궁금합니다.방화벽 뒤의 SSH 서버

터널링/역방향 터널링에 대해 살펴 보았지만 방화벽이 모든 포트의 모든 연결을 거부하므로 포트 전달 솔루션 인 것으로 보입니다.

Net::SSH.start('host', 'user', :password => "password") 

어떻게 든 기존의 터널에 바인딩 할 수 있습니다 :

적으로는, 내가 대신 같은 새로운 연결을 여는하도록 (인터넷 :: SSH 보석을 사용하여) 루비에서이 작업을 수행하고 싶습니다.

감사합니다.

답변

25

서버를 제어 할 수 있다면 매우 간단합니다. 내가 명령 줄 버전을 줄 것이다, 당신은 당신이 원하는 프레임 워크에 그 일을 할 수 있습니다 : 서버가 "R"감정 표현의 끝에 듣기 시작 먼저 클라이언트에 대한 연결을 설정

server$ ssh -R 9091:localhost:22 client.example.egg 

client$ ssh -p 9091 localhost 

(즉, 클라이언트) 포트 9091 (방금 만든 무언가) 및 해당 연결을 localhost:22, 즉 자체에 ssh 서버에 전달합니다.

그러면 클라이언트는 서버의 ssh 서버로 투명하게 전달되는 자체 로컬 포트 ​​9091에 연결하면됩니다.

이것은 클라이언트의 ssh 클라이언트가 과 같음을 알지 못하기 때문에 대개 공개 키 확인 및 보안에 혼란을 야기합니다. 클라이언트가 퍼티이면 자격 증명을 제대로 조회 할 수 있도록 "실제"서버 이름을 어딘가에 제공 할 수 있습니다.

+0

localhost 그림을 와일드 카드로 표시 할 수있는 방법이 있습니까? 내 IP 주소가 바뀌고 항상 서버에 ssh 할 수 있기를 원합니다. DNS 확인자가 이미 설정되어 있습니다 – MichaelH

+0

@MichaelH : 잘 모르겠습니다. 피어 중 하나의 IP 주소가 변경되면 TCP 연결을 유지할 수 없습니다 ... –

+0

우리는 이것을 통해서도 http를 터널링 할 수 있습니까? – Will

0

먼저 연결하려는 호스트에서 터널을 생성하고 유지할 수 없다면 (그렇게하면 터널을 통해 연결할 수 있습니다), 그렇게 할 수 없습니다. 방화벽의 핵심은 네트워크에 대한 무단 액세스를 방지하는 것입니다.

그러나 터널이 관리되는 방법에 따라 방화벽이 터널을 차단하면 안됩니다. ssh's tunneling features을 사용하여 설정된 포트 전달 터널은 방화벽을 파괴합니다. 그러나 그것은 또한 원격 네트워크의 관리자와 문제가 발생할 수 있습니다.

궁극적으로 터널링을 필요로하지 않고 방화벽 규칙을 완화 시키거나 최소한 터널링 권한을 얻으려면 네트워크 관리자와상의해야합니다.

관련 문제