환경을 통한 SSH 옵션

환경을 통한 SSH 옵션

직장과 집에서 모두 사용하는 노트북이 있습니다.

작업할 때 원하는 서버에 직접 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*

관련 정보