1. 방화벽으로 ssh를 제외한 다른 모든 포트가 막혀있는 경우 ssh 터널링(포트 포워딩) 을 이용하여 해당 서버의 다른 포트로 우회하여 접근하는 방법
- 로컬 머신에서 다음과 같은 명령으로 방화벽이 설정되어있는 서버로 접속한다.
ssh -L 8080:remoteServer:8181 user@remoteServer
이 명령은 로컬 8080번 포트를 접속한 서버의 8181번 포트로 포워딩한다
이후 localhost:8080 번으로 접속하여 해당서버의 8181번 포트로 접근 가능하다
putty를 사용한다면 다음과 같이 세션 설정에 Source port 를 8080으로 Destination 을 remoteServer:8181로 하고 추가한다.
* 만일 터미널에서 다음과 같은 에러 메세지와 함께 포트 포워딩이 동작하지 않는다면 /etc/ssh/sshd_config 파일의 AllowTcpForwarding 셋팅이 no 인지 확인한다 (no 로 설정되어있다면 yes로 바꾸도록 한다)
[channel 3: open failed: administratively prohibited: open failed ]
2.방화벽으로 막혀있는 어떤 서버가 우리쪽 일부 IP에게만 접근을 허용했을때 접근이 허용된 서버를 경유하여 접근하는 방법
- 접근이 허용된 머신에서 다음과 같은 명령으로 해당 포트로의 접근을 방화벽으로 막혀있는 서버의 포트로 redirect 시킨다
ssh -gR 8080:remoteServer:8181 user@localhost (또는 로컬 머신에서 ssh -gR 8080:remoteServer:8181 user@[접근이 허용된 서버] ...)
이 명령은 로컬포트 8080으로의 접근을 remoteServer 8181번 포트로 redirect 시킨다 ( -g 옵션을 사용하지 않는 경우 외부접근을 허용하지 않고 local 에서의 접근만을 허용하게 된다)
* 만일 -g 옵션을 주었는데도 외부에서 해당 서버의 8080 포트를 이용하여 방화벽으로 막혀있는 서버의 8181번 포트로 접근할 수 없다면 /etc/ssh/sshd_config 파일의 GatewayPorts 옵션이 no 인지 확인한다(디폴트는 no 이다) .. yes로 바꾼다
출처 : schatzt.springnote.com
댓글