키 협상을 수행 할 때 ssh가 정확히 무엇을 보내나요? ID 파일을 명시 적으로 지정하는

ssh에 ID 파일을 명시 적으로 지정하는 경우 :

ssh -i ./id_rsa ...

ssh 디버그 추적에 다음 줄이 있습니다.

debug1: Offering public key: ./id_rsa
debug3: send_pubkey_test
debug2: we sent a publickey packet, wait for reply

ssh-generated id_rsa에 공개 RSA 지수도 포함되어 있습니까? id_rsa형식에 “BEGIN PRIVATE KEY”블록이있는 개인 키가 포함되어 있기 때문에 “공개 키 제공”은 “공개 키를 서버에 전송”이외의 의미를 가져야합니다.

편집하다:

명확히하기 위해, “공개 키 제공”라인 뒤에서 정확히 무슨 일이 일어나고 있는지 알고 싶습니다. 클라이언트가 여러 키를 보유한 경우 모두 키를 하나씩 서버에 제공합니다.



답변

SSH 서버에 연결하고 공개 / 개인 키 쌍으로 인증하려면 먼저 공개 키를 서버와 공유해야합니다.

이이 서버에 사용자의 개인 키에 대한 공개 키를 복사하고에 추가하여 수행 ~/ssh/authorized_keys사본 중 / 복사, 붙여 넣기 id_rsa.pub~/.ssh/authorized_keys서버 또는 함께 cat id_rsa.pub >> ~/.ssh/authorized_keys목록에 추가.

연결하면 서버는 공개 키를 사용하여 챌린지에 서명하고 클라이언트는 개인 키 id_rsa를 사용하여 챌린지를 해독하고 서버의 공개로 다시 암호화하여 다시 host key보냅니다.

호스트는 개인 키로 응답을 해독하여 문제를 올바르게 해독했는지 확인하고 클라이언트 / 호스트는 공개 / 개인 키가 아닌 공유 데이터를 기반으로 암호화 된 연결을 설정합니다.

교환의 NO POINT는 개인 키이거나 호스트의 개인 키가 서로 교환되거나 공개 된 것입니다. 공개 키는 서버에 저장되어 있지만 이것이 공개 키이기 때문입니다.


답변

공개 / 개인 키 암호화 는 매우 간단한 시스템을 기반으로합니다.

당신은 단방향 암호화를 수행 할 수있는 공개 키, 그리고 할 수있는 개인 키가 cryption을. 공개 키는 전 세계의 모든 사람에게 제공 될 수 있으며 개인 키로 해독 할 수있는 데이터를 암호화 할 수는 있지만 아무도 암호화 된 데이터를 해독 할 수 없습니다.

따라서 귀하의 질문에 대한 답변은 “귀하의 공개 키”입니다.


답변

현재로서는 공개 또는 개인 키를 보내야한다고 생각하지 않습니다. 서버에 이미 알려진 일반 텍스트의 개인 키를 사용하여 클라이언트가 암호화를 수행해야합니다. 호스트는 공개 키를 사용하여이 메시지를 해독 할 수 있으며,이를 올바르게 암호화 할 수있는 유일한 것은 해당 개인 키를 보유한 클라이언트이므로 클라이언트를 인증한다는 것을 알고 있습니다.

나는 그것이라고 생각 Offering public key: ./id_rsa이 (에 저장된 개인 키를 사용하기 때문에 ./id_rsa서버에 의해 알려진 후, 서버는 일반 텍스트와 일치하는지이 암호문 및 확인 암호를 해독하는 공개 키를 사용하는 일반 텍스트에 암호화를 수행하기를). 공개 키 파일 ./id_rsa.pub은 초기 키 생성 후 클라이언트에 필요하지 않아야합니다. 이것은 암호 해독을 위해 서버에서만 사용됩니다.