비밀번호 없는 구성을 시도 중입니다 ssh
. 온라인에서 기본 튜토리얼을 읽었지만 기본 프로세스가 이해하기 어렵습니다.
내가 클라이언트 측에 앉아 있고 서버에 로그인하고 싶다고 가정해 보겠습니다(우연히 로컬 네트워크에 있지만 그것은 중요하지 않습니다). 어쨌든, 나에게는 서버에서 키 쌍을 생성하고 공개 키를 클라이언트에 복사하는 것이 합리적이라고 생각합니다. 서버에서 키 쌍을 생성하는 것이 적합한 이유는 두 가지입니다.
- 로그인 정보가 키 쌍에 포함될 수 있도록 비밀번호 없는 SSH를 수행하려는 서버 계정에 이미 로그인되어 있습니다.
- 분명히 클라이언트에는 서버 공개 키만 필요합니다.
SSH를 통해 서버에 연결하면 클라이언트는 서버에서 생성된 공개 키를 보냅니다. 공개 키는 서버의 개인 키와 일치하며 로그인이 허용됩니다.
하지만 제가 읽은 모든 튜토리얼에는 클라이언트에 생성된 키 쌍이 있고 이로 인해 머리가 터질 것 같습니다. 이 글을 읽는 것이 다음과 같은 일로 이어지지 않기를 바랍니다.당신의내 뇌가 터질 것 같아요. 내가 무엇을 놓치고 있나요?
답변1
나는 한발 물러서서 비대칭 암호화가 어떻게 작동하는지 살펴보는 것이 도움이 될 것이라고 생각했습니다. 모든 엔터티(클라이언트/서버)는 수학적으로 서로 관련된 공개 키와 개인 키라는 한 쌍의 키로 시작합니다.
표준 절차에서는 클라이언트의 공개 키를 서버에 복사합니다. 클라이언트가 연결되면 서버는 클라이언트가 실제로 키 쌍을 소유하고 있는지 확인해야 합니다(공개 키는 공개됩니다. 즉, 다른 당사자와 공유됩니다). 따라서 공개 키를 가져와서 임의의 메시지(*)를 암호화하여 클라이언트에 보냅니다. 클라이언트는 암호화된 메시지를 받고 개인 키로 이를 해독한 후 서버에 "이게 메시지인가요?"라고 묻습니다. 서버가 동의하면 클라이언트는 인증된 것으로 간주되어 연결이 계속됩니다.
시나리오를 뒤집어서 무슨 일이 일어나는지 살펴보겠습니다. 서버에는 키 쌍이 있고 공개 키는 클라이언트에 있습니다. 개인 키는 신원을 증명하는 데 필요하며 서버에서만 사용할 수 있습니다. 따라서 클라이언트는 서버의 신원을 확인할 수 있지만 그 반대는 불가능합니다. 서버의 공개 키(역시 공개임)를 얻은 사람은 누구나 서버에 연결할 수 있습니다. 이는 분명히 보안 문제입니다.
서버는 각 클라이언트가 자신의 키 쌍과 클라이언트의 개인 키를 사용하도록 하여 각 클라이언트의 신원을 확인할 수 있습니다. 서버의 승인된 키 목록에 공개 키가 추가된 클라이언트만 연결할 수 있습니다. 클라이언트의 개인 키는 일반적으로 추가 암호화 계층과 비밀번호로 보호됩니다.