역방향 터널 + 로컬 전달을 위한 SSH 구성 만들기

역방향 터널 + 로컬 전달을 위한 SSH 구성 만들기

~/.ssh/config 항목을 생성하려고 합니다.다음 시나리오의 경우:

나는리눅스 박스사설망에서는VPS 서버어디서나 내 접근 가능로컬 맥북.

Linux 상자는 방화벽 뒤에 있지만 여전히 로컬 MacBook에서 상자에 SSH로 연결할 수 있습니다.


현재 작업 중인 솔루션은 다음과 같습니다.

Linux 상자는 다음을 통해 vps에 대한 역방향 터널을 시작합니다.

ssh -R 15000:localhost:22 vps-user@vps

그런 다음 내 로컬 Macbook에서 다음을 통해 VPN으로 터널을 시작합니다.

ssh -L 12345:localhost:1500 vps-user@vps

그런 다음 또 다른 ssh 명령을 시작하고 거기에서 방화벽 등 뒤에 숨겨져 있는 Linux 상자로 직접 ssh를 실행할 수 있습니다.

ssh linuxbox-user@localhost -p 12345

우선, 이것은 모두 매우 신뢰할 수 있습니다(이 작업을 수행하는 더 쉬운 방법이 있으면 알려주십시오. 이는 MacBook 측면에서 다소 번거로운 것 같습니다).

가장 좋은 시나리오에서는 ~/.ssh/config 항목을 어떻게 생성합니까? 다음과 같이 작성하십시오.

ssh linuxbox

여기가 끝인가요?

나는 사용해 보았습니다.지역 전달이 옵션을 사용하면 최소한SSH -L ...명령이지만 여전히 두 번째 ssh 명령이 필요합니다.

나도 시도했다프록시 명령옵션이 있지만 운이 없습니다. 구성이 잘못되었을 수도 있습니다.

답변1

가장 쉬운 방법은 아마도 귀하의 경우 불필요해 보이는 로컬 전달을 피하고 지시어를 활용하는 것입니다. ProxyJump이를 통해 하나 이상의 점프 프록시(예: 연결하는 하나 이상의 중간 호스트 및 도착한 호스트)를 지정할 수 있습니다. from) 목적지 호스트).

두 가지 연결이 필요합니다.

  1. Linux 호스트에서 vps로의 원격 전달을 설정했습니다.

    ssh -R 15000:localhost:22 vps-user@vps
    

    22귀하의 질문에서 제안한대로 포트의 VPN에 연결할 수 있다고 가정합니다 .
    이렇게 하면 vps가 포트에서 수신한 연결을 Linux 상자의 15000포트로 전달하게 됩니다.22

  2. 로컬 MacBook에서 vps로 연결:

    ssh -J vps-user@vps -p 15000 linuxbox-user@localhost
    

    -J지정된 명령에 대한 바로 가기입니다 ProxyJump(맨 페이지 참조 ssh(1)).
    다시 말하지만 이는 포트에서 VPN에 연결할 수 있음을 의미합니다 22.
    이 명령은 로컬 MacBook을 22vps의 포트에 연결하고 거기에서 15000동일한 vps의 포트(Linux 상자가 수신 대기 중인)에 연결하므로 추가 연결 없이 Linux 상자에 로그인할 수 있습니다.

해당 .ssh/config파일은 다음과 같습니다.

  • Linux 머신에서:

    Host vps
        RemoteForward 15000 localhost:22
        User          vps-user
    

    이를 통해 간단히 다음을 입력할 수 있습니다.

    ssh vps
    
  • 로컬 MacBook의 경우:

    Host linuxbox
        ProxyJump vps-user@vps
        Hostname  localhost
        Port      15000
        User      linuxbox-user
    

    이를 통해 다음을 발행할 수 있습니다.

    ssh linuxbox
    

공개 키 인증을 사용하는 경우(적어도 원격 전달의 무인 설정을 허용하는 경우) IdentityFile이 지시문을 두 .ssh/config파일 모두에 추가하여 비밀번호를 입력할 필요가 없도록 할 수도 있습니다.


특정 조건이 충족되면 로컬 MacBook을 vps의 포트에 직접 연결할 수도 있으므로 15000로컬 전달이나 프록시 점프가 필요하지 않습니다. 즉, 조건은 다음과 같습니다.

  1. VPN의 포트는 15000방화벽에 의해 필터링되지 않습니다.

  2. vps(일반적으로 ) GatewayPorts yes에 설정 한 구성입니다 . 이 설정은 기본적으로 원격 전달이 수신 대기 포트를 루프백 포트가 아닌 다른 주소에 바인딩할 수 있는지 여부를 결정합니다(따라서 IP 주소는 OR 이 아님 ). 자세한 내용은 매뉴얼 페이지를 참조하십시오 .sshd/etc/ssh/sshd_config
    no127.0.0.1::1sshd_config(5)

이 경우 다음 두 명령만 필요합니다.

  1. Linux 시스템에서 vps로의 역방향 전달( *:앞에 있는 원격 포트에 주목하세요. 이는 "모든 주소에서 수신 대기"를 의미합니다):

    ssh -R *:15000:localhost:22 vps-user@vps
    
  2. MacBook에서 vps로의 간단한 연결:

    ssh -p 15000 -l linuxbox-user vps
    

이는 다음 .ssh/config파일로 변환됩니다.

  • Linux 머신에서( *:이전의 원격 포트를 다시 참고하세요):

    Host vps
        RemoteForward *:15000 localhost:22
        User          vps-user
    
  • 로컬 MacBook의 경우:

    Host linuxbox
        Hostname  vps
        Port      15000
        User      linuxbox-user
    

하지만 이 방법은 참고해주세요당신은 당신의 리눅스 박스를 인터넷에 노출시킬 것입니다, 이는 귀하가 원하지 않는 것일 가능성이 높습니다.

답변2

MacBook에서 할 수 있다면 이 작업을 수행할 필요가 없기 때문에 Linux 상자가 VPS에 대한 역방향 터널을 자동으로 수행한다고 가정합니다.

따라서 MacBook에서 해야 할 일은 다음과 같습니다.

  • Bash 스크립트를 작성합니다.

    #!/bin/bash
    ssh -f -N -L 12345:localhost:1500 vps-user@vps
    sleep 5
    ssh -f -N linuxbox-user@localhost -p 12345
    
  • 실행 가능한지 확인하세요.chmod +x /path/to/script

  • 그런 다음 끝에 별칭을 만듭니다./home/username/.bashrc

    alias sshlinuxbox="/path/to/script"
    
  • sshlinuxbox그런 다음 새 터미널을 연 후 .bashrc에서 새로 고침을 입력하기만 하면 됩니다 .

답변3

다음 줄은 정확하지만 혼란스럽습니다.

  1. MacBook에서 vps로의 간단한 연결:

ssh -p 15000 -l linuxbox-uservps

"-l"은 SSH에서 일반적으로 사용되지 않는 로그인 이름입니다.

더 간단한 명령은 다음과 같습니다.

ssh -p 15000 linuxbox-user@vps

설명: "linuxbox"가 역방향 SSH 연결(R 유형)로 연결되면 해당 연결은 vps 서버의 포트 15000으로 전달됩니다. 이제 랩톱은 vps 서버의 "linuxbox"에 액세스하고 랩톱은 vps 서버의 linuxbox 사용자를 처리해야 합니다. 따라서 linuxbox-user@vps입니다.

추가적으로, 연결을 설정하고 원격 linuxbox에 비밀번호가 필요한 경우 다음 프롬프트가 표시됩니다: linxubox-user@vps의 비밀번호: 이 시점에서 실제로 linuxbox-users 비밀번호를 입력해야 합니다.

관련 정보