ssh 터널링 질문입니다.

techneer의 이미지

ssh 터널링을 이용하고 싶은데요, 문서 찾아봐도 좀 어려운 것 같아요.
밑에 두가지 경우에 대해서 질문이 있습니다.

1.
서버A - PC - 서버B 가 있는데,
PC에서는 서버A와 서버B 각각으로 ssh 접속이 가능한데,
서버A와 서버B 상호간에는 접속이 불가능 합니다.
이런 경우에 ssh 터널링을 사용하면, 서버A에서 서버B로 바로 접근이 가능할 것 같은데, 명령어를 어떻게 해야할까요?

2.
서버C - 서버A - PC 가 있는데,
서버C와 PC간의 연결은 안됩니다.
이런 경우에 PC에서 바로 서버C에 접근하기 위해서,
ssh 터널링 명령을 어떻게 해야 할까요?

고수님들의 답변 부탁드립니다.

molla의 이미지

간단히 google 등에서 ssh tunneling 으로 검색해 보시면 수많은 참고 문서들이 있습니다. :)
가까이에 http://wiki.kldp.org/wiki.php/OpenSshTunneling 에도 적당한 예제가 있는듯 합니다.

뭐 저도 별로 써 보진 않아서 정확한 답변은 될 수 없겠지만, 이렇게 하면 되지 않을까 싶습니다.

1번처럼 A가 PC를 통해 B에 접속하고자 할 때
PC 에서 B로 tunneling 을 만듭니다.
PC> ssh -L :localhost:22 B_user@B

는 PC쪽에 열어둘 port 번호로, 해당 port로 접속하면 B server의 B user로 ssh 접속이 이루어질 것입니다. 즉 A 에서는

A> ssh PC -p

처럼 하시면 PC의 localport 를 통해 ssh 접속을 시도할 수 있습니다.
(잘 안 될 경우엔, 아예 PC 로 접속한 뒤 ssh localhost -p 처럼 할 수도 있겠지요.)

또한가지는 reverse tunneling 이란 것이 있습니다. -L 옵션 대신 -R 옵션을 이용하는 것으로,
1번의 경우에서 PC 에서 B로 접속은 불가능하고, B 에서 PC로 접속만 가능할 때 사용할 수 있는 방법입니다.
즉 PC 쪽에서 B로 tunnel을 뚫는 것이 아니라 B 에서 PC쪽으로 tunnel을 뚫는 것이지요.
B> ssh -R :localhost:22 PC_user@PC

이 경우에도, PC의 로 들어오는 접속은 B 서버의 22번으로 tunnel 이 생기게 됩니다.