[SSH] Tiến trình SSH key hoạt động như thế nào ?

Tiến trình SSH key hoạt động như thế nào ?

– SSH Key sử dụng cặp key dưới dạng mã hoá asymetric. Thông thường người dùng sẽ giữ private key, còn thông tin public key có thể chia sẻ ở bất kì server nào. Đối với Linux thì thông tin public key sẽ được được lưu trữ trong ~/.ssh/authorized_keys
– File authorized_keys được server sử dụng để chứng thực user.
– Public key được dùng để mã hoá dữ liệu, và dữ liệu đó chỉ có thể decrypt bởi private key người dùng.

 

– Hoạt động diễn ra như sau :
0. Client sẽ gửi thông tin user được sử dụng để đăng nhập vào Server. Server sẽ đi hỏi OS PAM, “có user này trong hệ thống không?” nếu có thì sẽ tiếp tục tiến trình kiểm tra cặp key.
1. Client gửi một thông tin ID của cặp key được sử dụng để chứng thực đến server 
2. Server sẽ kiểm tra authorized_keys file để kiểm tra account mà user đang log in vào dựa vào key ID.
3. Nếu có 1 public key trùng khớp với ID được tìm thấy trong file, thì server sẽ khởi tạo một chuỗi string+number (challenge) và sử dụng public key để mã hoá chuỗi đó thành 1 thông điệp (message).
Note : challenge-response authentication, là một dạng chứng thực thường được sử dụng. Trong cơ chế password authentication, challenge chính là cách server hỏi người dùng “mật khẩu là gì” ? Còn trong quá trình xài key thì challenge chính là 1 chuỗi được sản sinh khởi tạo.
4. Server gửi thông điệp đó đến cho client.
5. Nếu client thật sự sở hữu private key tương ứng của cặp key đã đăng ký với server public key, thì client sẽ có khả năng decrypt thông điệp nhận được từ server để khôi phục lại chuỗi kí tự ban đầu.
6. Sau khi giải mã thành công, thì chuỗi kí tự đó sẽ được kết hợp với shared session key (sử dụng để mã hoá kênh truyền) và tính toán giá trị MD5 hash ra 1 chuỗi mới.
7. Client sẽ gửi chuỗi MD5 đó ngược về phía server như trả lời đối với thông điệp mã hoá từ phía server.
8. Server sẽ sử dụng shared session key và chuỗi kí tự ban đầu chưa mã hoá, tính toán giá trị MD5 hash sau cùng ra kết quả sẽ so với MD5 hash mà client gửi tới server. Nếu trùng khớp nhau thì client sẽ được phép truy cập server.
Cám ơn các bạn đã theo dõi !
Previous article[Linux] Thay đổi editor mặc định của Linux terminal
Next article[SSH] Cải thiện tốc độ login SSH vào Remote Server Linux
Bạn đang theo dõi website "https://cuongquach.com/" nơi lưu trữ những kiến thức tổng hợp và chia sẻ cá nhân về Quản Trị Hệ Thống Dịch Vụ & Mạng, được xây dựng lại dưới nền tảng kinh nghiệm của bản thân mình, Quách Chí Cường. Hy vọng bạn sẽ thích nơi này !