SSH를 통해 연결할 수 있는 호스트가 있습니다. 때로는 동일한 네트워크에 있고 네트워크에 직접 SSH를 통해 연결할 수 있고, 때로는 동일한 네트워크 외부에 있어 프록시를 사용해야 할 때도 있습니다.
프록시 서버를 통한 SSH는 직접 연결보다 훨씬 느리기 때문에 직접 연결을 시도하고 실패할 경우 프록시로 폴백하도록 SSH 구성을 설정하고 싶습니다.
현재 구성은 다음과 같습니다.
Host proxy_server
User user
Port port
Hostname some_domain
Host target_host
User user
Port port
Hostname ip_addr_of_host
Match exec not_inside_network
ProxyCommand ssh -W %h:%p proxy_server
이 target_host
항목은 내 구성 파일의 마지막 항목이지만 not_inside_network
구성 파일의 관련 없는 서버에 대한 SSH 연결에 의해 호출됩니다. 어떻게 Match
이 한 서버에만 적용할 수 있나요?
답변1
Match
와 비교할 수 있습니다 Host
. 다른 옵션처럼 호스트의 하위 집합으로 존재하지 않습니다.
그러나 일치 항목에 대해 여러 조건을 지정할 수 있으며 이는 단락된 AND처럼 작동하는 것처럼 보입니다. 따라서 이것이 가능하고 효과가 있어야 합니다.
Match host target_host exec not_inside_network
ProxyCommand ssh -W %h:%p proxy_server
이 규칙은 SSH를 사용할 때마다 확인됩니다. 그러나 "target_host"와 일치하지 않는 호스트의 경우 일치가 즉시 실패하고 다음 Match
또는 Host
키워드(있는 경우)로 이동합니다. 호스트가 "target_host"인 경우에만 실행이 수행됩니다. 그러면 명령문의 진실성에 따라 ProxyCommand가 호출되는지 여부가 결정됩니다.
발생하는 논리를 보려면 -vvv를 사용하여 실행하세요. debug3에서 일부 일치 검사를 확인해야 합니다.