네트워크별 SSH 설정을 구성할 수 있나요?

네트워크별 SSH 설정을 구성할 수 있나요?

내가 얘기하는거야ssh_config(5). 현재 연결된 네트워크를 기반으로 구성 섹션이나 파일을 정의할 수 있는지 궁금합니다.

회사 방화벽이 포트 22를 차단하지만 홈 네트워크는 그렇지 않은 시나리오에 대해 생각하고 있습니다. 따라서 이러한 구성이 있지만 집에서는 기술적으로 필요하지 않습니다.

Host github.com
  Hostname ssh.github.com
  Port 443

이것이 가장 흥미로운 시나리오는 아닐 것이라고 확신합니다. 그러나 제가 무엇을 얻고 있는지 여러분도 볼 수 있기를 바랍니다.

답변1

저는 DHCP 제공 도메인 이름과 폴백으로 하나의 기본값으로 명명된 여러 구성을 사용하여 이 문제를 해결했습니다. 예를 들어 ~/.ssh/config.abc두 도메인에 대해 ~/.ssh/config.xyz, , 플러스 기본값을 사용했습니다. 콜론이 기본값인 이유가 궁금하다면 콜론이라는 이름의 도메인을 허용합니다 .~/.ssh/config:defaultabcxyzdefault

~/.ssh/update-config그런 다음 명령줄에 전달된 도메인을 기반으로 파일 중 하나를 연결하는 작은 스크립트가 있습니다 .

#!/bin/bash`

config=~/.ssh/config
default_config=${config}:default

domain="$1"
domain_config=${config}.${domain}

if test -f ${domain_config}; then
    echo "Using config ${domain_config}"
    ln -sf ${domain_config} ${config}
else
    echo "Using default config ${default_config}"
    ln -sf ${default_config} ${config}
fi

그런 다음 적절한 도메인을 첫 번째 매개변수로 사용하여 이 스크립트를 수동으로 호출할 수 있습니다.

이 작업을 자동화하기 위해 NetworkManager 후크( /etc/NetworkManager/dispatcher.d/02-sshconfig)도 추가했습니다.

#!/bin/bash

case "$2" in
    up|dhcp4-change)
        break
        ;;
    *)
        exit 0
        ;;
esac

# some iface went up

for home in /home/*; do
        user=$(basename ${home})
        script="${home}/.ssh/update-config"
        test -x ${script} && su -l ${user} ${script} ${IP4_DOMAINS}
done

exit 0

이제 인터페이스가 나타나거나 해당 DHCP 구성이 변경될 때마다 이 스크립트가 update-config각 사용자에 대해 실행됩니다.

이상적이지는 않습니다(유선 네트워크가 무선과 다른 도메인을 갖고 있거나 DHCP 구성에 도메인이 없는 경우 등). 하지만 수년 동안 너무 잘 작동해서 구성한 것을 잊어버렸고 오래된 노트북을 뒤져보아야 했습니다. 새 것으로 이식하십시오.

DHCP 구성에서 제공하는 도메인이 없는 경우 할당된 IP와 같은 다른 항목을 기준으로 구성 선택을 시도할 수 있습니다.

물론 구성에 일부 중복이 있으므로 특수 태그(DHCP 도메인, IP 주소/범위)가 있는 단일 소스 구성과 태그가 지정된 호스트만 실제 구성으로 필터링하는 스크립트가 더 나을 수 있습니다. 어쩌면 누군가 여기서 영감을 얻을 수도 있을 것 같습니다.

답변2

의견에 암시된 한 가지 대답은 단순히 사용자 SSH 구성 파일에서 네트워크별 규칙을 유지하도록 제안되었습니다. 예를 들어...

Host foo@work
  Hostname ssh.foo.com
  Port 443

명령을 더 많이 제어하고 호스트 이름을 입력하는 경우 작동할 수 있지만 git pushpull명령은 구성된 리모컨에서 직접 읽습니다.

직장/집 리모컨도 구성해야 할 것 같습니다. :(

관련 정보