
A
개인 네트워크에 있는 몇 가지 매우 유사한 시스템 ( , B
, ) 에 액세스하고 싶습니다 C
. JumpHost를 구성 J1
하고 이를 사용하도록 구성을 설정했습니다.
Host J1
HostName 123.123.123.123
User ciprian
Host A B C
HostName %h
User ciprian
ProxyJump J1
LocalForward 8501 localhost:8501
이제 두 번째 JumpHost인 을(를) 설정 중이며 또는 을 J2
통해 동일한 시스템에 연결하려고 합니다 . 머신 이름에 가 있는 경우 을(를) 건너뛰고 , 가 있는 경우 을( 를) 건너뛰도록 구성 파일을 작성하는 방법이 있습니까 ? 물론 정확한 일치 항목을 수동으로 지정하지 않고 :)J1
J2
J1
J1
J2
J2
다음과 같이 구성을 작성할 수 있습니다.
# ...
Host *-J1
ProxyJump J1
Host *-J2
ProxyJump J2
Host A* B* C*
# --- Which Host name? ---
User ciprian
# ...
따라서 를 주면 ssh A-J1
J1을 통해 점프할 수 있는 설정이 선택됩니다. 그러나 와 관련된 정의를 구문 분석할 때 을( 를 ) 해결하기 때문에 A*
더 이상 을(를) 지정할 수 없으며 을(를) 해결하고 싶습니다 .HostName
%h
A-J1
A
CanonicalizeHostName
나는 and 를 사용하여 어떤 마법을 이룰 수 있다고 믿지만 CanonicalizePermittedCNAMEs
어떻게 될지는 잘 모르겠습니다.
답변1
ProxyCommand 및 일부 사소한 쉘 스크립트를 사용할 수 있습니다.
Host *-prefix1
ProxyCommand ssh -q jump1 'H="%h"; nc ${H%%-prefix1} %p || echo "ProxyCommand failed! >&2"'
Host *-prefix2
ProxyCommand ssh -q jump2 'H="%h"; nc ${H%%-prefix2} %p || echo "ProxyCommand failed! >&2"'