SSH Keys cung cấp một cách an toàn hơn cách đăng nhập vào một máy chủ riêng ảo với SSH vì sử dụng một mật khẩu riêng. Trong khi một mật khẩu cuối cùng có thể bị bẻ khóa với một cuộc tấn công brute force, SSH Keys gần như không thể giải mã bằng brute force riêng. Tạo một cặp khóa cung cấp cho bạn với hai chuỗi dài các ký tự: một khóa công khai và khóa riêng. Bạn có thể đặt khóa công khai trên bất kỳ máy chủ nào và sau đó mở khóa đó bằng cách kết nối nó với một client đã có khóa riêng. Khi cả hai đều khớp, hệ thống sẽ mở mà không cần mật khẩu. Bạn có thể tăng bảo mật hơn bằng cách bảo vệ khóa riêng với một cụm từ mật khẩu.
SSH keys bao gồm hai tập tin dùng để đăng nhập vào server, và còn gọi là SSH key pair:
Sử dụng public key chúng ta sẽ không cần phải nhấn mật khẩu khi đăng nhập vào server thay vào đó chúng ta sẽ chỉ cần phải cung cấp tập tin public key (đã được mã hóa).
Tạo SSH Key Pair
Để tạo SSH key pair trên Linux chúng ta mở cửa sổ dòng lệnh và chạy câu lệnh sau:
ssh-keygen -t rsa
Khi chạy câu lệnh trên máy tính sẽ hỏi bạn vị trí thư mục trên máy và tên tập tin sẽ dùng cho bộ key pair:
Generating public/private rsa key pair.
Enter file in which to save the key (/home/dtu/.ssh/id_rsa):
Nhấn Enter để chọn thư mục và tên mặc định.
Tiếp đó bạn sẽ được yêu cầu nhập mật khẩu passphrase cho public key. Passphrase là một lớp bảo mật nữa có thể được thêm vào cho tập tin public key. Trong trường hợp tập tin này bị đánh cắp cùng thông tin I.P của server và người dùng đăng nhập thì nếu Passphrase được cài đặt, người lấy được public key này sẽ phải nhập passphrase mới có thể đăng nhập được vào server.
Enter passphrase (empty for no passphrase):
Bạn có thể chọn hoặc bỏ qua passphrase và nhấn Enter.
Kết quả như sau:
ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/dtu/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/dtu/.ssh/id_rsa.
Your public key has been saved in /home/dtu/.ssh/id_rsa.pub.
The key fingerprint is:
4a:dd:0a:c6:35:4e:3f:ed:27:38:8c:74:44:4d:93:67 dtu@a
The key's randomart image is:
+--[ RSA 2048]----+
| .oo. |
| . o.E |
| + . o |
| . = = . |
| = S = . |
| o + = + |
| . o + o . |
| . o |
| |
+-----------------+
Dòng thông báo trên cho biết hai tập tin private key và public key đã được tạo ra với tên lần lượt là id_rsa và id_rsa.pub và được lưu trong thư mục /home/dtu/.ssh/id_rsa.pub.
Thêm Public Key Vào Server
Thêm nội dung trong tập tin public key vào server. Tập tin trên server được dùng để chứa thông tin public key của client là ~/.ssh/authorized_keys.
Trên cửa sổ dòng lệnh bạn nhấn câu lệnh sau (thay user và 172.16.1.26 bằng tên username và địa chỉ IP của server bạn muốn đăng nhập):
cat ~/.ssh/id_rsa.pub | ssh dtu@172.16.1.26 "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"
Nếu không có lỗi, bạn sẽ thấy tương tự như sau:
The authenticity of host '172.16.1.26 (172.16.1.26)' 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 '172.16.1.26' (RSA) to the list of known hosts.
user@172.16.1.26's password:
Now try logging into the machine, with "ssh 'user@172.16.1.26'", and check in:
~/.ssh/authorized_keys
to make sure we haven't added extra keys that you weren't expecting.
Ở câu lệnh trên bạn sẽ được yêu cầu nhập mật khẩu đăng nhập vào server cho người dùng user.
Đăng Nhập Vào Server Dùng Public Key
Bây giờ bạn có thể đăng nhập vào dtu@172.16.1.26 và sẽ không được nhắc mật khẩu. Tuy nhiên, nếu bạn thiết lập một mật khẩu, bạn sẽ được yêu cầu nhập cụm từ mật khẩu tại thời điểm đó và những lần đăng nhập sau này).
ssh -i ~/.ssh/id_rsa.pub dtu@172.16.1.26
Nếu sử dụng passphrase cho public key ở bước tạo SSH keys bạn sẽ được yêu cầu nhập pass này:
Enter passphrase for key '/home/dtu/.ssh/id_rsa':
Tùy chọn vô hiệu hóa các mật khẩu cho Root Đăng nhập
Một khi bạn đã sao chép SSH Keys vào máy chủ của bạn và đảm bảo rằng bạn có thể đăng nhập bằng SSH Keys riêng, bạn có thể vào trước và hạn chế đăng nhập root chỉ được phép thông qua SSH Keys.
Tiến hành mở file cấu hình SSH
nano /etc/ssh/sshd_config
Trong tập tin này, tìm đến dòng PermitRootLogin và sửa đổi để đảm bảo rằng người dùng chỉ có thể kết nối với SSH Keys
PermitRootLogin without-password
Chạy lệnh sau để áp dụng thay đổi:
reload ssh
» Tin mới nhất:
» Các tin khác: