SSH 터널(포트 전달)과 SSH ProxyJump, 이 특정 경우에 사용해야 하는 것은 Me -> JumpSever -> TargetServer입니다.

SSH 터널(포트 전달)과 SSH ProxyJump, 이 특정 경우에 사용해야 하는 것은 Me -> JumpSever -> TargetServer입니다.

저는 SSH Tunnel을 처음 사용하고 있으며 다음 내용을 읽었습니다.OpenSSH 프록시 위키북계속해서, 아직도 너무 혼란스러워요.

목표는 SSH 터널(포트 전달) 또는 ProxyJump만 사용하여 이중 프록시를 구축하는 것입니다(무엇이라고 불러야 할지 잘 모르겠습니다).

예를 들어 me 192.168.1.1-->connect to--> 와 같이 연결 the Jump ServerA 1.1.1.1하면 실제로 에 도달하게 됩니다 the Target ServerB 2.2.2.2. 로 양말5 프록시를 설정하면 ServerA 1.1.1.1결국 다음으로 프록시를 받게 됩니다.ServerB's IP 2.2.2.2

나는 어떻게 대처해야 하는지 알아요me >-에서-> Server A, 하지만 어떻게 대처해야 할지 모르겠어요Server A >-에서-> Server B, (즉, 이 서버에 대한 모든 액세스 권한과 루트 권한이 있지만 설정 방법을 모르겠습니다.)

저는 배우는 속도가 느리기 때문에 어떤 아이디어든 정말 감사하겠습니다.

(이 예에 대한 정확한 명령이나 접근 방식을 게시하고 싶다면 괜찮습니다. 그러면 많은 도움이 될 것입니다.)

답변1

기본적으로 요구 사항은 다음과 같습니다

  • ServerB는 ServerA에서만 연결할 수 있어야 합니다. 직접 연결하지 않습니다.
  • ServerA에는 TCP 터널링이 활성화되어 있어야 합니다.
  • ServerA에 연결할 수 있어야 합니다.

.ssh/config점프호스트(in )를 통해 ServerB에 대한 연결을 설정합니다 .

Host ServerB
    ProxyJump ServerA

이는 를 입력하면 ssh ServerAServerA로 종료되고, ServerA에 있는 동안 을 입력하면 ssh ServerBServerB로 종료된다고 가정합니다. 예를 들어 "ServerB"라는 이름은 ServerA에서 확인할 수 있어야 하지만 사용자 측에서 확인할 수 있는지 여부는 중요하지 않습니다. 이는 호스트 이름 또는 "슬러그"(별명)일 수 있습니다. 후자의 경우 호스트 이름이나 IP 주소를 다음에서 다시 연결합니다 .ssh/config.

Host ServerA
    HostName ip.add.re.ss

Host ServerB
    ProxyJump ServerA
    HostName host.na.me

프록시 호스트에 사용할 사용자 이름을 지정할 수도 있습니다.

Host ServerA
    User proxyuser
    HostName ip.add.re.ss

Host ServerB
    ProxyJump ServerA
    HostName host.na.me

그 후에는 를 입력합니다 ssh ServerB. OpenSSH는 ServerA에 연결하고 임의의 포트를 사용하여 이 연결을 통해 ServerB의 주소인 포트 22로 전달합니다. 이 연결은 백그라운드로 분기됩니다. OpenSSH는 이 무작위로 전달된 포트에 즉시 연결합니다(localhost에 연결하지만 실제로는 "ServerB"라는 이름과 HostName에 지정된 IP 주소에 대해 키를 확인합니다 .ssh/known_hosts). 따라서 ServerB에 직접 접속하게 됩니다. "who"를 입력하면 ServerA 주소에서 연결되었다고 표시됩니다. 귀하와 ServerA 사이에 앉아 있는 사람은 귀하가 ServerB와 실제로 대화하고 있는지 알 수 있는 방법이 없습니다.

SSH 명령줄 옵션을 사용할 수 있으며 해당 옵션은 다음 용도로 사용됩니다.서버B연결(전달된 포트를 통해 이루어짐). 예를 들어 를 사용하는 경우 ssh -D 12345 user@ServerBServerB:22로 전달된 포트를 사용하여 프록시 사용자로 ServerA에 연결한 다음 해당 포트에 연결하고 사용자로 ServerB를 인증하고 포트 12345에 SOCKS5 프록시를 설치합니다. 해당 SOCKS5의 종료 주소는 다음과 같습니다. ServerB, 예를 들어 해당 프록시(예: 브라우저에서)를 사용하는 경우 원격 당사자는 귀하가 ServerB의 주소에서 연결하고 있음을 알게 됩니다.

더 많은 점프호스트를 쌓아도 작동합니다.

Host ServerB
    ProxyJump ServerA

Host ServerC
    ProxyJump ServerC

먼저 ssh ServerCServerB:22에 대한 포트 전달을 사용하여 ServerA에 연결한 다음 ServerC에 대한 다른 포트 전달을 사용하여 해당 전달을 통해 ServerB에 연결한 다음 다른 포트에 연결하면 ServerC 셸이 생성됩니다.

비밀번호를 묻는 메시지가 표시됩니다.연결. 이것은 꽤 번거로운 작업입니다. 키 기반 인증을 설정하고 사용하는 것이 더 좋습니다 ssh-agent.

관련 정보