[ A(1.1.1.1) <-> NAT ] <-> B(2.2.2.2)
위와 같은 구조로 되어 있는 네트워크 망 에서 NAT망 안에 있는 A에서 B로 SSH접속하는 것은 매우 간단합니다. 그냥 SSH로 접속하면 되기 때문이죠.
그런데 B에서 A로 접속한다면?
이러한 경우 Reverse SSH 접속으로 포트 포워딩을 해서 접속할 수 있습니다.
1. tunneling
ssh -R <터널링 할 포트>:localhost:<로컬 포트> <B에 있는 계정>@2.2.2.2 <터널링 할 포트>: B에 열릴 포트 입니다. 예를 들어서 1234라고 한다면 B에 1234/TCP 포트가 LISTEN상태로 됩니다.
<로컬 포트>: B와 연결 될 A의 포트 입니다.
<B에 있는 계정>: B로 접속 가능한 SSH 계정 입니다.
예:
A-server$ ssh -R 1234:localhost:22 accessdenied@example.comexample.com 서버에 accessdenied계정으로 접속 하면서 localhost의 22번 포트를 example.com의 1234포트로 터널링
2. connect
1번 과정을 거치면 A에서 B로 일반적인 SSH와 같은 접속이 됩니다. 여기서 일반 SSH 접속과 다른 점이 한 가지 있다면 B에 1234포트가 열린다는 것이죠.
B에서 A로 접속할 땐 단순히 <터널링 할 포트>로 SSH 하시면 됩니다.
예:
B-server$ ssh localhost -p 1234B에서 그냥 localhost의 1234번 포트로 SSH 접속하면 터널링 된 포트를 통해 A로 SSH 접속이 가능합니다.


Attribution/Share Alike 2.0 license








