Linux에서 SSH 키 설정에 대해 읽었으며 몇 가지 질문이 있습니다. 제가 틀렸다면 정정해주세요...
호스트 tr-lgto가 ssh를 사용하여 호스트 tr-mdm에 연결하려고 한다고 가정합니다. 실제 tr-mdm인지 확인하려면 tr-mdm에 키 쌍을 생성하고 공개 키를 known_hosts
tr-lgto에 추가합니다. tr-mdm이 실제 tr-lgto인지 확인하려면 tr-lgto가 키 쌍을 생성하고 공개 키를 authorized_keys
tr-mdm에 추가해야 합니다.
질문 1: 아니요사용자Known_hosts 파일의 필드는 IP 주소와 호스트 이름뿐입니다. tr-mdm에는 각자 자신의 .ssh
폴더가 있는 사용자가 많을 수 있습니다. 모든 파일에 공개 키를 추가해야 합니까 known_hosts
?
질문 2ssh-keyscan -t rsa tr-mdm
: tr-mdm의 공개키가 반환되는 것으로 확인되었습니다 . 이 키가 어떤 사용자에게 속해 있는지 어떻게 알 수 있나요? 또한 입력한 공개 키는 /root/.ssh/
명령에서 반환된 공개 키와 다릅니다. 어떻게 그래?
답변1
클라이언트 시스템에 대한 서버 시스템의 인증과 서버 시스템에 대한 사용자 인증을 혼동하고 있습니다.
서버 인증
SSH 연결이 설정되면 가장 먼저 일어나는 일은 서버가 공개 키를 클라이언트에 보내고 이를 증명하는 것입니다(덕분에).공개 키 암호화)는 연결된 개인 키를 알고 있음을 클라이언트에 나타냅니다. 이는 서버를 인증합니다. 프로토콜의 이 부분이 성공하면 클라이언트는 서버가 가장하는 사람임을 알게 됩니다.
클라이언트는 서버가 알려진 서버이고 올바른 서버를 가장하려는 일부 불량 서버가 아닌지 확인할 수 있습니다. SSH는 서버의 적법성을 확인하는 간단한 메커니즘만 제공합니다. SSH는 연결된 서버를 ~/.ssh/known_hosts
클라이언트 시스템의 파일에 기억합니다(시스템 전체 파일도 있음 /etc/ssh/known_hosts
). 처음으로 서버에 접속할 때, 서버에서 제공한 공개키가 실제로 접속하려는 서버의 공개키인지 다른 방법으로 확인해야 합니다. 연결하려는 서버의 공개 키가 있는 경우 ~/.ssh/known_hosts
이를 클라이언트에 수동으로 추가할 수 있습니다.
기밀 데이터가 서버로 전송되기 전에 서버를 인증해야 합니다. 특히, 사용자 인증에 비밀번호가 포함된 경우 인증되지 않은 서버로 비밀번호를 전송해서는 안 됩니다.
사용자 인증
서버는 원격 사용자가 계정에 액세스할 수 있음을 증명할 수 있는 경우에만 로그인을 허용합니다. 서버 구성과 사용자 선택에 따라 사용자는 여러 형태의 자격 증명 중 하나를 제공할 수 있습니다(아래 목록은 전체 목록이 아님).
- 사용자는 로그인하려는 계정의 비밀번호를 제공할 수 있으며, 그러면 서버는 비밀번호가 올바른지 확인합니다.
- 사용자는 공개 키를 제공하고 해당 공개 키와 관련된 개인 키를 소유하고 있음을 증명할 수 있습니다. 이는 서버를 인증하는 데 사용되는 것과 동일한 방법이지만 이제 서버가 사용자를 인증하는 동안 사용자는 자신의 신원을 증명하려고 합니다. 사용자가 개인 키를 알고 있고 공개 키가 계정의 승인된 목록(
~/.ssh/authorized_keys
서버)에 있음을 증명하면 로그인 시도가 허용됩니다. - 또 다른 접근 방식은 사용자 인증 작업의 일부를 클라이언트 컴퓨터에 위임하는 것입니다. 이는 많은 컴퓨터가 동일한 계정을 공유하는 기업과 같은 통제된 환경에서 발생합니다. 서버는 역방향으로 사용되는 동일한 메커니즘을 통해 클라이언트 컴퓨터를 인증한 다음 클라이언트를 사용하여 사용자를 인증합니다.
답변2
친구들이 나에게 답을 주었다. 기본적으로 키는 사용자가 아닌 시스템을 식별합니다. 따라서 키는 /etc/ssh/에 저장됩니다. 그래서 /root/.ssh에 저장된 키와 다른 키를 얻었습니다.