
설정은 다음과 같습니다.
- 로컬 PCSSH로 연결하고 싶은 곳…
- 게이트웨이 노드
gateway
이는 SSH를 통해 연결하는 데만 사용되는 중간 노드입니다. - 프론트 노드
front
, 다시 중간 노드로, 최종 노드로 SSH를 연결하는 데 필요합니다. - 컴퓨팅 노드, 이는 제가 실제로 사용하고 싶은 노드입니다.
직접 입력할 수 있도록 로컬 SSH 구성을 설정하고 싶습니다 ssh compute
.
문제:gateway
및 와 달리 front
컴퓨팅 노드의 호스트 이름은 정적이지 않습니다(즉, 하루에 여러 번 변경될 수 있음). 컴퓨팅 노드의 이름(예: )을 출력하는 스크립트가 compute_node_hostname.sh
있습니다 . 내 구성에서 어떻게 사용할 수 있나요?front
node339
하드코딩된 컴퓨팅 노드를 사용하는 다음과 같은 간단한 구성이 작동합니다.
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
참고: 이는 다른 호스트 키를 가진 노드에서는 제대로 작동하지 않습니다. 이미 원격 네트워크에 있는 다른 호스트를 통해 연결하고 있으므로 이 홉에 대한 호스트 키 확인을 비활성화하는 것이 안전합니다.