Y 원격 사용자에 로그인할 때 X SSH 키를 사용하시겠습니까?

Y 원격 사용자에 로그인할 때 X SSH 키를 사용하시겠습니까?

특정 사용자 이름을 사용하여 원격 호스트에 로그인할 때 특정 SSH 키를 설정하는 방법을 찾고 있습니다. SSH 구성 파일에서 이를 달성할 수 있습니까?

예를 들어:

사용자 이름 "testuser"로 "id_rsa-test" 키를 사용합니다.

ssh testuser@host1
ssh testuser@host2
ssh testuser@host3

다른 모든 사용자에게는 "id_rsa" 키를 사용하십시오.

ssh root@host1
ssh admin@host2
ssh [email protected]

이것을 구성하는 방법이 있나요?

답변1

@xhienne 감사합니다(댓글 링크) 귀하의 제안에 감사드립니다.

ssh_config에 다음을 추가하면 문제가 해결된 것 같습니다.

Match User testuser
  IdentityFile ~/.ssh/id_rsa-test

이 블록은 테스트 사용자에게 미리 보내지기 Host *위해 맨 위에 배치되어야 합니다 .id_rsa-testid_rsa

답변2

OpenSSH를 사용한다고 가정하면 ~/.ssh/config파일별로 파일을 구성할 수 있으며 사용자도 지정할 필요가 없으며 직접 만들 수 있습니다.

host host1
    User testuser
    IdentityFile ~/.ssh/id_rsa-test

그런 다음 이 작업을 수행하면 ssh host1자동으로 수행됩니다. 또는 host1다른 사용자이기도 하므로 다음을 수행할 수 있습니다.

host test-host1
    User testuser
    IdentityFile ~/.ssh/id_rsa-test
    Hostname host1

그럼 해ssh test-host1

원하는 모든 호스트에 대해 동일한 작업을 수행할 수 있습니다.

ssh_config(5) 파일의 항목과 일치하지 않는 모든 호스트는 기본 동작을 사용하거나 전역 설정, 즉 호스트 블록 내에 없는 ssh_config에 지정된 기본값을 사용합니다.

ssh_config는 사용자 이름 일치를 지원하지 않지만 이를 감지하는 쉘 스크립트를 작성할 수 있습니다. 다음은 사용자 이름/호스트가 항상 첫 번째 인수라고 가정하고 그렇지 않으면 중단되는 bash의 취약한 예입니다.

ssh() {
    if [[ "$1" =~ ^testuser@ ]]; then
        command ssh -i ~/.ssh/id_rsa-test "$@"
    else
        command ssh "$@"
    fi
}

관련 정보