다른 호스트에 SSH 규칙 적용

다른 호스트에 SSH 규칙 적용

내 현재 .ssh/config 파일의 구성은 다음과 같습니다.

Host *
    FingerprintHash sha256
    StrictHostKeyChecking yes
    PasswordAuthentication no
    GSSApiAuthentication no
    KbdInteractiveAuthentication no
    CheckHostIP yes
    ControlMaster auto
    ControlPath ~/.ssh/master-%r@%h:%p
    Port 28282

하나의 호스트 IP(1.2.3.4)에만 적용되는 다른 규칙을 추가하고 싶습니다.

그래서 .ssh/config 파일에 다음 규칙을 추가했습니다.

Host 1.2.3.4
    Hostname 1.2.3.4
    Port 22

그러나 첫 번째 더 넓은 규칙은 규칙 1.2.3.4에 계속 영향을 미칩니다.
기본 설정(예: 비밀번호로 로그인)을 사용하여 1.2.3.4로 SSH를 통해 연결하고 싶습니다(* 규칙의 영향을 받지 않음).

실행하면 아래와 같은 메시지가 뜹니다(규칙이 적용된 것 같습니다). 포트 28282를 통해 계속 시도하세요.ssh -v [email protected]

debug1: /home/ryan/.ssh/config line 23: Applying options for *
debug1: /home/ryan/.ssh/config line 74: Applying options for 1.2.3.4
..
debug1: Connecting to 1.2.3.4 [1.2.3.4] port 28282.
debug1: connect to address 1.2.3.4 port 28282: Connection refused

비밀번호로 로그인하고 포트 22를 1.2.3.4로 변경하려면 무엇을 변경해야 합니까?

미리 감사드립니다.

답변1

그룹 순서가 잘못된 것 같습니다. 문서에는 전혀 명확하지 않습니다( man ssh_config하지만 "각 매개변수에 대해 처음 얻은 값이 사용됩니다.”, 따라서 구성 파일에서 보다 일반적인 일치를 추가로 수행해야 합니다.

다음 순서로 배열하세요.

Host 1.2.3.4
    Port 22

Host *
    FingerprintHash sha256
    StrictHostKeyChecking yes
    PasswordAuthentication no
    GSSApiAuthentication no
    KbdInteractiveAuthentication no
    CheckHostIP yes
    ControlMaster auto
    ControlPath ~/.ssh/master-%r@%h:%p
    Port 28282

또는 Host *설정을 블록 외부로 이동하여 전역으로 만듭니다. 그런 다음 이를 Host 1.2.3.4블록으로 덮어쓸 수 있습니다.

그러나 이름이나 패턴을 기준으로 특수한 경우의 호스트 세트를 열거하는 것이 더 합리적일 수 있습니다. 그러면 포트 22를 사용하는 기본 작업이 모든 시스템에 계속 적용됩니다.

관련 정보