서버 시스템의 인증을 클라이언트 시스템에 혼합하고 사용자의 인증을 서버 시스템에 혼합합니다.
서버 인증
SSH 연결이 설정 될 때 가장 먼저 발생하는 것 중 하나는 서버가 공개 키를 클라이언트로 보내고, 공개 키 암호화 덕분에 클라이언트가 관련 개인 키를 알고 있음을 증명 한다는 것입니다. 이렇게하면 서버가 인증됩니다. 프로토콜의이 부분이 성공하면 클라이언트는 서버가 자신을 가장하는 사람임을 알고 있습니다.
클라이언트는 서버가 알려진 서버인지 확인하고 일부 불량 서버는 올바른 서버로 전달하려고하지 않습니다. SSH는 서버의 적법성을 확인하는 간단한 메커니즘 만 제공 ~/.ssh/known_hosts
합니다. 클라이언트 시스템 의 파일 (시스템 전체 파일도 있음 /etc/ssh/known_hosts
) 에서 이미 연결된 서버를 기억합니다 . 서버에 처음 연결하는 경우 서버에서 제공 한 공개 키가 실제로 연결하려는 서버의 공개 키임을 확인해야합니다. 연결하려는 서버의 공개 키가 있으면이를 ~/.ssh/known_hosts
클라이언트에 수동으로 추가 할 수 있습니다 .
기밀 데이터를 보내기 전에 서버를 인증해야합니다. 특히, 사용자 인증에 비밀번호가 포함 된 경우 인증되지 않은 서버로 비밀번호를 보내면 안됩니다.
사용자 인증
서버는 원격 사용자가 해당 계정에 액세스 할 수있는 권한이 있음을 증명할 수있는 경우에만 원격 사용자 로그인을 허용합니다. 서버의 구성과 사용자의 선택에 따라 사용자는 여러 형태의 자격 증명 중 하나를 제시 할 수 있습니다 (아래 목록은 완전한 것은 아님).
- 사용자는 로그인하려는 계정의 비밀번호를 제시 할 수 있습니다. 그런 다음 서버는 비밀번호가 올바른지 확인합니다.
- 사용자는 공개 키를 제시하고 그 공개 키와 관련된 개인 키를 소유하고 있음을 증명할 수 있습니다. 이것은 서버를 인증하는 데 사용되는 것과 동일한 방법이지만, 이제 사용자는 자신의 신원을 증명하려고 시도하고 서버는이를 확인합니다. 사용자가 개인 키를 알고 공개 키가 계정의 권한 부여 목록 (
~/.ssh/authorized_keys
서버)에있는 경우 로그인 시도가 승인됩니다 .
- 다른 유형의 방법에는 사용자 인증 작업의 일부를 클라이언트 시스템에 위임하는 것이 포함됩니다. 많은 컴퓨터가 동일한 계정을 공유하는 기업과 같은 통제 된 환경에서 발생합니다. 서버는 다른 방식으로 사용되는 것과 동일한 메커니즘으로 클라이언트 시스템을 인증 한 다음 클라이언트를 사용하여 사용자를 인증합니다.