내 현재 .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를 사용하는 기본 작업이 모든 시스템에 계속 적용됩니다.