리버스 SSH 터널링이란 무엇입니까? (및 사용법)

0
700
랩탑의 SSH 프롬프트
Eny Setiyowati / Shutterstock.com

연결할 수없는 Linux 컴퓨터에 SSH를 연결해야합니까? 전화를 건 다음 연결을 끊어 자신의 원격 SSH 세션을 얻습니다. 우리는 당신에게 방법을 보여줍니다.

역방향 SSH 터널링을 사용하려는 경우

때때로 원격 컴퓨터에 접근하기 어려울 수 있습니다. 이들이 위치한 사이트에는 엄격한 방화벽 규칙이 있거나 로컬 관리자가 복잡한 네트워크 주소 변환 규칙을 설정했을 수 있습니다. 그러한 컴퓨터에 연결해야하는 경우 어떻게해야합니까?

라벨을 만들어 봅시다. 귀하의 컴퓨터는 현지 컴퓨터가 가까이 있기 때문입니다. 연결하려는 컴퓨터는 컴퓨터가 귀하와 다른 위치에 있기 때문입니다.

이 기사에서 사용 된 로컬 컴퓨터와 원격 컴퓨터를 구별하기 위해 원격 컴퓨터를 “howtogeek”이라고하며 Ubuntu Linux (자주색 터미널 창 사용)를 실행 중입니다. 로컬 컴퓨터를 “Sulaco”라고하며 Manjaro Linux (노란색 터미널 창 포함)를 실행하고 있습니다.

일반적으로 로컬 컴퓨터에서 SSH 연결을 시작하고 원격 컴퓨터에 연결합니다. 그것은 우리가 설명하는 네트워킹 시나리오에서 옵션이 아닙니다. 특정 네트워크 문제가 무엇인지는 중요하지 않습니다. 이는 원격 컴퓨터에 직접 SSH 할 수없는 경우에 유용합니다.

그러나 끝 부분의 네트워킹 구성이 간단하면 원격 컴퓨터가 연결될 수 있습니다. 그러나 원격 컴퓨터에서 작동하는 명령 줄 세션을 제공하지 않기 때문에 사용자의 요구로는 충분하지 않습니다. 그러나 시작입니다. 두 컴퓨터간에 연결이 설정되었습니다.

답은 역방향 SSH 터널링에 있습니다.

리버스 SSH 터널링이란 무엇입니까?

역방향 SSH 터널링을 사용하면 설정된 연결을 사용하여 로컬 컴퓨터에서 원격 컴퓨터로 새로운 연결을 설정할 수 있습니다.

원래 연결이 되었기 때문에 …에서 원격 컴퓨터 당신은 다른 방향으로 가기 위해 그것을 사용하는 것이“반대”입니다. SSH는 안전하기 때문에 기존 보안 연결 내에 보안 연결을 설정하고 있습니다. 즉, 원격 컴퓨터에 대한 연결은 원래 연결 내에서 개인 터널로 작동합니다.

그래서 우리는“역 SSH 터널링”이라는 이름에 도달했습니다.

어떻게 작동합니까?

역방향 SSH 터널링은 설정된 연결을 사용하여 원격 컴퓨터를 사용하여 로컬 컴퓨터의 새 연결 요청을 수신합니다.

원격 컴퓨터는 로컬 컴퓨터의 네트워크 포트에서 수신합니다. 해당 포트에 대한 SSH 요청을 감지하면 해당 연결 요청을 설정된 연결 아래로 다시 릴레이합니다. 이것은 새로운 연결을 제공합니다 …에서 로컬 컴퓨터 원격 컴퓨터.

설명하는 것보다 설정하는 것이 더 쉽습니다.

SSH 리버스 터널링 사용

SSH는 Linux 컴퓨터에 이미 설치되어 있지만 로컬 컴퓨터가 SSH 연결을 허용하지 않은 경우 SSH 데몬 (sshd)을 시작해야 할 수도 있습니다.

sudo systemctl start sshd

터미널 창에서 sudo systemctl start sshd

컴퓨터를 재부팅 할 때마다 SSH 데몬을 시작하려면 다음 명령을 사용하십시오.

sudo systemctl enable sshd

터미널 창에서 sudo systemctl enable sshd

원격 컴퓨터에서는 다음 명령을 사용합니다.

  • 그만큼 -R (반전) 옵션이 알려줍니다 ssh 원격 컴퓨터에서 새 SSH 세션을 만들어야합니다.
  • “43022 : localhost : 22”는 알려줍니다 ssh 로컬 컴퓨터의 포트 43022에 대한 연결 요청은 원격 컴퓨터의 포트 22로 전달되어야합니다. 포트 43022가 할당되지 않은 것으로 표시되어 선택되었습니다. 특별한 숫자가 아닙니다.
  • dave@sulaco.local은 원격 컴퓨터가 로컬 컴퓨터에서 연결하려는 사용자 계정입니다.
ssh -R 43022:localhost:22 dave@sulaco.local

터미널 창에서 ssh -R 43022 : localhost : 22 dave@sulaco.local

전에 로컬 컴퓨터에 연결 한 적이 없다는 경고가 표시 될 수 있습니다. 또는 인식 된 SSH 호스트 목록에 연결 세부 사항이 추가되면 경고가 표시 될 수 있습니다. 보이는 경우 원격 컴퓨터에서 로컬 컴퓨터로 연결되었는지 여부에 따라 다릅니다.

로컬 컴퓨터에 연결하는 데 사용중인 계정의 비밀번호를 묻는 메시지가 표시됩니다.

터미널 창의 SSH 연결 세부 사항

연결되면 명령 프롬프트가 dave @ howtogeek에서 dave @ sulaco로 변경됩니다.

이제 원격 컴퓨터에서 로컬 컴퓨터에 연결되었습니다. 그것은 우리에게 명령을 내릴 수 있다는 것을 의미합니다. 사용합시다 who 명령을 사용하여 로컬 컴퓨터의 로그인을 봅니다.

who

터미널 창에서 who 명령

dave라는 사용자 계정을 가진 사람이 로컬 컴퓨터에 로그인했으며 원격 컴퓨터가 동일한 사용자 자격 증명을 사용하여 IP 주소 192.168.4.25에서 연결되었음을 알 수 있습니다.

관련 : Linux에서 현재 사용자 계정을 확인하는 방법

원격 컴퓨터에 연결

원격 컴퓨터와의 연결이 성공하고 연결을 수신하고 있으므로 로컬 컴퓨터에서 원격 컴퓨터에 연결을 시도 할 수 있습니다.

원격 컴퓨터가 로컬 컴퓨터의 포트 43022에서 수신 대기 중입니다. 따라서 원격 컴퓨터에 연결하기 위해 다소 직관적 인 방식으로 ssh 포트 43022에서 로컬 컴퓨터에 연결하려면이 연결 요청이 원격 컴퓨터로 전달됩니다.

ssh localhost -p 43022

터미널 창에서 ssh localhost -p 43022

사용자 계정 암호를 묻는 메시지가 나타나면 로컬 컴퓨터에서 원격 컴퓨터에 연결됩니다. Manjaro 컴퓨터는 행복하게“우분투 18.04.2 LTS에 오신 것을 환영합니다”라고 말합니다.

원격 컴퓨터에 역방향 ssh 터널 연결

명령 프롬프트가 dave @ sulaco에서 dave @ howtogeek으로 변경되었습니다. 도달하기 어려운 원격 컴퓨터에 SSH로 연결하려는 목표를 달성했습니다.

키와 함께 SSH 사용

원격 컴퓨터에서 로컬 컴퓨터로보다 편리하게 연결하기 위해 SSH 키를 설정할 수 있습니다.

원격 컴퓨터에서 다음 명령을 입력하십시오.

ssh-keygen

터미널 창에서 ssh-keygen

암호를 입력하라는 메시지가 표시됩니다. 비밀번호 문구 질문을 무시하려면 Enter 키를 누를 수 있지만 권장하지는 않습니다. 이는 원격 컴퓨터의 모든 사용자가 암호를 요구하지 않고 로컬 컴퓨터에 SSH 연결을 할 수 있음을 의미합니다.

기호로 구분 된 3-4 개의 단어는 강력한 암호 구를 만듭니다.

터미널 창에서 ssh 키 생성

SSH 키가 생성됩니다.

공개 키를 로컬 컴퓨터로 전송해야합니다. 이 명령을 사용하십시오 :

ssh-copy-id dave@sulaco.local

터미널 창에서 ssh-copy-id dave@sulaco.local

로그인 한 사용자 계정의 비밀번호 (이 경우 dave@sulaco.local)를 입력하라는 메시지가 표시됩니다.

터미널 창에서 SSH 키를 로컬 컴퓨터로 전송

원격 컴퓨터에서 로컬 컴퓨터로 처음 연결을 요청하면 암호를 제공해야합니다. 터미널 창이 열려있는 한 이후의 연결 요청을 위해 다시 입력하지 않아도됩니다.

암호 요청 대화 상자

관련 : Linux 셸에서 SSH 키를 만들고 설치하는 방법

모든 터널이 무서운 것은 아닙니다

일부 터널은 어둡고 비 틀릴 수 있지만 원격 컴퓨터와 로컬 컴퓨터 간의 관계를 머리 속에 똑바로 유지할 수 있다면 역방향 SSH 터널링을 탐색하기가 어렵지 않습니다. 그런 다음 뒤집으십시오.