SSH "점프 호스트"의 어떤 변형을 사용해야 합니까?

SSH "점프 호스트"의 어떤 변형을 사용해야 합니까?

sshjump_host내가 아는 한 다음과 같은 연결에 사용할 수 있는 구성 변형이 최소한 3가지 있습니다 target_host.

Host jump_host
  HostName 1.2.3.4

# Variant - 1
Host target_host
  HostName 172.16.0.1
  ProxyCommand ssh -q -x jump_host 'netcat %h 22'

# Variant - 2
Host target_host
  HostName 172.16.0.1
  ProxyCommand ssh -q -x jump_host -W '%h:22'

# Variant - 3
Host target_host
  HostName 172.16.0.1
  ProxyJump jump_host

이 방법이 다른 방법보다 나은가요? 구성 2와 3의 차이점(있는 경우)은 무엇입니까? 분명히 구성 1이 netcat준비되어 있어야 하므로 가장 매력적이지 않습니다.

답변1

변형 1은 두 번 검증됩니다. 프록시 명령을 한 번 사용하여 연결을 설정한 후 원래 ssh 명령을 다시 사용하십시오. 간단히 netcat %h %p변형 1을 만들고 호스트 매개변수를 사용하여 ssh 명령으로 수행하려는 것과 동일한 작업을 수행 할 수도 있습니다 .

Host target_host
  HostName 172.16.0.1
  LogLevel QUIET
  ForwardX11 no
  ProxyCommand netcat %h %p

그러나 그럼에도 불구하고 netcat을 지원하려면 pty와 연결의 일부로 추가 프로세스가 필요합니다.

변형 2는 netcat과 동일한 작업을 수행하지만 내부적으로는 pty를 할당하지 않고 원하는 경우 변형 1과 정확히 동일하도록 다시 작성할 수 있습니다. 또한 프록시 전달과 같은 호스트의 모든 설정이 리디렉션되는 것을 방지합니다.

변형 1과 2는 연결을 자동으로 설정하는 일반적인 방법인 ProxyCommand를 사용합니다. 이러한 변형은 주로 ProxyJump가 그 이후에 존재했기 때문에 존재합니다. 그러나 ProxyCommand를 사용하면 연결 설정을 통해 고급 작업을 수행할 수 있습니다. 문서에는 연결을 전달하기 위해 HTTP CONNECT 프록시를 설정하는 데 이를 사용하는 예가 나와 있습니다.

변종 3은 기본적으로 내장된 TCP 프록시인 ProxyJump를 사용하며 변종 2와 가장 유사하지만 더 간단하고 제한적인 링크를 허용합니다. 이것이 없으면 동일한 작업을 수행하면 다음과 같습니다.

Host jumphost2
  ProxyCommand ssh -W %h:%p jumphost1
Host server
  ProxyCommand ssh -W %h:%p jumphost2

그러나 ProxyJump를 사용하면 다음과 같습니다.

Host server
  ProxyJump jumphost2,jumphost1

관련 정보