SSH 프록시 설정

SSH를 쓰다 보면 프록시를 타야 할 경우가 가끔 생긴다. 공유기 밑에 여러 호스트가 물려 있다든지 최종 목적지가 특정한 IP로부터의 접속만 허용한다든가 하는 이유로 말이다.
그런 경우엔 방법이 몇 가지 존재하는데 프록시로 쓸 호스트를 A, 최종 목적지 호스트를 X라고 하자.

1. A에 접속한 후 거기에서 X에 접속

1.1 이걸 한 번에

2. 프록시 설정

1의 방법은 좀 문제가 있는데 SSH를 여러 번 타면 괜히 암호화를 여러 번 거치게 된다. scp도 쓰기에 굉장히 불편하고.
그래서 ~/.ssh/config를 수정해서 아예 프록시 설정을 만들어버리자.

ControlMaster, ControlPath 부분은 굳이 적지 않아도 되는 부분이지만 X 호스트에 여러 커넥션을 만들 때 굳이 A에 커넥션을 여러 개 만들지 않게 하는 옵션이다. 이 옵션을 쓰려면 ControlPath에 해당하는 디렉터리를 수동으로 만들어 줘야 한다. 디렉터리가 없다면 스스로 만들어 주지 않고 에러를 뱉는다.

ProxyCommand 옵션은 말 그대로 프록시를 만드는 커맨드를 적는 옵션인데 %p는 X에 접속할 때의 포트를 뜻하는 이스케이프 시퀀스이고 나머지는 그냥 평범하게 netcat을 이용해서 커넥션을 여는 것이다.
-W 옵션을 이용하여 nc 없이도 커넥션을 열 수 있다.

2.1 보너스

가끔 포트포워딩이 전혀 동작하지 않는 환경에서 SSH를 열어 둬야 할 때가 있는데 이 때는 Tor를 이용하면 편하다(Tor가 그러라고 있는 건 아니지만..). 참고
SSH를 Tor의 Hidden service로 열어 두고 ssh 설정에 이 ProxyCommand를 쓰면 된다.

kjwon15

I'm a hacker, I want to improve life.

Leave a Reply

Your email address will not be published. Required fields are marked *

 

This site uses Akismet to reduce spam. Learn how your comment data is processed.