직장과 집에서 모두 사용하는 노트북이 있습니다.
작업할 때 원하는 서버에 직접 SSH를 통해 연결할 수 있습니다.
집에 있을 때 네트워크에 연결하려면 점프 호스트를 거쳐야 합니다.
다음과 같은 항목이 있습니다.
Host jump-server
hostname server1
proxyjump workproxy
그러나 나는 많은 서버와 특정 호스트에 SSH를 연결하는 데 사용하는 일부 스크립트를 가지고 있습니다. 즉, 점프 호스트를 사용할지 여부를 지정하는 명령줄 옵션이 모두 필요하다는 의미입니다.
이것을 자동화할 수 있는 방법이 있나요? 예를 들어, 모든 호스트(workproxy 제외)가 프록시 점프를 수행하도록 환경 옵션을 설정할 수 있나요?
답변1
ProxyCommand
대신 를 사용하여 이 작업을 수행할 수 있습니다 ProxyJump
. ProxyCommand
여기에는 일부 변수를 확인하고 다른 명령을 실행하는 쉘 스크립트가 있을 수 있습니다. 예를 들어 다음과 같은 스크립트가 있을 수 있습니다 /some/proxy
.
#! /bin/sh
if [ -n "$WORK" ] && [ "$1" != workproxy ]
then
echo Work >&2
ssh -qW "$1:$2" workproxy
else
nc "$1" "$2"
fi
및 SSH 구성:
Host *
ProxyCommand /some/proxy %h %p
WORK
이는 환경 변수가 비어 있지 않은지, 호스트가 비어 있지 않고 workproxy
작업 프록시에 연결되어 있는지 확인합니다 . 그렇지 않으면 netcat을 사용하여 지정된 호스트 및 포트에 연결합니다(실제로는 직접 연결).
답변2
구체적인 답변은 아니지만 이로부터 몇 가지 아이디어를 얻을 수 있을 것입니다.위키북"프록시 및 점프 호스트 레시피".
Host *
and 를 호스트 ProxyCommand
로 사용하면 %h
일반 규칙을 작성할 수 있습니다. 그리고 Match
유사할 수도 있지만 명령을 Host
사용하여 원하는 이름으로만 일치를 줄이는 데 도움이 될 수 있습니다.exec
*