SSH 인증은 어떻게 작동하나요?

SSH 인증은 어떻게 작동하나요?

내 질문은 다음 시나리오를 기반으로 합니다 : serverA, 및 . 두 사용자가 두 서버 모두에 존재합니다.serverBuser1user2

user1에서 serverASSH 키 쌍을 생성하고 공개 키를 authorized_keys의 파일 에 복사했습니다 serverB.

user2on은 serverASSH 키 쌍을 생성하지 않았고 on은 SSH 키 쌍을 생성하지 않았습니다 serverB.

user1에 로그인하십시오 serverA. user1SSH를 통해 ( ) serverB로 연결을 시도했는데 정상적으로 작동하며 비밀번호가 필요하지 않습니다.user2ssh user2@serverb

내 문제는 이것이다. 어떻게 작동하나요? user2거기에는 공개 키가 없습니다 serverB. 나는 항상 SSH가 로그인을 시도하는 사용자를 인증한다고 생각했습니다. 이는 SSH가 serverB현재 로그인을 인증한다는 의미입니까 ?user1serverA

답변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_configAuthorizedKeysFile인증 키 파일에 대해 다른 위치(또는 위치)를 정의하는 것이 키워드를 사용하여 가능합니다 . 절대 경로로 정의되고 정의에 태그가 사용되지 %h않으면 모든 사용자가 동일한 인증 키를 사용합니다. 파일 .%u%U

AuthorizedKeysCommand최신 OpenSSH 버전에는 사용자를 인증할 때 공개 키를 찾는 프로그램이나 스크립트를 정의하는 키워드 도 있습니다 . 기본적으로 사용되지는 않지만 일부 호스팅 또는 클라우드 설정에서 사용될 수 있습니다.

무엇을 보고해야 합니까 grep -i authorizedkeys /etc/ssh/sshd_config?

관련 정보