Nên dùng một hay nhiều SSH Key để truy cập từng máy chủ? Tại sao?
Mình có một thắc mắc khá lâu mong mọi người cùng thảo luận.
Ví dụ, mình có một laptop và tạo 3 máy chủ server 1, server 2 và server 3. Để SSH từ laptop của mình vào 3 server này, mình có thể tạo 1 hoặc 3 SSH Key:
- Trường hợp 1
- Mình chỉ tạo một SSH Key duy nhất là id_rsa.pub và thêm nó vào cả 3 server 1, server 2 và server 3.
- Trường hợp 2
- Mình tạo SSH Key id_rsa_sv1.pub và thêm nó vào server 1
- Mình tạo SSH Key id_rsa_sv2.pub và thêm nó vào server 2
- Mình tạo SSH Key id_rsa_sv3.pub và thêm nó vào server 3
Theo các bạn, mình nên làm theo cách nào? Tại sao làm như vậy?
Mình xin cảm ơn!
6 CÂU TRẢ LỜI
Giống như việc bạn sử dụng chung 1 password cho tất cả các mạng xã hội, ví điện tử, banking, .... Rất nguy hiểm khi nền tảng nào số đó bị lộ mật khẩu, Vì vậy mình nghĩ tốt nhất nên tạo riêng cho mỗi server 1 ssh key.
có nhiều cách tiếp cận khác nhau mà mình dùng cho phù hợp ví dụ cách sau mình hay làm:
- Block toàn bộ ip truy cập ssh máy chủ, chỉ cho 1 list ips là được quyền connect
- 1 key ssh vào 1 máy chủ sau đó login từ máy chủ này sang các máy con.
Hoặc dùng terminus lưu 1 mớ password trên cloud, password thì random luôn khỏi nhớ chi cho mệt,
Mình thấy đơn giãn nhất mỗi vps làm một public key riêng là an toàn nhé. Bạn đâu có phải nhớ key đâu mà lo tạo nhiều.
-
Chạy trường hợp 1: Dùng 1 cặp private key + publickey là được, publickey để trên server, chẳng may server đó bị tấn công thì cũng không ảnh hưởng private key bác trên nói việc lộ password của các nền tảng khác nhau chẳng liên quan gì khi đây là cơ chế cặp key.
-
Không nên chạy Trường hợp 2 thì sẽ sinh ra nhiều key làm khó quản lý, đẩy vào agent sẽ làm mỗi lần đăng nhập mất thời gian hơn vì phải thử từng key, hệ thống nào làm chặt khéo còn chặn luôn vì fail nhiều lần. Và nhiều privatekey cũng không hề bảo mật hơn khi bạn lưu nó trên cùng 1 máy của bạn. Máy bạn bị tấn công thì mất hết chứ chẳng lẽ chỉ mất 1, 2 key
Chốt: Quan trọng là giữ cái privateKey duy nhất thật an toàn, không đưa lên bất kỳ nền tàng nào, không share key với mọi hình thức. Cá nhân mình vứt vào KeePassXC rồi cho nó tự đẩy vào agent luôn.