HTTP proxy를 통한 ssh 연결 방법

뜻이 있는 곳에 길이 있다고.. proxy에 막혀 아무것도 할 수 없는 상황에서 http proxy를 통해서 외부로 연결할 수 있는 방법이 있다는 것을 알았다.

사용할 수 있는 기본 환경은 이렇다.

  1. 22번 포트가 막혀있다. (아마 다른 대부분의 포트가 막혀있다.)
  2. Browser에 http proxy 설정을 해야 web 서핑을 할 수 있다.
  3. 리눅스를 쓴다.

서버 설정

서버 설정은 별다른게 없다. sshd를 22번으로 열어놔도 괜찮고, 혹시 22번 포트 검사를 할까 싶으면 443번 포트로 sshd를 열어둔다. (https로 속아줄지도 모르니까..) 또는 공유기에서 443 -> 22로 포트포워딩을 추가해도 된다.

특정 장소에서

리눅스에서 필요한 패키지를 설치한다.

$ sudo apt-get install corkscrew

그리고 ~/.ssh/config 파일에 다음과 같은 라인을 추가해준다.

host my.host.com
	ProxyCommand /usr/bin/corkscrew proxy.server.com [proxy_port] %h %p

이렇게 설정한 후에 ssh my.host.com 이라고 입력하면 22번 포트로 my.host.com에 연결이 된다. (my.host.com에 연결할 때만 이렇게 proxy를 사용한다.) 혹시 443번 포트로 변경을 했다면 ssh my.host.com -p 443 이라고 입력하면 된다.

ssh 연결이 되었으니 -D 옵션을 사용하여 포트 포워딩은 덤으로 할 수 있다. 이제 특정 장소의 방화벽을 우회하여 어디든 접속할 수 있다. 🙂

ftp 자동 로그인 스크립트 .netrc

ftp를 오래도록 써왔으면서도 최근에서야 알게된 팁이다. 특정 사이트에 자동으로 로그인 하도록 할 수 있는데, 자주 가는 사이트라면 등록해 놓고 사용하면 편하다.

$ cat ~/.netrc
machine host.name
login username
password password

반드리 빈 라인이 끝에 들어가야 하고, 빈 라인 뒤에 호스트를 추가로 넣을 수 있다. 그리고 퍼미션은 600으로 변경한다.

$ chmod 600 ~/.netrc

이 후 ftp로 machine에 적은 주소로 접속해보면 설정해둔 유저로 자동으로 로그인이 되는 것을 확인할 수 있다.

추가로 다음과 같이 커맨드라인으로 put, get 등의 동작을 한방에 해결할 수도 있다.

$ echo put jquery.mobile-1.0rc3.zip | ftp host.name