2011-11-10 3 views
6

나는 해결하려는 특정 시나리오가 있습니다. 나는 현재 포트 포워딩을 통해 호스트에 연결 :리눅스에서 ssh 포트 포워딩 (터널링)

laptop -> gateway -> remote_server_1 

와 다른 호스트 :

laptop -> remote_server_2 

를 암호없이 로그인이 두 작업과 함께. 어느 원격 서버도 외부 세계에 보이지 않습니다. 이제 remote_server_2에서 서비스를 실행 중이며 remote_server_1에서 액세스 할 수 있기를 원합니다. 나는 remote_server_1에서 내 랩톱으로, 그리고 나서 remote_server_2로 리버스 포트 포워딩을 설정해야한다고 생각하지만, 어떻게해야할지 모르겠습니다. 누구든지이 상황을 우연히 만난 적이 있습니까?

편집 : 이 경우 다른 사람의 전체 솔루션은 필요 :

mylaptop$ ssh -L 3001:localhost:3000 server_2 
server_2$ netcat -l 3000 

그런 설정이 gatewayserver_1을 통해 터널 : 다음

ssh -t -t -L 3003:server_1:22 gateway 

server_1에서 액세스 :

ssh -R 3002:localhost:3001 -p3003 localhost 
echo "bar" | nc localhost 3002` 

과 안녕하세요. server_2bar :-)을 표시합니다.

답변

4

정확하게 설명한대로해야합니다. 서버를 server_2에 설치하십시오.

mylaptop$ ssh -L 3001:localhost:3000 server_2 
server_2$ netcat -l 3000 

그런 다음 server_1에서 액세스하십시오.

mylaptop$ ssh -R 3002:localhost:3001 server_1 
server_1$ echo "foo" | netcat localhost 3002 

server_2foo 표시됩니다.

+0

이 기능은 거의 작동하지만 server_1까지 터널링해야합니다. 나는 않도록 경우 : 3000 -p3003 localhost를 내가 오른쪽 라인입니다 : mylaptop $ SSH를 -L 3003 : 게이트웨이 : 3002 server_1 및 mylaptop $ SSH를 -R 3003 : localhost를? 도움이 되겠습니다. server_1에 netcat이 없습니다. (저에게는 관리자 권한이 없습니다.) – tdc

+0

죄송합니다. netcat은 Nc입니다. 어쨌든 아직 잘 작동하지 않습니다. – tdc

+0

내가 받아 들일 수있는 대답을 주겠다. 내가 할 수있는 충분한 단서를 주었다. – tdc