.ssh/config의 정규식

.ssh/config의 정규식

qc01직장에서는 - qc12, hc01- hc10등과 같은 일반적인 명명 체계를 따르는 호스트에 로그인해야 하는 경우가 많습니다. 이 모든 작업은 내 노트북에서 수행되어야 합니다 .ssh/config. 물론 호스트 qc*와 항목을 사용할 수 있지만 hc*정규식을 사용할 수 있는지 궁금합니다.

답변1

~처럼갤런선언된 기본값은 ssh_config정규식을 지원하지 않지만 다음과 같은 다른 접근 방식을 시도해 볼 수 있습니다.

답변2

에서 이 작업을 수행할 수 있습니다 ssh_config.

IMO 관련 문서는 읽고 이해하기 어렵습니다. 저는 13년 이상의 Linux 사용 경험을 갖고 있기 때문에 이를 이해합니다 ssh. 다음은 문서 요약입니다.

  • man ssh_config설명합니다Match
  • exec그런 다음 임의의 쉘 명령을 사용하여 일치 항목을 결정할 수 있는 함수가 있습니다.
  • 임의의 쉘 명령에 입력 인수를 전달하는 것이 가능하며 다음 섹션에 설명되어 있습니다.TOKENS

내 경우에는 결국 내~/.ssh/config:

Match exec "echo %h | grep -q 'NAME[0-9]\+$'"
    User USER
    IdentityFile /path/to/identity/file
    Hostname %h.fully.qualified.domain.name

테스트는 이런 까다로운 작업을 통해 이루어져야 합니다. 이 테스트를 수행하려면 을 호출하세요 ssh -vvv HOSTNAME. 이렇게 하면 정확히 무슨 일이 일어나고 있는지, 그리고 새 콘텐츠가 Match올바르게 구현되었는지 여부가 표시됩니다.

답변3

PATTERNS의 섹션을 참조하세요 man ssh_config.

ssh긴 대답은 다음과 같습니다. 이를 지원하기 위해 패치를 하지 않으면 할 수 없습니다 .

답변4

Trevor의 답변을 확장하면 다음과 같습니다.

foo123.123일치 및 foo10.10하나의 규칙 과 같이 더 복잡한 호스트도 가능합니다.아니요사용된 호스트 이름이 포함된 DNS 항목:

Match exec "echo %h | grep -q 'foo[0-9]\+.[0-9]\+$'"
    Port 1234 # just to show it can be paired with non-default ports too,
              # see %p in man ssh_config
    ProxyCommand /usr/bin/nc 10.10.$(echo %h | sed -e 's/foo//') %p

ProxyCommand를 사용하여조종하다%h의 내용은 쉘에 연결되고 netcat을 통해 올바른 포트에 연결됩니다. 이렇게 하면 만들 수 있습니다.기본호스트 범주에 대해 별도의 항목을 만들 필요가 없습니다.

관련 정보