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

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

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

user1serverASSH 키 쌍이 생성되었고 공개 키가 authorized_keys의 파일 에 복사되었습니다 serverB.

user2on 에는 serverA생성된 SSH 키 쌍이 없으며 on 에도 있습니다 serverB.

user1에 로그인합니다 serverA. ( ) 로 user1SSH를 시도하면 정상적으로 작동하지만 비밀번호는 묻지 않습니다.serverBuser2ssh 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보고하나요?

관련 정보