내 질문은 다음 시나리오를 기반으로 합니다 : serverA
, 및 . 두 사용자가 두 서버 모두에 존재합니다.serverB
user1
user2
user1
에서 serverA
SSH 키 쌍을 생성하고 공개 키를 authorized_keys
의 파일 에 복사했습니다 serverB
.
user2
on은 serverA
SSH 키 쌍을 생성하지 않았고 on은 SSH 키 쌍을 생성하지 않았습니다 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
참조 해야 합니다. 사용되는 ~
경우 .rht_authorised
기본이 아닌 OpenSSH 구성이 사용되고 있음을 의미합니다.
/etc/ssh/sshd_config
AuthorizedKeysFile
인증 키 파일에 대해 다른 위치(또는 위치)를 정의하는 것이 키워드를 사용하여 가능합니다 . 절대 경로로 정의되고 정의에 태그가 사용되지 %h
않으면 모든 사용자가 동일한 인증 키를 사용합니다. 파일 .%u
%U
AuthorizedKeysCommand
최신 OpenSSH 버전에는 사용자를 인증할 때 공개 키를 찾는 프로그램이나 스크립트를 정의하는 키워드 도 있습니다 . 기본적으로 사용되지는 않지만 일부 호스팅 또는 클라우드 설정에서 사용될 수 있습니다.
무엇을 보고해야 합니까 grep -i authorizedkeys /etc/ssh/sshd_config
?