정규식에 대한 SSH 대체 키를 구성하는 방법

정규식에 대한 SSH 대체 키를 구성하는 방법

도메인에 대해 여러 다른 키와 사용자를 시도하기 위해 SSH 프로필을 구성하려고 합니다. 원래는 이 작업을 수행하기 위해 도트 파일의 함수를 사용했지만 투박하고 느리고 보기 흉했습니다.

우리 회사에는 SSH 로그인을 위한 사용자와 개인 키가 서로 다른 여러 서버가 있습니다. 호스트 이름은 많지만 도메인은 항상 동일합니다.

마스터 레코드에서 필요한 키/사용자 이름 쌍을 찾아볼 수 있지만 재미는 없습니다.

이것은 내 SSH 구성 파일의 일부입니다.

 Host *.companydomain.net
     User ubuntu
     PreferredAuthentications publickey
     IdentityFile ~/.ssh/key_a.pem

 Host *.companydomain.net
     User ubuntu
     PreferredAuthentications publickey
     IdentityFile ~/.ssh/key_b

 Host *.companydomain.net
     User anotheruser
     PreferredAuthentications publickey
     IdentityFile ~/.ssh/key_c 

이제 첫 번째 항목( 사용 key_a.pem)이 시도된 다음 실패하고 아무 것도 실패하지 않는 것으로 보입니다. 이상적으로는 이것이 실패하고 로그인이 성공할 때까지 세 가지 조합을 각각 시도하고 싶습니다.

저는 OpenSSH_7.6p1을 실행하는 macOS를 실행하고 있습니다.

감사해요!

답변1

매뉴얼에는 여러 지시문을 사용할 수 IdentityFile있으며 나열된 모든 파일이 사용되므로 처음 두 항목을 결합할 수 있다고 나와 있습니다.

Host *.companydomain.net
    User ubuntu
    PreferredAuthentications publickey
    IdentityFile ~/.ssh/key_a.pem
    IdentityFile ~/.ssh/key_b

하지만 한 번의 호출(또는 한 번의 SSH 연결)로 여러 사용자 이름을 시도할 수는 없으므로 ssh스크립트를 작성해야 할 수도 있습니다.

세 번째 항목을 다른 항목과 함께 배치하면 IdentityFile스크립트가 너무 길 필요는 없으며 다음과 같아야 한다고 생각합니다.

#!/bin/sh
for user in ubuntu anotheruser; do
    ssh -l "$user" "$@" && break;
done

( User이 경우 구성 파일에서 지시문을 제거하십시오.)

관련 정보