[SSH] Reverse SSH 접속 Computer Tip

지난번 블로그와 마찬가지로 그동안 SSH 터널링을 통해서 다른 프로토콜을 태우는 것을 알아보았다면
이번에는 필요에 따라 Reverse Tunneling 에 관해서 알아보도록 하겠습니다.

우선 아래와 같은 그림이 있다고 가정해 봅니다.

우리 집안에 들어와 있는 인터넷선을 NAT를 이용해서 자신의 노트북이 192.168.1.10 이라는 주소를 공유기를
통하여 주소를 받았다고 가정합니다.

그리고 원격 공인 IP를 가지는 10.20.30.40 이라는 리눅스 서버가 있어 여기에 SSH로 접속할 수 있다고 가정합니다.

그러면 192.168.1.10 머신에서

$ ssh user@10.20.30.40 
이라고 하여 10.20.30.40 머신에 접속 가능하다고 가정합니다.

그런데 NAT 환경 등으로 인하여 10.20.30.40 에서는 192.168.1.10 으로는 결코 접속할 수 없습니다.
그 이유는 네트워크 경로가 마련되어 있지 않기 때문이지요.
물론 공유기에서 해당 서비스포트를 포트 포워딩을 설정하여 할 수 있지만 이것은 논외 입니다.

이제 위와 같은 환경임에도 불구하고 SSH를 간단히 맺을 수 있는 방법을 소개합니다.

바로 ssh 중에 -R 옵션을 통하여 가능합니다.

우선 192.168.1.10 머신에서 아래와 같은 명령을 줍니다.

$ ssh -f -R 12345:localhost:22 user@10.20.30.40 sleep 100

또는

$ ssh -nNT -o TCPKeepAlive=yes -R 12345:127.0.0.1:22 user@10.20.30.40

(암호를 물어보면 암호를 넣습니다. 아니면 키 관리에 의하여 
ssh-keygen 명령을 통해 만든 id_rsa.pub 의 내용을 원격 접속할 사용자 홈디렉터리에
.ssh/authorized_keys 를 넣어 키로 접속해도 됩니다. putty에서 키를 이용 참조)


간단히 설명하면 다음과 같습니다.
-f 옵션으로 user@10.20.30.40 에 접속하여 sleep 100 명령을 실행합니다.
그와 더불어 
-R 12345:localhost:22 옵션은 접속된 10.20.30.40 번의 12345 포트를 listen 하는데
거기에 접속하는 연결을 로컬 (192.168.1.10)의 22번 포트에 거꾸로 연결시킵니다.

위와 같이 되어 있는 상황에서 100초 이내에,

원격(10.20.30.40) 서버의 터미널에서

$ ssh ruser@localhost -p 12345
와 같이 접속 시도를 하면

192.168.1.10에서 10.20.30.40 으로 만들어 놓은 터널을 통하여
거꾸로 10.20.30.40에서 192.168.1.10의 sshd 로 접속 가능합니다.


어느 분께는 도움이 되셨기를...

핑백

  • 지훈현서 : [Python] ZeroMQ Publish-Subscribe 패턴 2015-11-24 09:53:13 #

    ... 중간에 연결이 끊기거나 서버가 죽었다가 다시 살아나더라도 연결 등은ZeroMQ가 채널 연결 보장을 해 줍니다. 이와 같은 게시-구독의 특징 중의 하나는,지난번의 Reverse-SSH 와 같이 서버에서 클라이언트로 먼저 연결이 되지 않아도되는 환경에서 사용할 수 있다는 장점이 존재합니다. 또한 서버는 아무리 클라이언트가 많아도 그것을 ... more

  • 지훈현서 : 라즈베리파이로 AWS Reverse Tunelling 맺어보기 2016-08-09 10:13:58 #

    ... 지난번에 설치한 라즈베리파이 3 모델B가 잘 돌아서이제는 AWS와 리버스(역) 터널링을 맺어 봅니다. AWS에 공짜로 간단한 서버를 만들어 놓으면(해당 방법의 설명은 무척 많습니다)아래와 같이 쉽게 키로 (어디에서나) 쉽게 접속할 수 있습 ... more

  • 지훈현서 : [우분투] SSH 역 터널 supervisor 적용 2019-08-18 09:15:43 #

    ... 오래 전에 역터널 연결에 관하여 정리한 적이 있습니다. 이번에는 ESXi 서버에 우분투서버를 VM으로 기동시킨 상황에서 해당 VM의역터널을 Supervisor로 지정하는 것을 살펴 ... more

덧글

댓글 입력 영역

구글애드텍스트