그래서 저는 여러 대의 컴퓨터를 관리하고 쉽게 액세스할 수 있도록 각 컴퓨터에 별칭을 설정했습니다.
SSH 클라이언트 구성의 모든 사용자에 대해 이는 다음과 같습니다.
Host MACHINE-1075 M1075 m1075 1075
User service
HostName 10.0.100.75
그리고:
Match User service
IdentityFile ~/.ssh/service_user
이를 통해 를 입력하기만 하면 ssh 1075
올바른 ID 파일과 사용자가 있는 시스템에 자동으로 들어갈 수 있습니다.
이는 일반적인 액세스에 적합합니다. 그러나 때로는 특정 작업을 수행하기 위해 루트로 로그인해야 할 수도 있습니다. ID 파일을 명시적으로 지정하여 이를 수행할 수 있습니다(예 ssh root@1075 -i ~/.ssh/root_user
: .
괜찮아, 하지만 그럴게진짜ssh root@1075
내가 하고 싶은 일은 올바른 작업을 입력하고 수행할 수 있도록 하는 사용자와 호스트의 조합에서 필요한 ID 파일을 파악하도록 SSH를 구성하는 것입니다 . 루트 사용자의 모든 용도를 일치시키고 이를 ID 파일에 연결할 수 있다는 것을 알고 있습니다.
Match User root
IdentityFile ~/.ssh/root_user
그러나 제 경우에는 서로 다른 루트 액세스 자격 증명이 필요할 수 있는 여러 컴퓨터 집합이 있어서 모두 일치하지 않기 때문에 이 방법이 작동하지 않습니다. 이상적으로 내가 하고 싶은 일은 다음과 같습니다.
Match Host 10.0.100.75 && Match User root
IdentityFile ~/.ssh/root_user
그러나 이것은 작동하지 않는 것 같습니다. 임시 해결책으로 간단히 별칭을 root-
컴퓨터의 접두사로 추가하여 이 작업을 수행할 수 있었습니다 ssh root-1075
. 나쁘지는 않았지만 정확히 내가 원하는 것은 아니었습니다.
이는 OpenSSH 8.4를 실행하는 Ubuntu 21.10에서 수행되었습니다.
답변1
IMHO 완전히 명확하지는 않지만 man ssh_config
여러 조건을 일치시키는 구문은 다음과 같습니다.
Match keyword [pattern|pattern-list] keyword [pattern|pattern-list]
여기서 패턴은 pattern-list
쉼표로 구분되지만 키워드 패턴 쌍은 단순 공백으로 구분됩니다.
Match Host 10.0.100.75 User root
&&
AND
논리를 이해하려면 모든 조건이 충족되어야 하기 때문에 이와 같은 명시적 논리 연산자는 지원되지 않습니다 .