1. sshd_config
AllowTCPForwarding yes 를 확인
2. putty
접속 -> SSH -> 터널링
포워드될 포트 추가
원 포트 {s} [App에서 접근할 포트]
대상 {i} [localhost]
동적(Y),자동 체크후 추가
후 SSH 서버 접속
3. Browser
IE
도구 -> 인터넷옵션 -> 연결 -> LAN 설정 -> 프록시서버
사용자 LAN에 프록시 서버 사용 체크 후 고급
Socks(C) [localhost] [App에서 접근할 포트]
Firefox
도구 -> 설정 -> 고급 -> 네트워크 -> 설정
SOCKS 호스트 [localhost] [App에서 접근할 포트]
참고
http://www.ibm.com/developerworks/kr/library/au-tunnelingssh/index.html
http://achiven.tistory.com/archive/20071010
http://nongauss.tistory.com/12
http://swbae.egloos.com/1137243
http://www.superuser.co.kr/home/superuserboard/view.html?code=q_net&id=607&start=0&position=
구글캐시
http://72.14.235.104/search?q=cache:dnyXS-7TuUgJ:stania.pe.kr/wiki/Linux/PuttyTunneling+ssh+%ED%84%B0%EB%84%90%EB%A7%81&hl=ko&ct=clnk&cd=31&gl=kr&inlang=ko
AllowTCPForwarding yes 를 확인
2. putty
접속 -> SSH -> 터널링
포워드될 포트 추가
원 포트 {s} [App에서 접근할 포트]
대상 {i} [localhost]
동적(Y),자동 체크후 추가
후 SSH 서버 접속
3. Browser
IE
도구 -> 인터넷옵션 -> 연결 -> LAN 설정 -> 프록시서버
사용자 LAN에 프록시 서버 사용 체크 후 고급
Socks(C) [localhost] [App에서 접근할 포트]
Firefox
도구 -> 설정 -> 고급 -> 네트워크 -> 설정
SOCKS 호스트 [localhost] [App에서 접근할 포트]
참고
http://www.ibm.com/developerworks/kr/library/au-tunnelingssh/index.html
http://achiven.tistory.com/archive/20071010
http://nongauss.tistory.com/12
http://swbae.egloos.com/1137243
http://www.superuser.co.kr/home/superuserboard/view.html?code=q_net&id=607&start=0&position=
구글캐시
http://72.14.235.104/search?q=cache:dnyXS-7TuUgJ:stania.pe.kr/wiki/Linux/PuttyTunneling+ssh+%ED%84%B0%EB%84%90%EB%A7%81&hl=ko&ct=clnk&cd=31&gl=kr&inlang=ko
PuTTY 를 사용하여, 특정 사설 네트워크의 네트웍 자원에 쉽게 접근할 수 있는 방법을 소개한다. 전제조건으로, 당연히, 그 사설 네트워크 안의 리눅스 서버에 SSH 를 통해 접근할 수 있어야한다.
좀 더 실무적인 예를 들어보자.
S 대학 U 모 컴퓨터 관련 동아리에서는 U 모 서버가 동아리의 메인 리눅스 서버이자, 동아리 내 사설 네트웍의 방화벽/게이트웨이 역할을 한다. 나는 이 동아리의 일원으로서, U 모 서버의 ID 를 가지고 있다고 하자. U 모 동아리의 사설 네트워크 안의 V 모 서버에는 윈도우즈가 깔려 있으며, 이 컴퓨터를 터미널 서버로 (mstsc) 사용할 수 있도록 설정되어있다. U 모 서버에서, 포트 포워딩을 지원(?)하지 않는다고 가정하고, 집에서 V 모 서버로 mstsc 접속을 해보자.
아래의 설정은, 0.58 버전에서는 접속 후에도 언제든지 설정할 수 있지만, 0.56 에서는 초기 접속시에만 설정할 수 있었다.
- Connection - SSH - Tunnels 섹션의 Port Forwarding 에 적절한 값을 입력해야한다.
- Add new forwarded port: 부분을 잘 살펴본다. Source port 는 현재 내 시스템에 생길 입구 포트를 의미하며, Destination 이 앞서 지정한 포트로 접속했을 때의 출구를 의미한다. Source port 에 51234 정도를 입력해주고 (잘 안 쓰는 포트), Destination port 에 192.168.57.3:3389 를 입력해주자(여기서 사용된 IP 는 V 모 서버의 사설 네트워크용 아이피이다). 설정 후 Add 버튼을 눌러 리스트에 추가하는 걸 잊지 말자.
- 평소대로 U 모 서버에 접속, 로그인한다. PuTTY 는 계속 켜져있어야한다.
- mstsc 프로그램을 켜고 localhost:51234 포트로 접속한다. V 모 서버의 3389 포트로 접근한 것과 같은 효과가 난다.
- 관리자 권한이 필요한 거창한 방화벽 설정 없이도 손쉽게 포트를 포워딩 할 수 있다.
- 네트웍을 흐르는 정보가 SSH 위에서 돌아다니므로, 안전하게 데이터를 주고받을 수 있다.
- SSH 암호화를 거치는 과정에서 속도가 약간 떨어질 수 있다.
- 그래도 조금은 귀찮다.
[edit]
그 밖의 활용방법 #
[edit]
방화벽 뚫기 삽질기 #
PuTTY 의 터널링중 Remote 기능을 사용해, 방화벽 안의 사용자가 돌리는 서버에, 다른 서버를 경유하여 접속할 수 있다.
[edit]
요약 #
임의의 사용자는, 리눅스 서버인 서버 T를 통해, 실제로 윈도우 기반 웹서버 프로그램이 작동중인 컴퓨터 A 로 접속하게 된다. 컴퓨터 A 와 서버 T 사이엔 SSH 를 사용한 터널이 구축된다.
[edit]
사전 요구사항 #
- 서버 T 의 sshd 에서 GatewayPorts 설정이 yes 로 되어 있어야한다. (즉 서버 T 의 root 권한으로 sshd 의 설정을 바꿔줄 필요가 있다. 자세한 방법은 아래에서.)
[edit]
터널링 설정 #
- Source port : 서버 T 에서 연결을 받아들일(Listening) 포트를 설정한다. 여기서는 58080 으로 설정한다고 하자.
- Destination port : Source Port 로 들어온 연결이 어느 쪽으로 흐를지 출구를 설정한다. SSH Client 가 동작하는 컴퓨터에서 접근 가능한 컴퓨터라면 어디든지 OK. 여기서는 컴퓨터 A 에서 웹서버가 돈다고 가정하고 있으므로, 127.0.0.1:80 이 되겠다.
- Local/Remote/Dynamic 중 Remote 를 설정한다.
위의 설정을 잘 끝낸 후 접속을 성공시키고 netstat 등을 실행시켜보면, 58080 포트(Source Port 에서 지정한 포트) 에서 연결을 받아들이고 있음을 확인할 수 있다. telnet 이나 웹브라우저(w3m, lynx)등을 사용하여 localhost:58080 으로 접속해보면 성공적으로 컴퓨터 A 의 웹서버에 접속할 수 있을 것이다.
여기서 문제는, 대부분의 서버에서는 이 58080 포트를 통해 다른 컴퓨터들은 접속할 수 없다는 것이다. netstat -an 등을 수행해본 결과를 유심히 보면 알겠지만, listening 포트가 127.0.0.1:58080 등으로, localhost 에서만 접속할 수 있는 포트로 binding 되어있기 때문이다. 다른 컴퓨터들이 서버 T 의 58080 포트를 통해 컴퓨터 A 에 접근하기 위해선, 0.0.0.0:58080 에 bind 되어있어야한다. 이는 sshd 의 설정을 바꿔서 해결할 수 있다.
[edit]
sshd 설정을 변경하여 다른 컴퓨터로부터의 접속 받아들이기 #
sshd 설정중 GatewayPorts 옵션은 기본값이 'no' 이다. 따라서 SSH 터널링을 사용해 만들어진 포트는, 기본적으로 다른 컴퓨터에서 접근할 수 없다. 하지만 저 옵션을 'yes' 로 만들어주면, SSH 터널링을 통해 만들어진 포트가 0.0.0.0:58080 에 bind 되면서 임의의 다른 호스트로부터의 접속을 받아들일 수 있게 된다. 이를 위해서는 sshd 의 설정을 변경해야 하므로, root 권한이 필요하다.
'linux > Tip' 카테고리의 다른 글
로그인 사용자 명령 저장 (0) | 2019.12.17 |
---|---|
쉘 스크립트 수행시 다음 오류 발생 (^M: bad interpreter: no such file or directory) (0) | 2017.01.24 |
rc.local 에 특정유저로 작업 시작하기 (0) | 2007.11.19 |
putty saved session 을 REG 으로 만들기. (0) | 2007.10.30 |
httpd mod_cband 를 이용한 트래픽 관리 (0) | 2007.09.20 |