첫 번째 일치 시 SSH 구성 중지

첫 번째 일치 시 SSH 구성 중지

모든 호스트에 대해 .ssh 구성에 로컬 프록시를 추가했지만 프록시 명령 없이 로컬 VM에 들어가고 싶습니다. 내 SSH 시도의 출력:

debug1: /Users/bbarbour/.ssh/config line 1: Applying options for local.dev
debug1: /Users/bbarbour/.ssh/config line 65: Applying options for *

다음 SSH 구성에서 ProxyCommand가 local.dev 항목에 적용되지 않도록 하려면 어떻게 해야 합니까?

Host local.dev
    HostName dev.myserver.com
    User developer
...
Host *
    ProxyCommand /usr/local/bin/corkscrew 127.0.0.1 8840 %h %p

답변1

!다음을 사용하기 전에 ProxyCommand에서 local.dev를 제외할 수 있습니다 .

Host * !local.dev
    ProxyCommand /usr/local/bin/corkscrew 127.0.0.1 8840 %h %p

~에서ssh_config문서:

여러 패턴이 제공되는 경우 공백으로 구분해야 합니다.

패턴 항목 앞에 느낌표(`!')를 붙여 패턴 항목을 무효화할 수 있습니다.. 음수 항목이 일치하면 행의 다른 패턴이 일치하는지 여부에 관계없이 호스트 항목이 무시됩니다. 따라서 부정 일치는 와일드카드 일치에 대한 예외를 제공하는 데 유용합니다.

문서에는 다음과 같이 나와 있습니다.

각 매개변수에 대해,얻은 첫 번째 값이 사용됩니다.. 구성 파일에는 "호스트" 사양으로 구분된 섹션이 포함되어 있으며, 이 섹션은 사양에 제공된 패턴 중 하나와 일치하는 호스트에만 적용됩니다. 일치하는 호스트 이름은 명령줄에 제공된 호스트 이름입니다.

따라서 다음에 정의된 값을 재정의하여 local.dev의 ProxyCommand를 비활성화할 수도 있습니다 Host *.

Host local.dev
    HostName dev.myserver.com
    User developer
    ProxyCommand none

답변2

구성 파일의 옵션은 첫 번째 일치 시 적용됩니다. 호스트 항목에 ProxyCommand가 없으므로 *항목의 프록시 명령이 사용됩니다.

이 문제를 해결하는 방법에는 두 가지가 있습니다.

  • 프록시 명령을 사용하지 않으려는 호스트의 경우 다음 줄을 추가하면 됩니다.
    에이전트 명령 없음
  • 이 항목의 경우 부정을 사용하여 *호스트에 이 항목을 적용해서는 안 된다는 점에 특히 주의하시기 바랍니다.local.dev!
    호스트!local.dev *

관련 정보