Việc tạo SSH key cho server sẽ tăng tính bảo mật hơn. Vậy SSH key là gì? Cách tạo SSH Key cho server của mình? Bài viết này sẽ hướng dẫn cho các bạn chi tiết và cụ thể nhất.
SSH Key là gì?
Secure Shell (hay còn gọi là SSH) là một giao thức mật mã cho phép người dùng thực hiện dịch vụ qua các mạng không được bảo mật. SSH Key sẽ mang đến nhiều sự bảo mật về đăng nhập hơn là chỉ dùng mật khẩu thông thường. Trong khi mật khẩu thông thường có thể bị bẻ khóa thì SSH Key gần như là không thể giải mã.
Việc tạo một cặp Key sẽ cung cấp hai chuỗi ký tự: Một public key và một private key. Public key có thể được đặt ở bất kỳ server nào. Sau đó mở khóa bằng cách kết nối với máy client đã có private key. Khi cả hai đã khớp nhau, hệ thống sẽ mở khóa mà không cần mật khẩu. Ta còn có thể bảo vệ private key bằng một passphrase để tăng cường sự bảo mật.
Trong các lệnh ở bài viết này, sẽ có một số giá trị được highlight
– chính là các biến, hãy thay thế chúng bằng các giá trị riêng của mình.
Điều kiện để kích hoạt SSH key trên Windows 10
- Hệ thống đang chạy Windows 10
- User account với quyền quản trị
- Truy cập được vào command prompt
- Một trình duyệt web (tùy chọn, dùng để download PuTTY)
Hướng dẫn tạo SSH key
1. Tạo một RSA Key Pair
Đầu tiên hãy tạo một key pair trên máy client (có thể là máy tính riêng):
ssh-keygen -t rsa
2. Lưu trữ key và passphrase
Khi nhập lệnh Gen Key, bạn sẽ nhận được một số câu hỏi:
Enter file in which to save the key (/home/demo/.ssh/id_rsa):
Nhấn Enter, lưu file vào user home (trong bài viết này sẽ sử dụng tên của user là demo để làm mẫu).
Enter passphrase (empty for no passphrase):
Passphrase được sử dụng hay không thì tùy thuộc vào người dùng. Việc sử dụng passphrase mang lại một số lợi ích: tính bảo mật của key không bao giờ được hiển thị với bất kỳ ai khác, cho dù nó được mã hóa như thế nào. Nếu private key được bảo vệ bằng passphrase rơi vào tay user trái phép, họ sẽ không thể đăng nhập vào các tài khoản cho đến khi tìm ra được passphrase. Tất nhiên, nhược điểm duy nhất của passphrase là phải nhập nó mỗi khi sử dụng key pair.
Toàn bộ quá trình tạo key sẽ như sau:
ssh-keygen -t rsa
Output
Generating public/private rsa key pair.
Enter file in which to save the key (/home/demo/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/demo/.ssh/id_rsa.
Your public key has been saved in /home/demo/.ssh/id_rsa.pub.
The key fingerprint is:
4a:dd:0a:c6:35:4e:3f:ed:27:38:8c:74:44:4d:93:67 @a
The key's randomart image is:
+--[ RSA 2048]----+
| .oo. |
| . o.E |
| + . o |
| . = = . |
| = S = . |
| o + = + |
| . o + o . |
| . o |
| |
+-----------------+
Public key hiện nằm trong /home/demo/.ssh/id_rsa.pub
. Private key (identification) hiện nằm trong /home/demo/.ssh/id_rsa
.
3. Sao chép Public Key
Khi key pair đã được tạo, hãy đặt public key trên server mà chúng ta muốn sử dụng.
Sao chép public key vào file authorized_keys của máy bằng lệnh ssh-copy-id. Đảm bảo thay thế username và địa chỉ IP như mẫu bên dưới.
ssh-copy-id demo@198.51.100.0
Lưu ý: Nếu sử dụng Mac, ssh-copy-id sẽ không được cài đặt trên hệ thống. Tuy nhiên có thể cài đặt nó bằng Homebrew:
brew install ssh-copy-id
Ngoài ra còn có thể dán các key bằng SSH:
cat ~/.ssh/id_rsa.pub | ssh demo@198.51.100.0 "mkdir -p ~/.ssh && chmod 700 ~/.ssh && cat >> ~/.ssh/authorized_keys"
Cho dù chọn sử dụng lệnh nào thì các dòng sau sẽ vẫn hiển thị:
The authenticity of host '198.51.100.0 (198.51.100.0)' can't be established.
RSA key fingerprint is b1:2d:33:67:ce:35:4d:5f:f3:a8:cd:c0:c4:48:86:12.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '198.51.100.0' (RSA) to the list of known hosts.
user@198.51.100.0's password:
Thông báo này đảm bảo rằng không có extra key nào được thêm vô.
Bây giờ hãy tiếp tục và đăng nhập vào user profile mà không cần phải nhập mật khẩu. Tuy nhiên, nếu đặt passphrase khi tạo SSH key, sẽ có yêu cầu nhập passphrase tại thời điểm đó (cũng như cho mọi lần đăng nhập kế tiếp).
4. Vô hiệu hóa mật khẩu cho root login
Khi đã sao chép các SSH Key vào server của mình và đảm bảo rằng có thể đăng nhập bằng SSH Key. Hãy hạn chế root login thành chỉ có thể đăng nhập thông qua SSH Key.
Để thực hiện việc này, mở file SSH config:
sudo nano /etc/ssh/sshd_config
Trong file đó, hãy tìm dòng PermitRootLogin
và sửa đổi nó như bên dưới để đảm bảo rằng user chỉ có thể sử dụng SSH Key:
/etc/ssh/sshd_config
PermitRootLogin without-password
Lưu và đóng file khi đã hoàn tất.
Để lưu những thay đổi này, dùng lệnh sau:
sudo systemctl reload sshd.service
Kích hoạt SSH Key Windows 10 bằng OpenSSH Client
1. Kiểm tra OpenSSH Client được cài đặt chưa
Đầu tiên, kiểm tra xem bạn đã cài đặt OpenSSH client chưa:
1. Mở panel Settings, nhấp vào Apps.
2. Dưới heading Apps and Features, click vào Optional Features.
3. Lướt xuống list để tìm xem OpenSSH Client được liệt kê chưa
- Nếu chưa, click vào dấu + bên cạnh Add a feature.
- Trượt xuống dưới danh sách để tìm và chọn OpenSSH Client.
- Cuối cùng, nhấp vào Install.
2. Mở Command Prompt
1. Nhấp vào Windows key
2. Nhập cmd
3. Dưới phần Best Match, chuột phải vào Command Prompt
4. Nhấn vào Run as Administrator
5. Nếu được thông báo, chọn Yes ở trong phần pop-up Do you want to allow this app to make changes to your devide?
3. Sử dụng OpenSSH để tạo SSH Key Pair
1. Trong command prompt, nhập:
ssh-keygen
2. Theo mặc định, hệ thống sẽ lưu key vào C:\Users\your_username\.ssh\id_rsa. Bạn có thể sử dụng tên mặc định, hoặc chọn các tên khác theo ý mình. Việc này có thể giúp phân biệt các key khác nhau, nếu bạn dùng nhiều key pair. Để lựa chọn các tùy chọn mặc định, chọn Enter:
Lưu ý: Nếu file có tên tương tự đã tồn tại, bạn sẽ được hỏi xem có muốn ghi đè file đó không.
3. Sau đó bạn sẽ được yêu cầu enter a passphrase. Nhấn Enter để bỏ qua bước này.
4. Hệ thống sẽ kích hoạt key pair, rồi hiển thị key fingerprint và một randomart image.
5. Mở file browser của bạn.
6. Điều hướng đến C:\Users\your_username\.ssh.
7. Bạn sẽ thấy có hai file. Nhận dạng sẽ được lưu trong file id_rsa và public key được gắn nhãn id_rsa.pub. Đây chính là SSH key pair của bạn.
Lưu ý: Thông thường, public key sẽ được xác định bằng phần mở rộng .pub. Bạn có thể sử dụng Notepad để xem nội dung của private và public key.
Kích hoạt SSH Key Windows 10 bằng PuTTY
Trước khi OpenSSH được đi kèm với Windows, công cụ PuTTY từng là tiêu chuẩn vàng cho việc kích hoạt SSH key.
1. Cài đặt PuTTY
1. Đi đến trang của developer, download trình cài đặt PuTTY:
- https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html
2. Nhấp đúp chuột vào file đã donwload, rồi làm theo trình cài đặt wizard để cấu hình, trừ khi bạn có nhu cầu cụ thể để thay đổi. Click vào Next rồi đi đến màn hình tiếp theo.
- Chọn cài đặt product features PuTTY. Chọn các cài đặt mặc định nếu bạn không có nhu cầu khác. Click Next để sang màn hình tiếp theo.
- Khi quá trình hoàn tất, chọn Finish để thoát trình cài đặt wizard.
2. Chạy PuTTY SSH Key Generator
- Nhấp Windows key.
- Nhập vào puttygen.
- Dưới phần Best Match, chuột phải vào PuTTYgen.
- Click Run as administrator.
- Nếu được thống báo, click Yes trên pop-up Do you want to allow this app to make changes to your device?
3. Sử dụng PuTTY để tạo SSH Key Pair
Quá trình dưới đây sẽ kích hoạt key RSA, một loại thuật toán mã hoá cổ điển, được sử dụng rộng rãi. Công cụ keygen PuTTY cũng cung cấp một số thuật toán khác – DSA, ECDSA, Ed22519, SSH-1 (RSA).
Nếu bạn yêu cầu một thuật toán mã hóa khác, hãy tùy chọn thuật toán mong muốn trong heading Parameters trước khi kích hoạt key pair.
1. Trong cửa sổ PuTTY Key Generator, click Generate.
2. Di chuyển con chuột quanh các box xám để lấp đầy thanh màu xanh.
3. Lưu lại public key:
- Click vào nút có nhãn Save public key.
- Chọn một địa điểm để lưu key.
- Đặt tên key (ví dụ như putty_key.pub)
4. Lưu lại private key:
- Nhấp vào menu Conversions ở phía trên
- Chọn Export OpenSSH Key
- Bạn sẽ được yêu cầu xem có muốn lưu key mà không có passphrase không. Chọn Yes.
- Chọn địa điểm lưu key (thường là cùng folder với public key).
- Đặt lên key (ví dụ: putty_key).
Lời kết
Hy vọng bài viết trên giúp bạn tạo được SSH key và sử dụng đơn giản. Nếu có thắc mắc hay đóng góp ý kiến, mời bạn để lại bình luận phía dưới bài viết này. Vietnix xin chân thành cảm ơn bạn!
vậy vô hiệu hóa ssh keys sao nhỉ