2015년 4월 22일 수요일

ssh tunneling


터널링 1: 로칼포트 포워딩

로칼포트 = 1234
SSH서버 = 192.168.0.99
SSH서버계정 = guest
대상호스트 = TARGET     # SSH서버와 같을 경우 localhost
대상포트 = 5678

로칼포트 1234 에 접근하면,
192.168.0.99 에서 TARGET:5678 에 접근한 것 같이 동작.

즉. 로칼머신에서는 TARGET:5678 에 접근이 안되고
SSH 서버에서는 접근이 될 때, SSH 서버를 Proxy 같이 사용.
 
* command line
$ ssh -f -N -L1234:TARGET:5678 guest@192.168.0.99
-N : 터널링만 하고 명령 실행은 못함
-f: 백그라운드로 동작

* ~/.ssh/config
$ cat ~/.ssh/config
Host server
    HostName 192.168.0.99
    User guest
    LocalForward 1234 TARGET:5678
$ ssh -f -N server

* teraterm
Setup > SSH Forwarding... > Add... >
[*] Forward local port: [1234]
to remote machine [TARGET] port [5678]

File > New connection...
Host [ssh://guest@192.168.0.99]
OK


* putty
Connection
    Data
        Login details
            Auto-login username [guest]
    SSH
        Tunnels
            Source port [1234]
            Destination [TARGET:5678]
            Add
Session
    Host Name [192.168.0.99] Port [22]
    Saved Sessions [SSH 터널 - 로칼포트 포워딩]
    Save
    Open


터널링 2: 리모트 포트 포워딩

SSH서버 포트 = 1234
SSH서버 = 192.168.0.99
SSH서버계정 = guest
대상호스트 = TARGET     # 로칼머신과 같을 경우 localhost
대상포트 = 5678

SSH 서버의 포트 1234 에 접근하면,
로칼머신에서 target의 5678 에 접근한 것 같이 동작.

* comman-line
$ ssh -R 1234:target:5678 -N -f guest@192.168.0.99

* teraterm
Setup > SSH Forwarding... > Add... >
[*] Forward remote server port: [1234]
to local machine [TARGET] port [5678]

File > New connection...
Host [ssh://guest@192.168.0.99]
OK

참고
* http://egloos.zum.com/milines/v/3781525
* http://linux.systemv.pe.kr/ssh-%ED%8F%AC%ED%8A%B8-%ED%8F%AC%EC%9B%8C%EB%94%A9/
* http://www.revsys.com/writings/quicktips/ssh-tunnel.html
* http://qgp9.github.io/blog/2016/03/26/ssh-proxy-jump-host