source: http://www.mirutopia.com/xe/index.php?mid=board_develop&listStyle=webzine&sort_index=readed_count&order_type=asc&document_srl=4865
외부에서 접속이 불가능한 PC로 원격 접속을 하려면 reverse tunneling 이 필요합니다.
우선 외부에서 접속이 불가능한 PC를 (A)라고 하고, 외부에 있는 PC를 (B)라고 가정합니다.
1. (A)에서 ssh를 통해 (B)로 reverse tunnel을 열어줍니다.
ssh -R <(B)의 터널링 포트>:localhost:<(A)의 터널링 포트> <(B)의 계정>@<(B)의 도메인, 또는 IP> -p <(B)의 ssh 포트> ex) ssh -R 1234:localhost:22 test@test.example.com -p:22 - 이렇게 하면 (A)에서 test.example.com의 PC에 port 22로 ssh 접속을 시도합니다.(패스워드 입력 필요) 접속이 성공하면 test.example.com의 PC에서 port 1234로 접속을 할 때, (A)의 port 22로 접속이 이루어집니다. |
2. (B)에서 <(B)의 터널링 포트>로 접속. ==> <(A)의 터널링 포트>로 연결됨.
- putty나 기타 ssh 클라이언트 프로그램을 이용하여 접속 가능.
회사 컴퓨터가 외부 접속에서 불가능할 경우, 유용한 방법이네요.
아.. (A)에서 linux나 cygwin에 ssh 서버가 설치되어 있어야 가능한 방법입니다.
----------------------------------------------------------------------------------------------------------------------------------------------------------------
source: http://ymkimit.blogspot.kr/2013/04/ssh-r-reverse-tunnel.html
ssh 는 보통 ssh 서버에 접속해 원격에서 서버를 관리할 목적으로 많이 사용된다. 클라이언트와 서버 사이에 교환되는 패킷들을 암호화하기 때문에 telnet보다 훨씬 안전하여 많이 사용되는 명령어이다. 하지만, ssh는 telnet 처럼 단순한 기능만을 제공하는 것은 아니다.
본 글에서는 ssh -R 옵션을 통해 reverse 터널을 열어 사용하는 방법을 기술하고자 한다.
두 호스트 A와 B가 있을때 A는 공인IP를 가지고 있지만, B는 사설IP만을 가지고 있다고 할 경우, 일반적으로 B에서 A로만 접근이 가능하다. 하지만, Reverse tunnel을 생성할 경우 A에서 B로의 접근이 가능해 진다. 예를 들어 설명하면, 여러분 가정에 사설IP만을 가지고 있는 리눅스 장비가 있을 경우, 외부에서 이 가정에 있는 리눅스로 접속하여 관리를 할 수 있다.
-R 옵션의 명령어 형태는 아래와 같다. 이 명령은 아래 그림의 client에서 수행하는 것이다.
위 그림과 명령어를 연관지어 설명하도록 하겠다.
----------------------------------------------------------------------------------------------------------------------------------------------------------------
source: http://ymkimit.blogspot.kr/2013/04/ssh-r-reverse-tunnel.html
ssh 는 보통 ssh 서버에 접속해 원격에서 서버를 관리할 목적으로 많이 사용된다. 클라이언트와 서버 사이에 교환되는 패킷들을 암호화하기 때문에 telnet보다 훨씬 안전하여 많이 사용되는 명령어이다. 하지만, ssh는 telnet 처럼 단순한 기능만을 제공하는 것은 아니다.
본 글에서는 ssh -R 옵션을 통해 reverse 터널을 열어 사용하는 방법을 기술하고자 한다.
두 호스트 A와 B가 있을때 A는 공인IP를 가지고 있지만, B는 사설IP만을 가지고 있다고 할 경우, 일반적으로 B에서 A로만 접근이 가능하다. 하지만, Reverse tunnel을 생성할 경우 A에서 B로의 접근이 가능해 진다. 예를 들어 설명하면, 여러분 가정에 사설IP만을 가지고 있는 리눅스 장비가 있을 경우, 외부에서 이 가정에 있는 리눅스로 접속하여 관리를 할 수 있다.
-R 옵션의 명령어 형태는 아래와 같다. 이 명령은 아래 그림의 client에서 수행하는 것이다.
ssh -R {port1}:{host_of_port2}:{port2} {id@ssh_server} 예) $ ssh -R 2502:localhost:1502 your_id@203.249.110.120 또는$ ssh -R 2502:192.168.42.227:1502 your_id@203.249.110.120
위 그림과 명령어를 연관지어 설명하도록 하겠다.
- 먼저 client에서는 server에 ssh로 접속할 수 있어야 한다. 즉, client에서 ssh id@203.249.110.120 으로 접속이 가능해야 한다. 그림에서 화살표 1에 해당한다.
- 접속이 가능하다면 client에서 위 예의"ssh -R 2502:localhost:1502 your_id@203.249.110.120" 명령어를 입력하여 그림에서 화살표 2에 해당하는 reverse 터널을 생성한다.
- XXX client에서 2502 포트로 접속하면, (그림에서 화살표 A에 해당)
- reverse 터널을 통해 XXX server에 접속할 수 있다.
- Server에서 ssh server를 구동한다.
- Client에서 아래 명령을 실행한다.
$ ssh -R 2502:localhost:1502 your_id@203.249.110.120 위 명령을 수행하면 ssh로 server에 접속한 것과 증상적으로 동일한 접속이 이루어진다. $ nc -l -p 1502 위 명령으로 XXX server를 port 1502에 띄워놓는다.
- Server에서 2502 port로 접속한다. 명령 수행후 아무 글자를 쳐보면 client에 동일하게 출력되어 있는 것을 확인할 수 있다.
(사실 이론적으로 이 명령은 server가 아닌 server에 접속가능한 호스트에서도 실행이 가능해야 하지만, 저자는 모르는 이유로 그렇게는 실행이 되지 않습니다.ㅠㅠ)$ nc localhost 2502
- Server가 아닌 다른 컴퓨터에서 Sever의 2502 port로 접속하길 원한다면 아래 명령을 사용하라. 이 명령은 우선 server에 ssh로 접속한 후 server에서 nc 명령을 수행한다. (참고)
$ ssh your_id@203.249.110.120 nc localhost 2502
댓글
댓글 쓰기