제가 이해한 바에 따르면 openssh 클라이언트에는 개인 키만 필요하며 해당 공개 키는 서버에 있어야 합니다. 그러나 상세 수준을 3으로 높이면 SSH 클라이언트에 다음이 표시됩니다.
debug1: Next authentication method: publickey
debug1: Offering RSA public key: /home/test/.ssh/id_rsa
debug3: send_pubkey_test
debug3: send packet: type 50
debug2: we sent a publickey packet, wait for reply
debug3: receive packet: type 60
debug1: Server accepts key: pkalg ssh-rsa blen 279
debug2: input_userauth_pk_ok: fp SHA256:VvQDLGFJdfO9FUOqa1ODV6iLT4Te0Nm5Bz1OUA57LjY
debug3: sign_and_send_pubkey: RSA SHA256:VvQDLGFJdfO9FUOqa1ODV6iLT4Te0Nm5Bz1OUA57Lj
" "라고 하면 Next authentication method: public key
무슨 뜻인가요? 공개 키를 사용하는 이유는 무엇입니까?
답변1
먼저, "공개키 인증"이라는 용어는 공개키/개인키 쌍을 이용한 비대칭키 암호 방식을 이용한 인증을 총칭하는 용어이다.
둘째, 공개키예SSH 인증 프로세스의 일부로 서버로 전송됩니다. 클라이언트는 공개 키가 포함된 패킷을 보냅니다. 이 패킷은 해당 개인 키로 암호화됩니다. 이 패킷은 사용자를 식별하며, 서버에서 서명을 확인할 수 있으면 사용자를 인증할 수 있습니다.
서버는 공개키가 서버에 존재하는지 확인합니다. authorized_keys
이름에서 알 수 있듯이 파일의 기능은 다음과 같습니다.승인하다대신 메커니즘확인하다기구. 즉, 열쇠의 존재authorized_keys
승인하다사용자는 특정 키를 사용하므로 서버는 공개 키를 허용하지 않습니다. 사용자는 파일에 여러 개의 키를 가질 수 있습니다 authorized_keys
.
답변2
공개 키는 개인 키에서 파생될 수 있습니다(이 경우 파생된 경우에는 함께 저장됨을 의미함). 개인키는 비공개이고,공유하지 않음.
따라서 연결 초기 단계에서 어떤 키를 사용할지 알아내려고 할 때. 서버에서 일부 공개 키를 흔들고 있을 수 있습니다. 일치하는 항목이 있으면 서버는 개인 키를 소유하고 있음을 증명하도록 요청합니다.