파일에서 읽은 호스트 이름에 대한 SSH 구성

파일에서 읽은 호스트 이름에 대한 SSH 구성

설정은 다음과 같습니다.

  • 로컬 PCSSH로 연결하고 싶은 곳…
  • 게이트웨이 노드gateway이는 SSH를 통해 연결하는 데만 사용되는 중간 노드입니다.
  • 프론트 노드front, 다시 중간 노드로, 최종 노드로 SSH를 연결하는 데 필요합니다.
  • 컴퓨팅 노드, 이는 제가 실제로 사용하고 싶은 노드입니다.

직접 입력할 수 있도록 로컬 SSH 구성을 설정하고 싶습니다 ssh compute.

문제:gateway및 와 달리 front컴퓨팅 노드의 호스트 이름은 정적이지 않습니다(즉, 하루에 여러 번 변경될 수 있음). 컴퓨팅 노드의 이름(예: )을 출력하는 스크립트가 compute_node_hostname.sh있습니다 . 내 구성에서 어떻게 사용할 수 있나요?frontnode339

하드코딩된 컴퓨팅 노드를 사용하는 다음과 같은 간단한 구성이 작동합니다.

Host gateway front compute
    User …
    IdentityFile ~/.ssh/id_rsa

Host front
    HostName front
    ProxyJump gateway

Host compute
    HostName node339
    ProxyJump front

강제:RemoteCommand내 구성에서는 사용할 수 없습니다 .

답변1

'ProxyJump'는 'ProxyCommand'의 더 스마트한 버전이라는 점을 기억하세요. CLI에 지정된 옵션을 복사하여 몇 가지 추가 작업을 수행하지만 기본적으로 다음과 동일합니다.

Host compute
    ProxyCommand ssh -W %h:%p front

여기서 %h%p는 요청된 호스트 이름과 포트로 자동 확장됩니다.

따라서 동적 호스트 이름을 사용할 수 있는 방법은 %h매개변수를 바꾸는 것입니다.

Host compute
    ProxyCommand ssh -W $(compute_node_hostname.sh):%p front

참고: 이는 다른 호스트 키를 가진 노드에서는 제대로 작동하지 않습니다. 이미 원격 네트워크에 있는 다른 호스트를 통해 연결하고 있으므로 이 홉에 대한 호스트 키 확인을 비활성화하는 것이 안전합니다.

관련 정보