![Y 원격 사용자에 로그인할 때 X SSH 키를 사용하시겠습니까?](https://linux55.com/image/10208/Y%20%EC%9B%90%EA%B2%A9%20%EC%82%AC%EC%9A%A9%EC%9E%90%EC%97%90%20%EB%A1%9C%EA%B7%B8%EC%9D%B8%ED%95%A0%20%EB%95%8C%20X%20SSH%20%ED%82%A4%EB%A5%BC%20%EC%82%AC%EC%9A%A9%ED%95%98%EC%8B%9C%EA%B2%A0%EC%8A%B5%EB%8B%88%EA%B9%8C%3F.png)
특정 사용자 이름을 사용하여 원격 호스트에 로그인할 때 특정 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-test
id_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
}