SSH (Secure Shell) là một giao thức được mã hóa được sử dụng để quản lý và giao tiếp với các máy chủ. Thông thường khi kết nối với 1 máy chủ, chúng ta thường sử dụng 1 ứng dụng remote với giao diện command-line. Việc đầu tiên để có thể thực hiện command trên máy chủ là cần login vào máy chủ thông qua kết nối SSH. SSH cung cấp cho chúng ta 2 phương thức để xác thực đó là:
- Xác thực bằng User/Password
- Xác thực bằng SSH Keys
Việc xác thực SSH sử dụng User/Password tiềm ẩn khá nhiều nguy cơ bảo mật, VD: Nếu sử dụng mật khẩu yếu, thì hacker có thể thực hiện cuộc tấn công SSH Brute Force để dò password bằng việc thử liên tục các password cho đến khi thành công. Vì vậy để server bảo mật thì phương pháp xác thực bằng SSH Keys được khuyến nghị sử dụng. Trong bài viết này vinasupport.com sẽ hướng dẫn các bạn tạo và kết nối tới Server bằng cách sử dụng SSH Keys.
1. Tạo SSH Keys ( RSA Key Pair )
Việc đầu tiên là tạo cặp khóa chia sẻ (Key Pair) trên máy tính (Client)
ssh-keygen
– Enter file in which to save the key (/home/admin/.ssh/id_rsa):
=> Điền đường dẫn để lưu key, nếu không điền thì đường dẫn sẽ là mặc định ở trong dấu ngoặc.
– Enter passphrase (empty for no passphrase):
=> Nhập password cho key, nếu không muốn sử dụng password thì bỏ trống và gõ Enter
– Enter same passphrase again:
=> Tương tự nhập lại password, và bỏ trống nếu không muốn sử dụng password
– Your identification has been saved in /home/admin/.ssh/id_rsa.
=> Private Key (Khóa bí mật) đã được tạo ra và lưu tại địa chỉ này. Bạn sẽ giữ key này ở máy tính của mình, và sử dụng nó mỗi khi kết nối tới server.
– Your public key has been saved in /home/admin/.ssh/id_rsa.pub.
=> Public Key (Khóa công khai) đã được tạo ra và lưu ở địa chỉ này. Bạn sẽ đặt nó trên server, để khi xác thực, chúng sẽ thực hiện trao đổi với nhau.
2. Đưa Public Key (Khóa công khai) lên Server.
Để đưa Public Key (id_rsa.pub) lên server, sử dụng tool của Linux/Unix là ssh-copy-id với cú pháp như sau:
ssh-copy-id username@remote-ip-address
– remote-ip-address là địa chỉ IP của Server, hoặc có thể sử dụng hostname để thay thế.
Public key sẽ được lưu trên server ở đường dẫn /home/<username>/.ssh/authorized_keys
Trường hợp các bạn lưu đường dẫn Public Key không phải đường dẫn mặc định, thì có thể copy thủ công tới đúng đường dẫn kia trên Server cũng được. Hoặc sử dụng command bên dưới:
cat ~/.ssh/id_rsa.pub | ssh username@remote-ip-address "mkdir -p ~/.ssh && touch ~/.ssh/authorized_keys && chmod -R go= ~/.ssh && cat >> ~/.ssh/authorized_keys"
Để sử dụng được SSH Keys, trên server cần phân quyền, login vào server và set lại quyền như sau:
sudo chmod 600 ~/.ssh sudo chmod 400 ~/.ssh/authorized_keys
3. Kết nối tới server thông qua SSH Keys
Giờ thử kết nối tới server thông qua SSH Keys vừa tạo
ssh username@remote-ip-address
Trường hợp file Private Key (id_rsa) lưu không ở đường dẫn mặc định thì sử dụng tham số -i để chỉ định đường dẫn của Private Key
ssh -i <path_to_private_key> username@remote-ip-address
4. Cấu hình Server chỉ sử dụng SSH Keys
Sửa file /etc/ssh/sshd_config và thay đổi tham số PasswordAuthentication từ ‘yes‘ -> ‘no‘
PasswordAuthentication no
Sau đó restart SSH Service để nhận config mới.
# Restart SSH Service trên CentOS 7.x/ RHEL 7.x sudo systemctl restart sshd.service # Restart SSH Service trên CentOS 6.x / RHEL 6.x sudo service sshd restart # Restart SSH Server trên Ubuntu/Debian sudo /etc/init.d/ssh restart
Bây giờ bạn có thể truy cập Server một cách nhanh chóng và bảo mật với SSH Keys
Nguồn: vinasupport.com