serverA
내 질문은 , serverB
, user1
및 의 시나리오를 기반으로 합니다 user2
. 두 사용자가 두 서버 모두에 존재합니다.
user1
의 serverA
SSH 키 쌍이 생성되었고 공개 키가 authorized_keys
의 파일 에 복사되었습니다 serverB
.
user2
on 에는 serverA
생성된 SSH 키 쌍이 없으며 on 에도 있습니다 serverB
.
user1
에 로그인합니다 serverA
. ( ) 로 user1
SSH를 시도하면 정상적으로 작동하지만 비밀번호는 묻지 않습니다.serverB
user2
ssh user2@serverb
내 질문은 이것입니다. 어떻게 작동하나요? user2
에 공개 키가 없습니다 serverB
. 나는 항상 SSH가 로그인을 시도하는 사용자를 인증한다고 생각했습니다. 이는 SSH가 serverB
현재 로그인된 사용자를 인증한다는 user1
의미 입니까 serverA
?
답변1
전혀 옳지 않은 것 같습니다. OpenSSH를 사용하고 있나요? 아니면 다른 SSH 구현이 있습니까?
작동 방식에 대한 질문으로 돌아가면 예상한 대로입니다(단순화).
- 원격 시스템에 연결합니다.
- 사용자 이름을 전달합니다.
- 원격 시스템은 사용자가 존재하는지 확인하고 키 인증이 구성된 경우 키를 요청합니다.
- 사용자 HOME/.ssh/authorized_keys가 존재하는지 확인합니다.
- Authorized_keys의 항목이 작동하거나 아무것도 남지 않을 때까지 하나씩 확인합니다.
- 일치하는 키가 발견되면 인증이 성공합니다.
이는 모두 대상 사용자 ~.ssh/authorized_keys 파일의 키를 기반으로 합니다. 해당 파일/키가 없으면 뭔가 매우 손상된 것입니다.
답변2
댓글에서 을 언급하셨습니다 .rht_authorised key
.
기본 사용자별 인증 키 파일은 사용자의 홈 디렉터리를 참조하는 ~/.ssh/authorized_keys
위치에 있어야 합니다. 가 전혀 사용되지 ~
않는다면 이는 기본이 아닌 OpenSSH 구성이 사용되고 있음을 의미합니다..rht_authorised
/etc/ssh/sshd_config
(키워드를 사용하여) 승인된 키 파일에 대해 다른 위치(또는 여러 위치)를 정의할 수 있습니다 AuthorizedKeysFile
. 절대 경로로 정의되고 , %h
또는 %u
같은 토큰이 %U
정의에 사용되지 않으면 모든 사용자는 동일한 승인된 키 파일을 사용하게 됩니다. .
AuthorizedKeysCommand
최신 OpenSSH 버전에는 사용자를 인증할 때 공개 키를 찾는 데 사용되는 프로그램이나 스크립트를 정의하는 키워드 도 있습니다 . 기본적으로 사용되지는 않지만 일부 호스팅 또는 클라우드 설정에서 사용될 수 있습니다.
무엇을 grep -i authorizedkeys /etc/ssh/sshd_config
보고하나요?