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에 저장된 키와 다른 키를 얻었습니다.