Hôm nay, chúng ta sẽ cùng đi sâu vào một trong những giao thức nền tảng và quan trọng nhất trong việc quản lý máy chủ: SSH (Secure Shell). Nếu bạn thường xuyên làm việc với các máy chủ Linux, chắc hẳn bạn đã quá quen thuộc với việc dành phần lớn thời gian trong một phiên terminal được kết nối đến máy chủ qua SSH. Đây là xương sống của mọi hoạt động quản trị từ xa, từ việc triển khai ứng dụng cho đến khắc phục sự cố.
Mặc dù có một vài cách khác nhau để đăng nhập vào một máy chủ SSH, trong bài viết này, chúng ta sẽ tập trung vào việc thiết lập SSH keys. SSH keys cung cấp một phương pháp cực kỳ bảo mật để đăng nhập vào máy chủ của bạn. Vì lý do này, đây là phương pháp mà chúng tôi khuyến nghị cho tất cả người dùng, từ những người mới bắt đầu đến các chuyên gia lão luyện.
SSH Keys hoạt động như thế nào?
Một máy chủ SSH có thể xác thực các client sử dụng nhiều phương pháp khác nhau. Cơ bản nhất trong số đó là xác thực bằng mật khẩu (password authentication), phương pháp này dễ sử dụng nhưng không phải là an toàn nhất.
Mặc dù mật khẩu được gửi đến máy chủ một cách an toàn, nhưng chúng thường không đủ phức tạp hoặc đủ dài để chống lại các cuộc tấn công dai dẳng. Với việc sức mạnh xử lý hiện tại tăng lên đang kể kết hợp với các script tự động khiến việc brute-force một tài khoản được bảo vệ bằng mật khẩu trở nên rất khả thi. Mặc dù có các phương pháp khác để tăng cường bảo mật (như fail2ban
) nhưng SSH keys vẫn là một giải pháp thay thế đáng tin cậy và an toàn hơn hẳn.
Các cặp khóa SSH (SSH key pairs) là hai khóa an toàn về mặt mật mã có thể được sử dụng để xác thực một client với một máy chủ SSH. Mỗi cặp khóa gồm một khóa công khai (public key) và một khóa riêng tư (private key).
- Khóa riêng tư (private key) được giữ bởi client và phải được giữ bí mật tuyệt đối. Bất kỳ sự rò rỉ nào của khóa riêng tư sẽ cho phép kẻ tấn công đăng nhập vào các máy chủ được cấu hình với khóa công khai liên quan mà không cần xác thực bổ sung. Để tăng cường bảo mật cho khóa này có thể thực hiện mã hóa bằng mật khẩu (passphrase).
- Khóa công khai (public key) có thể được chia sẻ tự do mà không gây ra hậu quả tiêu cực nào. Khóa công khai có thể được sử dụng để mã hóa các tin nhắn mà chỉ khóa riêng tư mới có thể giải mã.
Khóa công khai được tải lên máy chủ từ xa mà bạn muốn đăng nhập bằng SSH. Khóa này được thêm vào một tệp đặc biệt trong tài khoản người dùng bạn sẽ đăng nhập có tên là ~/.ssh/authorized_keys
.
Khi một client cố gắng xác thực bằng SSH keys, máy chủ có thể kiểm tra xem client có sở hữu khóa riêng tư hay không. Nếu client có thể chứng minh rằng nó sở hữu khóa riêng tư, một phiên shell sẽ được tạo hoặc lệnh yêu cầu sẽ được thực thi.
Bước 1: Tạo SSH Keys
Bước đầu tiên để cấu hình xác thực SSH key cho máy chủ của bạn là tạo một cặp khóa SSH trên máy tính cục bộ của bạn.
Để làm điều này, chúng ta có thể sử dụng một tiện ích đặc biệt có tên ssh-keygen
,có trong bộ công cụ OpenSSH tiêu chuẩn. Mặc định, lệnh này sẽ tạo một cặp khóa RSA 3072-bit.
Trên máy tính cục bộ của bạn, hãy tạo một cặp khóa SSH bằng cách gõ:
ssh-keygen
Bạn sẽ thấy một đầu ra tương tự như sau:
OutputGenerating public/private rsa key pair.
Enter file in which to save the key (/home/username/.ssh/id_rsa):
Tiện ích sẽ nhắc bạn chọn một vị trí để lưu trữ các khóa sẽ được tạo. Mặc định, các khóa sẽ được lưu trữ trong thư mục ~/.ssh
trong thư mục chính của người dùng của bạn. Khóa riêng tư sẽ có tên là id_rsa
và khóa công khai liên quan sẽ có tên là id_rsa.pub
.
Thường thì, tốt nhất là giữ nguyên vị trí mặc định ở bước này. Làm như vậy sẽ cho phép client SSH của bạn tự động tìm thấy SSH keys khi cố gắng xác thực. Nếu bạn muốn chọn một đường dẫn không tiêu chuẩn, hãy nhập nó ngay bây giờ, nếu không, hãy nhấn ENTER
để chấp nhận mặc định.
Nếu bạn đã tạo một cặp khóa SSH trước đó, bạn có thể thấy một lời nhắc như thế này:
Output/home/username/.ssh/id_rsa already exists.
Overwrite (y/n)?
Nếu bạn chọn ghi đè khóa trên đĩa, bạn sẽ không thể xác thực bằng khóa trước đó nữa. Hãy rất cẩn thận khi chọn yes
, vì đây là một quá trình phá hủy và không thể hoàn tác.
OutputCreated directory '/home/username/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Tiếp theo, bạn sẽ được nhắc nhập một passphrase cho khóa. Đây là một passphrase tùy chọn có thể được sử dụng để mã hóa tệp khóa riêng tư trên đĩa.
Việc bạn nhập một passphrase. sẽ mạng lại một số lợi ích sau:
- Khóa SSH riêng tư (phần có thể được bảo vệ bằng passphrase) không bao giờ bị lộ trên mạng. Passphrase chỉ được sử dụng để giải mã khóa trên máy cục bộ. Điều này có nghĩa là tấn công brute-force dựa trên mạng sẽ không thể thực hiện được đối với passphrase.
- Khóa riêng tư được giữ trong một thư mục bị hạn chế. Client SSH sẽ không nhận diện các khóa riêng tư không được giữ trong các thư mục bị hạn chế. Bản thân khóa cũng phải có quyền hạn chế (chỉ đọc và ghi cho chủ sở hữu). Điều này có nghĩa là người dùng khác trên hệ thống không thể xem trộm.
- Bất kỳ kẻ tấn công nào muốn phá khóa SSH riêng tư phải đã có quyền truy cập vào hệ thống. Điều này có nghĩa là họ đã có quyền truy cập vào tài khoản người dùng của bạn hoặc tài khoản root. Nếu bạn ở trong tình huống này, passphrase có thể ngăn kẻ tấn công đăng nhập ngay lập tức vào các máy chủ khác của bạn. Điều này hy vọng sẽ cho bạn thời gian để tạo và triển khai một cặp khóa SSH mới và loại bỏ quyền truy cập từ khóa đã bị xâm phạm.
Vì khóa riêng tư không bao giờ bị lộ ra mạng và được bảo vệ thông qua các quyền tệp, tệp này không bao giờ được phép truy cập bởi bất kỳ ai ngoài bạn (và người dùng root
). Passphrase đóng vai trò là một lớp bảo vệ bổ sung trong trường hợp các điều kiện này bị xâm phạm.
Passphrase là một bổ sung tùy chọn. Nếu bạn nhập một passphrase, bạn sẽ phải cung cấp nó mỗi khi sử dụng khóa này (trừ khi bạn đang chạy phần mềm SSH agent lưu trữ khóa để giải mã). Chúng tôi khuyến nghị sử dụng passphrase, nhưng nếu bạn không muốn đặt passphrase, bạn có thể nhấn ENTER
để bỏ qua lời nhắc này.
OutputYour identification has been saved in /home/username/.ssh/id_rsa.
Your public key has been saved in /home/username/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:CAjsV9M/tt5skazroTc1ZRGCBz+kGtYUIPhRvvZJYBs username@hostname
The key's randomart image is:
+---[RSA 3072]----+
|o ..oo.++o .. |
| o o +o.o.+... |
|. . + oE.o.o . |
| . . oo.B+ .o |
| . .=S.+ + |
| . o..* |
| .+= o |
| .=.+ |
| .oo+ |
+----[SHA256]-----+
Bây giờ bạn đã có một khóa công khai và một khóa riêng tư mà bạn có thể sử dụng để xác thực. Bước tiếp theo là đặt khóa công khai này lên máy chủ của bạn để bạn có thể sử dụng xác thực SSH key để đăng nhập.
Bước 2: Sao chép SSH Public Key vào máy chủ của bạn
Có nhiều cách để tải khóa công khai của bạn lên máy chủ SSH từ xa. Phương pháp bạn sử dụng phụ thuộc phần lớn vào các công cụ bạn có sẵn và chi tiết cấu hình hiện tại của bạn.
Các phương pháp sau đây đều cho cùng một kết quả cuối cùng. Phương pháp đơn giản nhất, tự động nhất được mô tả đầu tiên, và các phương pháp tiếp theo mỗi phương pháp yêu cầu các bước thủ công bổ sung. Bạn chỉ nên làm theo chúng nếu bạn không thể sử dụng các phương pháp trước đó.
Sao chép khóa công khai của bạn bằng ssh-copy-id
Cách đơn giản nhất để sao chép khóa công khai của bạn vào một máy chủ hiện có là sử dụng một tiện ích có tên ssh-copy-id
. Vì sự đơn giản của nó, phương pháp này được khuyến nghị nếu có sẵn.
Công cụ ssh-copy-id
được bao gồm trong các gói OpenSSH ở nhiều bản phân phối, vì vậy bạn có thể đã có nó trên hệ thống cục bộ của mình. Để phương pháp này hoạt động, bạn phải hiện đang có quyền truy cập SSH dựa trên mật khẩu vào máy chủ của mình.
Để sử dụng tiện ích, bạn cần chỉ định host từ xa mà bạn muốn kết nối, và tài khoản người dùng mà bạn có quyền truy cập SSH dựa trên mật khẩu. Đây là tài khoản nơi khóa SSH công khai của bạn sẽ được sao chép.
Cú pháp là:
ssh-copy-id username@remote_host
Bạn có thể thấy một thông báo như thế này:
OutputThe authenticity of host '203.0.113.1 (203.0.113.1)' can't be established.
ECDSA key fingerprint is fd:fd:d4:f9:77:fe:73:84:e1:55:00:ad:d6:6d:22:fe.
Are you sure you want to continue connecting (yes/no)? yes
Điều này có nghĩa là máy tính cục bộ của bạn không nhận diện host từ xa. Điều này sẽ xảy ra lần đầu tiên bạn kết nối với một host mới. Gõ yes
và nhấn ENTER
để tiếp tục.
Tiếp theo, tiện ích sẽ quét tài khoản cục bộ của bạn để tìm khóa id_rsa.pub
mà chúng ta đã tạo trước đó. Khi tìm thấy khóa, nó sẽ nhắc bạn nhập mật khẩu của tài khoản người dùng từ xa:
Output/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
username@203.0.113.1's password:
Nhập mật khẩu (ký tự bạn gõ sẽ không hiển thị vì mục đích bảo mật) và nhấn ENTER
. Tiện ích sẽ kết nối đến tài khoản trên host từ xa bằng mật khẩu bạn đã cung cấp. Sau đó, nó sẽ sao chép nội dung khóa ~/.ssh/id_rsa.pub
của bạn vào một tệp trong thư mục ~/.ssh
của tài khoản từ xa có tên authorized_keys
.
Bạn sẽ thấy đầu ra như thế này:
OutputNumber of key(s) added: 1
Now try logging into the machine, with: "ssh 'username@203.0.113.1'"
and check to make sure that only the key(s) you wanted were added.
Tại thời điểm này, khóa id_rsa.pub
của bạn đã được tải lên tài khoản từ xa. Bạn có thể tiếp tục sang phần tiếp theo.
Sao chép khóa công khai của bạn bằng SSH
Nếu bạn không có ssh-copy-id
nhưng có quyền truy cập SSH dựa trên mật khẩu vào một tài khoản trên máy chủ của bạn, bạn có thể tải khóa của mình lên bằng phương pháp SSH thông thường.
Chúng ta có thể làm điều này bằng cách xuất nội dung khóa SSH công khai trên máy tính cục bộ và chuyển nó qua một kết nối SSH đến máy chủ từ xa. Ở phía bên kia, chúng ta có thể đảm bảo rằng thư mục ~/.ssh
tồn tại trong tài khoản chúng ta đang sử dụng và sau đó xuất nội dung chúng ta đã chuyển qua vào một tệp có tên authorized_keys
trong thư mục này.
Chúng ta sẽ sử dụng ký hiệu chuyển hướng >>
để nối thêm nội dung thay vì ghi đè lên nó. Điều này sẽ cho phép chúng ta thêm khóa mà không phá hủy các khóa đã thêm trước đó.
Lệnh đầy đủ sẽ trông như thế này:
cat ~/.ssh/id_rsa.pub | ssh username@remote_host "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"
Bạn có thể thấy một thông báo như thế này:
OutputThe authenticity of host '203.0.113.1 (203.0.113.1)' can't be established.
ECDSA key fingerprint is fd:fd:d4:f9:77:fe:73:84:e1:55:00:ad:d6:6d:22:fe.
Are you sure you want to continue connecting (yes/no)? yes
Điều này có nghĩa là máy tính cục bộ của bạn không nhận diện host từ xa. Điều này sẽ xảy ra lần đầu tiên bạn kết nối với một host mới. Gõ yes
và nhấn ENTER
để tiếp tục.
Sau đó, bạn sẽ được nhắc nhập mật khẩu của tài khoản bạn đang cố gắng kết nối:
Outputusername@203.0.113.1's password:
Sau khi nhập mật khẩu, nội dung khóa id_rsa.pub
của bạn sẽ được sao chép vào cuối tệp authorized_keys
của tài khoản người dùng từ xa. Tiếp tục sang phần tiếp theo nếu điều này thành công.
Sao chép khóa công khai của bạn thủ công
Nếu bạn không có quyền truy cập SSH dựa trên mật khẩu vào máy chủ của mình, bạn sẽ phải thực hiện quy trình trên theo cách thủ công.
Nội dung của tệp id_rsa.pub
của bạn sẽ phải được thêm vào một tệp tại ~/.ssh/authorized_keys
trên máy từ xa của bạn bằng cách nào đó.
Để hiển thị nội dung khóa id_rsa.pub
của bạn, hãy gõ lệnh này vào máy tính cục bộ của bạn:
cat ~/.ssh/id_rsa.pub
Bạn sẽ thấy nội dung của khóa, có thể trông giống như thế này:
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQCqql6MzstZYh1TmWWv11q5O3pISj2ZFl9HgH1JLknLLx44+tXfJ7mIrKNxOOwxIxvcBF8PXSYvobFYEZjGIVCEAjrUzLiIxbyCoxVyle7Q+bqgZ8SeeM8wzytsY+dVGcBxF6N4JS+zVk5eMcV385gG3Y6ON3EG112n6d+SMXY0OEBIcO6x+PnUSGHrSgpBgX7Ks1r7xqFa7heJLLt2wWwkARptX7udSq05paBhcpB0pHtA1Rfz3K2B+ZVIpSDfki9UVKzT8JUmwW6NNzSgxUfQHGwnW7kj4jp4AT0VZk3ADw497M2G/12N0PPB5CnhHf7ovgy6nL1ikrygTKRFmNZISvAcywB9GVqNAVE+ZHDSCuURNsAInVzgYo9xgJDW8wUw2o8U77+xiFxgI5QSZX3Iq7YLMgeksaO4rBJEa54k8m5wEiEE1nUhLuJ0X/vh2xPff6SQ1BL/zkOhvJCACK6Vb15mDOeCSq54Cr7kvS46itMosi/uS66+PujOO+xt/2FWYepz6ZlN70bRly57Q06J+ZJoc9FfBCbCyYH7U/ASsmY095ywPsBo1XQ9PqhnN1/YOorJ068foQDNVpm146mUpILVxmq41Cj55YKHEazXGsdBIbXWhcrRf4G2fJLRcGUr9q8/lERo9oxRm5JFX6TCmj6kmiFqv+Ow9gI0x8GvaQ== username@hostname
Truy cập host từ xa của bạn bằng bất kỳ phương pháp nào bạn có sẵn. Đây có thể là một console nền web được cung cấp bởi nhà cung cấp hạ tầng của bạn..
Khi bạn đã có quyền truy cập vào tài khoản của mình trên máy chủ từ xa, bạn nên đảm bảo thư mục ~/.ssh
được tạo. Lệnh này sẽ tạo thư mục nếu cần thiết, hoặc không làm gì nếu nó đã tồn tại:
mkdir -p ~/.ssh
Bây giờ, bạn có thể tạo hoặc sửa đổi tệp authorized_keys
trong thư mục này. Bạn có thể thêm nội dung của tệp id_rsa.pub
vào cuối tệp authorized_keys
, tạo nó nếu cần thiết, bằng cách sử dụng lệnh này:
echo public_key_string >> ~/.ssh/authorized_keys
Trong lệnh trên, hãy thay thế public_key_string
bằng đầu ra từ lệnh cat ~/.ssh/id_rsa.pub
mà bạn đã thực thi trên hệ thống cục bộ của mình. Nó nên bắt đầu bằng ssh-rsa AAAA...
hoặc tương tự.
Nếu điều này hoạt động, bạn có thể chuyển sang kiểm tra xác thực SSH dựa trên khóa mới của mình.
Bước 3: Xác thực vào máy chủ của bạn bằng SSH Keys
Nếu bạn đã hoàn thành thành công một trong các quy trình trên, bạn sẽ có thể đăng nhập vào host từ xa mà không cần mật khẩu của tài khoản từ xa.
Quá trình này hầu hết là giống nhau:
ssh username@remote_host
Nếu đây là lần đầu tiên bạn kết nối với host này (nếu bạn đã sử dụng phương pháp cuối cùng ở trên), bạn có thể thấy một cái gì đó như thế này:
OutputThe authenticity of host '203.0.113.1 (203.0.113.1)' can't be established.
ECDSA key fingerprint is fd:fd:d4:f9:77:fe:73:84:e1:55:00:ad:d6:6d:22:fe.
Are you sure you want to continue connecting (yes/no)? yes
Điều này có nghĩa là máy tính cục bộ của bạn không nhận diện host từ xa. Gõ yes
và sau đó nhấn ENTER
để tiếp tục.
Nếu bạn không cung cấp passphrase cho khóa riêng tư của mình, bạn sẽ được đăng nhập ngay lập tức. Nếu bạn đã cung cấp passphrase cho khóa riêng tư khi tạo khóa, bạn sẽ được yêu cầu nhập nó ngay bây giờ. Sau đó, một phiên shell mới sẽ được tạo cho bạn với tài khoản trên hệ thống từ xa.
Bước 4: Vô hiệu hóa xác thực mật khẩu trên máy chủ của bạn
Nếu bạn đã có thể đăng nhập vào tài khoản của mình bằng SSH mà không cần mật khẩu, bạn đã cấu hình thành công xác thực dựa trên SSH key cho tài khoản của mình. Tuy nhiên, cơ chế xác thực bằng mật khẩu của bạn vẫn đang hoạt động, có nghĩa là máy chủ của bạn vẫn có thể bị tấn công brute-force.
Trước khi hoàn thành các bước trong phần này, hãy đảm bảo rằng bạn đã cấu hình xác thực dựa trên SSH key cho tài khoản root
trên máy chủ này, hoặc tốt hơn nữa, bạn đã cấu hình xác thực dựa trên SSH key cho một tài khoản có quyền sudo
trên máy chủ này. Bước này sẽ khóa các lần đăng nhập dựa trên mật khẩu, vì vậy việc đảm bảo rằng bạn vẫn có thể có quyền truy cập quản trị là điều cần thiết.
Khi các điều kiện trên là đúng, hãy đăng nhập vào máy chủ từ xa của bạn bằng SSH keys, với tư cách root
hoặc với một tài khoản có đặc quyền sudo
. Mở tệp cấu hình của SSH daemon:
sudo nano /etc/ssh/sshd_config
Trong tệp, tìm kiếm một chỉ thị có tên PasswordAuthentication
. Dòng này có thể bị chú thích (commented out). Bỏ chú thích dòng bằng cách xóa bất kỳ ký tự #
nào ở đầu dòng và đặt giá trị thành no
. Điều này sẽ vô hiệu hóa khả năng đăng nhập qua SSH bằng mật khẩu tài khoản:
PasswordAuthentication no
Lưu và đóng tệp khi bạn hoàn thành. Để thực sự triển khai các thay đổi chúng ta vừa thực hiện, bạn phải khởi động lại dịch vụ.
Trên hầu hết các bản phân phối Linux, bạn có thể chạy lệnh sau để làm điều đó:
sudo systemctl restart ssh
Sau khi hoàn thành bước này, bạn đã chuyển đổi thành công SSH daemon của mình chỉ phản hồi với SSH keys.
Sử dụng các Mô-đun bảo mật phần cứng (HSM) để lưu trữ SSH Key
Hardware Security Modules (HSM) cung cấp một lớp bảo mật bổ sung cho SSH keys bằng cách giữ các khóa riêng tư được lưu trữ trong phần cứng chống giả mạo. Thay vì lưu trữ khóa riêng tư trong một tệp, HSM lưu trữ chúng một cách an toàn, ngăn chặn truy cập trái phép.
Cách sử dụng HSM để xác thực SSH?
- Kiểm tra Khả năng Tương thích của HSM: Đảm bảo HSM của bạn hỗ trợ xác thực SSH.
- Sử dụng Mô-đun PKCS#11: Tải HSM với một mô-đun
PKCS#11
tương thích. PKCS#11 là một tiêu chuẩn mật mã định nghĩa API để truy cập các thiết bị mật mã như Hardware Security Modules (HSM), smart cards, và USB security keys. Nó cho phép các ứng dụng, bao gồm SSH, OpenSSL, và GnuPG, sử dụng các thiết bị mật mã để xác thực an toàn. - Tạo một SSH Key trên HSM: Thay vì sử dụng
ssh-keygen
, hãy tạo khóa trực tiếp trên HSM:ssh-keygen -D /usr/lib/opensc-pkcs11.so -s user-hsm-key
- Trích xuất Khóa công khai:
ssh-keygen -D /usr/lib/opensc-pkcs11.so -e > ~/.ssh/id_hsm.pub
Thêm khóa công khai
id_hsm.pub
vào tệpauthorized_keys
trên máy chủ từ xa. - Cấu hình SSH để Sử dụng HSM: Thêm các dòng sau vào tệp cấu hình SSH của bạn
~/.ssh/config
:Host * IdentityAgent /run/user/1000/gnupg/S.gpg-agent.ssh
Bây giờ, SSH sẽ tự động sử dụng khóa được hỗ trợ bởi phần cứng để xác thực.
Lợi ích của việc sử dụng HSMs cho quản lý SSH Key
- Bảo mật nâng cao: Khóa riêng tư không bao giờ rời khỏi phần cứng.
- Bảo vệ khỏi trộm cắp: Ngay cả khi hệ thống bị xâm phạm, khóa vẫn an toàn.
- Tuân thủ: Hữu ích cho việc đáp ứng các yêu cầu tuân thủ bảo mật trong các ngành công nghiệp được quản lý.
Câu hỏi thường gặp (FAQs)
1. Làm cách nào để tạo một SSH key trong Linux?
Để tạo một SSH key trong Linux, sử dụng lệnh ssh-keygen
trong terminal của bạn. Mặc định, lệnh này sẽ tạo một cặp khóa RSA:
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
2. ssh-keygen
trong Linux là gì?
ssh-keygen
là một công cụ dòng lệnh được sử dụng để tạo, quản lý và chuyển đổi SSH keys. Nó cho phép bạn tạo thông tin xác thực an toàn để truy cập từ xa.
3. Làm thế nào để tạo một SSH-2 RSA key trên Linux?
SSH-2
là giao thức tiêu chuẩn hiện tại cho xác thực SSH. Để tạo một SSH-2 RSA key, hãy chạy:
ssh-keygen -t rsa -b 4096
4. Làm thế nào để tạo một SSH key hợp lệ?
Một SSH key hợp lệ nên đáp ứng các tiêu chí này:
- Sử dụng loại khóa mạnh, như RSA (4096-bit) hoặc Ed25519.
- Đảm bảo khóa riêng tư được lưu trữ và bảo vệ an toàn.
- Sử dụng một passphrase để tăng cường bảo mật.
- Tránh sử dụng các thuật toán yếu như DSA.
5. Làm thế nào để tạo một SSH key từ terminal?
Đơn giản chỉ cần chạy:
ssh-keygen
Lệnh này sẽ tạo một cặp khóa công khai và riêng tư, thường được lưu trữ trong ~/.ssh/
.
6. Làm thế nào để tạo một khóa riêng tư?
Lệnh ssh-keygen
tự động tạo một khóa riêng tư. Khóa riêng tư thường được lưu trữ tại:
~/.ssh/id_rsa
hoặc cho các tiêu chuẩn mới hơn:
~/.ssh/id_ed25519
Hãy giữ tệp này an toàn và không chia sẻ nó.
7. Sự khác biệt giữa khóa công khai và khóa riêng tư SSH là gì?
Khóa công khai (public key) là phần bạn có thể chia sẻ công khai và được sử dụng để mã hóa dữ liệu hoặc xác minh chữ ký. Khóa riêng tư (private key) là phần bí mật và được giữ an toàn trên máy của bạn, được sử dụng để giải mã dữ liệu hoặc tạo chữ ký. Chúng hoạt động cùng nhau như một cặp để xác thực.
8. Làm thế nào để vô hiệu hóa xác thực mật khẩu trên một máy chủ Linux?
Để tăng cường bảo mật, hãy vô hiệu hóa xác thực mật khẩu bằng cách chỉnh sửa tệp cấu hình SSH:
sudo nano /etc/ssh/sshd_config
Tìm dòng:
PasswordAuthentication yes
Thay đổi nó thành:
PasswordAuthentication no
Sau đó khởi động lại SSH:
sudo systemctl restart ssh
Kết luận
Bạn giờ đây đã có xác thực dựa trên SSH key được cấu hình và hoạt động trên máy chủ của mình, cho phép bạn đăng nhập mà không cần cung cấp mật khẩu tài khoản. Điều này không chỉ giúp quy trình làm việc của bạn nhanh chóng hơn mà còn tăng cường đáng kể lớp bảo mật cho hệ thống của bạn trước các cuộc tấn công tiềm tàng.
Việc nắm vững cách sử dụng SSH keys là một kỹ năng thiết yếu đối với bất kỳ ai làm việc trong lĩnh vực IT, từ quản trị viên hệ thống, kỹ sư DevOps cho đến các nhà phát triển phần mềm. Kiến thức này sẽ là nền tảng vững chắc để bạn tiếp tục khám phá và triển khai các giải pháp bảo mật phức tạp hơn.