Bài hướng dẫn chỉ sử dụng với VPS cài đặt OS Linux
Tại sao phải sử dụng SSH KEY
Một trong các phương thức đăng nhập vào VPS, máy chủ, cloud server (cả vật lý lẫn máy chủ ảo) khá an toàn đó là việc sử dụng SSH Key để thay thế cho mật khẩu. Mặc định mỗi VPS hay máy chủ bạn sẽ đăng nhập vào bằng username root và mật khẩu root mà nhà cung cấp đã gửi cho bạn lúc thuê VPS, tuy nhiên việc sử dụng mật khẩu luôn có 2 nguy cơ lớn là:- Bạn sẽ mất hoàn toàn nếu lộ mật khẩu.
- Các attacker có thể sử dụng Brute Force Attack để dò tìm mật khẩu.
- Nói chung các cuộc tấn công phá hoại nhằm kiểm soát máy chủ thông qua chiếm quyền đăng nhập bằng mật khẩu, ở đây password SSH
Cơ chế xác thực bằng SSH Key
Ngoài cơ chế xác thức bằng cách nhập mật khẩu như trên còn có cơ chế sử dụng SSH Key để xác thực. Để tạo nên xác thực này cần có hai file, một file lưu Private Key và môt lưu Public key- Public Key khóa chung, là một file text – nó lại lưu ở phía Server SSH, nó dùng để khi Client gửi Private Key (file lưu ở Client) lên để xác thực thì kiểm tra phù hợp giữa Private Key và Public Key này. Nếu phù hợp thì cho kết nối.
- Private Key khóa riêng, là một file text bên trong nó chứa mã riêng để xác thực (xác thực là kiểm tra sự phù hợp của Private Key và Public Key). Máy khách kết nối với máy chủ phải chỉ ra file này khi kết nối SSH thay vì nhập mật khẩu. Hãy lưu file Private key cận thận, bất kỳ ai có file này có thể thực hiện kết nối đến máy chủ của bạn
1. Nếu các bạn sử dụng Linux
a. Cách tạo SSH KEY Bật terminal trên máy linux của bạn lên và thực hiện theo các bước sau. Thực hiện câu lệnh sau để tạo Public key# ssh-keygen -t rsaSau khi thực hiện câu lệnh này hệ thống sẽ yêu cầu bạn nhập passphrase (tại đây bạn không cần nhập cũng được ấn enter cho đến khi kết thúc, nhưng Cloud Việt khuyên bạn nên nhập vào trường này vì nó giống bảo mật 2 lớp cho VPS của bạn.) b. Cấu hình file sshd_config
# vi /etc/ssh/sshd_configThay đổi 2 dòng
PubkeyAuthentication yes AuthorizedKeysFile .ssh/authorized_keysTrong đó .ssh/authorized_keys cho biết, tìm Public key tại file .ssh/authorized_keys của User. Có nghĩa là Public key sẽ phải có cho từng User kết nối, và nó lưu dưới thư mục của User. Với việc copy này thì đoạn mã SSH Key vừa tạo trên máy linux của bạn sẽ được chuyển vào VPS tại thư mục
/root/.ssh/authorized_keysLưu ý – Lỗi hay gặp không kết nối được SSH KEY: thường là lưu file public key ở Server ở các thư mục không được chmod phù hợp. Nếu user có tên là abc, thì chmod phù hợp là:
/root/abc 700 /root/abc/.ssh 700 /root/abc/.ssh/authorized_keys 600Tương tự ở bài này bạn lưu thông tin: /root/.ssh/authorized_keys
#chmod 700 /root/.ssh #chmod 600 /root/.ssh/authorized_keysc. Cách đưa SSH KEY vào trong VPS client chạy linux (centos 7) Tiếp đến chúng ta cần copy đoạn Key này tới VPS server của các bạn, ngay tại máy Linux client của các bạn ta thực hiện lệnh sau:
#scp -r root@IP Server: /root/.ssh/id_rsa /rootFile private key được copy vào thư mục /root/.ssh/id_rsa c. Đăng nhập SSH từ máy linux tới VPS Sau khi copy xong các bạn thực hiện ssh tới VPS theo lệnh sau.
# ssh -i /root/.ssh/id_rsa root@IP serverThông báo sau sẽ hiện ra, và lúc này bạn không cần nhập password SSH nữa.
2. Nếu bạn sử dụng Windows
a. Cách sử dụng phần mềm Putty-Gen để tạo SSH KEY Nếu bạn sử dụng Windows thì sẽ dùng phần mềm PuTTY-Gen để tạo SSH, bạn có thể tải PuTTY-Gen tại đây. Tải xong bạn mở ra, bạn chọn các tùy chọn như trong ảnh dưới rồi ấn Generate. Chú ý:- Trong lúc tạo, bạn hãy rê chuột vòng vòng màn hình cho đến khi nó tạo xong.
- Sau khi tạo xong, bạn sẽ thấy nó hiện ra thế này.
- Các bạn lưu ý khi lưu file ssh key đuôi file sẽ là .ppk và hãy lưu giữ nó cẩn thận vì nếu mất file này sẽ không thể kết nối đến VPS qua SSH được nữa.
- Bạn không nên đưa file này cho bất kỳ ai tránh trường hợp người khác có thể login vào VPS của bạn khi họ có file này
- Public key bắt đầu bằng từ khóa ssh-rsa-XXXXXX. Đây sẽ là cái đoạn mà bạn sẽ copy bỏ vào server để đối chiếu khi login bằng SSH KEY
mkdir ~/.ssh chmod 700 ~/.ssh touch ~/.ssh/authorized_keys chmod 600 ~/.ssh/authorized_keysSau đó mở file authorized_keys trong thư mục .ssh ở thư mục gốc của user và copy toàn bộ ký tự của public key vào. c. Cách sử dụng SSH KEY trên Putty để login SSH vào VPS Để kiểm tra xem nó đã hoạt động chưa, hãy đăng nhập lại vào SSH với tài khoản vừa thêm SSH Key. Nếu bạn đăng nhập bằng Linux thì nó sẽ tự hỏi passphrase của bạn, còn nếu bạn đăng nhập ở Windows thông qua các phần mềm khác như PuTTY thì khi đăng nhập, bạn phải trỏ file private key vào để nó chứng thực. Hãy chọn đường dẫn của file SSH Key vừa mới tạo ra ở trên để xác thực khi login vào VPS
3.Cuối cùng:
Xong các bước bên trên về cách cấu hình và sử dụng SSH key trên Centos 7. Yêu cầu tiên quyết là bạn phải thử kết nối cloud server bằng SSH Key. Nếu thành công bạn tiến hành bước cuối cùng để đảm bảo máy chủ chỉ cho đăng nhập SSH từ xa:- Lưu file Private key id_rsa cẩn thận như trên Google drive, mail,…và tuyệt đối không share cho bất kỳ ai.
- Tắt chế độ SSH đăng nhập bằng user password
# vi /etc/ssh/sshd_configTìm dòng -> PasswordAuthentication yes Sau đó sửa yes -> no Hãy lưu lại và restart sshd
# systemctl restart sshdVới việc này bạn đã vô hiệu hóa xác thực passwd qua SSH và bạn chỉ có thể đăng nhập bằng Private key mà bạn vừa tạo. Lưu Ý:
- Với việc sử dụng SSH KEY và vô hiệu hóa xác thực passwd khi đăng nhập qua SSH thì việc bảo mật file SSH_KEY là rất quan trọng và các bạn phải luôn mang theo file này nếu muốn sử dụng SSH trên một máy tính khác, các bạn có thể lưu file này trên Google Drive hoặc trên một công cụ lưu trữ nào khác để đăng nhập VPS trên bất kỳ máy tính nào.