Bạn đang trộn lẫn xác thực của máy chủ với máy khách và xác thực người dùng với máy chủ.
Xác thực máy chủ
Một trong những điều đầu tiên xảy ra khi kết nối SSH được thiết lập là máy chủ gửi khóa công khai của nó đến máy khách và chứng minh (nhờ mật mã khóa công khai ) cho khách hàng biết rằng nó biết khóa riêng được liên kết. Điều này xác thực máy chủ: nếu phần này của giao thức thành công, máy khách biết rằng máy chủ đó là người mà nó giả vờ.
Máy khách có thể kiểm tra xem máy chủ có phải là máy chủ đã biết không, và không phải máy chủ lừa đảo nào đó đang cố gắng vượt qua như một máy chủ phù hợp. SSH chỉ cung cấp một cơ chế đơn giản để xác minh tính hợp pháp của máy chủ: nó nhớ các máy chủ bạn đã kết nối, trong ~/.ssh/known_hosts
tệp trên máy khách (cũng có tệp toàn hệ thống /etc/ssh/known_hosts
). Lần đầu tiên bạn kết nối với máy chủ, bạn cần kiểm tra bằng một số phương tiện khác rằng khóa chung được trình bày bởi máy chủ thực sự là khóa chung của máy chủ mà bạn muốn kết nối. Nếu bạn có khóa chung của máy chủ mà bạn sắp kết nối, bạn có thể thêm nó ~/.ssh/known_hosts
vào máy khách theo cách thủ công.
Xác thực máy chủ phải được thực hiện trước khi bạn gửi bất kỳ dữ liệu bí mật nào đến nó. Cụ thể, nếu xác thực người dùng liên quan đến mật khẩu, mật khẩu không được gửi đến máy chủ không được xác thực.
Xác thực người dùng
Máy chủ chỉ cho phép người dùng từ xa đăng nhập nếu người dùng đó có thể chứng minh rằng họ có quyền truy cập vào tài khoản đó. Tùy thuộc vào cấu hình của máy chủ và lựa chọn của người dùng, người dùng có thể đưa ra một trong một số hình thức thông tin đăng nhập (danh sách dưới đây không đầy đủ).
- Người dùng có thể xuất trình mật khẩu cho tài khoản mà anh ta đang cố đăng nhập; Sau đó, máy chủ sẽ xác minh rằng mật khẩu là chính xác.
- Người dùng có thể xuất trình khóa chung và chứng minh rằng mình sở hữu khóa riêng được liên kết với khóa chung đó. Đây chính xác là cùng một phương pháp được sử dụng để xác thực máy chủ, nhưng bây giờ người dùng đang cố gắng chứng minh danh tính của họ và máy chủ đang xác minh chúng. Nỗ lực đăng nhập được chấp nhận nếu người dùng chứng minh rằng anh ta biết khóa riêng và khóa chung nằm trong danh sách ủy quyền của tài khoản (
~/.ssh/authorized_keys
trên máy chủ).
- Một loại phương pháp khác liên quan đến việc ủy thác một phần công việc xác thực người dùng cho máy khách. Điều này xảy ra trong các môi trường được kiểm soát như doanh nghiệp, khi nhiều máy chia sẻ cùng một tài khoản. Máy chủ xác thực máy khách theo cùng một cơ chế được sử dụng theo cách khác, sau đó dựa vào máy khách để xác thực người dùng.