Xác thực kết nối SSH Keygen bằng Public/Private key có quan trọng hay không? Hãy để Tenten.vn hướng dẫn tạo SSH Key chi tiết và chính xác nhất cho người dùng ngay trong bài viết bên dưới nhé!
💥💥 Tenten.vn là nhà cung cấp tên miền quốc tế có giá cạnh tranh hàng đầu thị trường, chỉ từ 99k cho tên miền .net 💥💥
|
Tóm tắt nhanh: SSH Keygen là phương thức xác thực SSH bằng Public Key / Private Key, an toàn hơn đăng nhập bằng mật khẩu. Public Key lưu trên server, Private Key lưu trên máy người dùng và phải được bảo mật tuyệt đối. Xác thực bằng SSH Key giúp đăng nhập nhanh, giảm nguy cơ brute-force, phù hợp cho môi trường server và DevOps. Có thể tạo SSH Key dễ dàng bằng lệnh ssh-keygen, hỗ trợ trên Linux, macOS và Windows. Ed25519 cho hiệu năng và bảo mật tốt hơn, trong khi RSA vẫn phổ biến nhờ khả năng tương thích cao. SSH Key được sử dụng rộng rãi khi làm việc với server, GitHub/GitLab, CI/CD và quản trị hệ thống từ xa. |
Contents

SSH Keygen là gì?
SSH Keygen là một cặp key gồm Public Key (khóa công khai) và Private Key (khóa cá nhân) được sử dụng để xác thực người dùng khi truy cập vào một máy chủ thông qua giao thức SSH.
Nếu như Public Key được chia sẻ và lưu trữ trên máy chủ, thì Private Key được bảo mật trên máy tính của người dùng để đảm bảo tính bảo mật trong quá trình truy cập vào máy chủ.
Khi sử dụng SSH Keygen, người dùng không cần phải nhập mật khẩu mỗi khi đăng nhập và đảm bảo tính bảo mật cao hơn so với phương thức đăng nhập bằng mật khẩu thông thường.
Cơ chế xác thực bằng SSH Keygen là một phương thức xác thực trong giao thức SSH. Nó hoạt động bằng cách sử dụng cặp Public Key và Private Key để xác nhận người dùng khi truy cập vào máy chủ SSH.

Bạn có thể tạo SSH key (Public/Private) vô cùng đơn giản bằng các bước sau:
Bước 1: Mở Terminal:

Bấm tổ hợp phím `Ctrl + Alt + T` trên Ubuntu hoặc tìm Terminal trên hệ điều hành Linux khác.
Bước 2: Tạo SSH Keygen
Người dùng trên máy tính sử dụng lệnh sau:
ssh-keygen -t rsa
Nếu bạn muốn chỉ định đường dẫn cho file SSH key thì thay thế “id_rsa” trong lệnh bằng đường dẫn tuyệt đối đến file.
Bước 3: Nhập tên file
Bạn cần đặt tên file cho SSH Keygen khi được yêu cầu.
Bước 4: Nhập passphrase
Sau khi đặt tên xong, hãy đặt (mật khẩu) cho tệp khi được yêu cầu. Thường mục này là không bắt buộc, bạn có thể để trống nếu muốn.
Bước 5: Phân phối public key – SSH Keygen
Tiếp theo, bạn cần phân phối các khóa công khai đã tạo đến máy chủ SSH. Điều này có thể được thực hiện bằng cách thêm nội dung của file public key vào file ‘authorized_keys’ trên máy chủ SSH của bạn.
Bước 6: Hoàn tất
Kết nối vào máy chủ SSH Keygen sử dụng private key (khóa cá nhân):
ssh username@remote_host -i /path/to/private_key
Lưu ý khi sử dụng Server Windows (hoặc Windows Desktop), cách phát sinh SSH Keygen giống như trên Linux và các file kết quả sẽ được lưu tại đường dẫn %homepath%.ssh, trong đó %homepath% là thư mục gốc của người dùng.
Ví dụ, nếu bạn đang đăng nhập với tên người dùng là Administrator thì %homepath% sẽ là C:\Users\Administrator.
Để xác thực bằng SSH Key, bạn có thể làm theo các bước sau:

Để cấu hình Public key cho SSH Server, bạn có thể thực hiện theo các bước sau:

Như vậy, sau khi hoàn thành các bước trên, bạn có thể sử dụng Private Key để kết nối đến máy chủ SSH.

Để cấu hình Private key cho SSH Client, bạn có thể làm theo các bước sau:
Lưu ý nếu như bạn không có kiến thức chuyên môn hoặc đã thử mà không thành công thì hãy liên hệ với những kỹ thuật viên, chuyên gia để được hỗ trợ nhanh nhất!
Ed25519 và RSA là 2 cách phổ biến để tạo SSH Key. Tuy nhiên, 2 cách này có sự khác nhau nhất định giữa thuật toán và cùng tìm hiểu ưu và nhược điểm của từng cách nhé.
| Tiêu chí | RSA | Ed25519 |
| Nền tảng bảo mật | Phân tích thừa số số nguyên (Integer factorization) | Mật mã đường cong elliptic (ECC) |
| Kích thước Key | 2048-4096 bit | 256 bit |
| Kích thước Sign | ~256 bytes | 64 bytes |
| Tốc độ ký (Signing) | Chậm hơn | Nhanh hơn, nhưng không thể thấy rõ |
| Tốc độ xác minh | Nhanh | Rất nhanh |
| Hiệu năng | Tốn CPU, đặc biệt khi dùng key lớn | Hiệu năng cao do nhẹ |
| Tốc độ tạo key | Chậm hơn | Nhanh |
| Độ đơn giản trong mã | Phức tạp hơn | Đơn giản |
| Hỗ trợ, tương thích | Rất phổ biến | Hỗ trợ trên các hệ thống hiện đại (OpenSSH ≥ 6.5) |
| Trường hợp sử dụng phù hợp | TLS/SSL, mã hóa email (PGP), SSH | SSH keys, ký mã (code signing), giao thức crypto hiện đại |
| Tương thích ngược | Rất tốt (kê cả hệ thống cũ) | Cần hệ thống hiện đại |
| Chữ ký xác định | Không | Có |
| Thư viện hỗ trợ | Có trong OpenSSL, BouncyCastle,… | Tích hợp trong các thư viện hiện đại như libsodium |
Xét về mức độ bảo mật, thì cả Ed22519 và RSA đều rất an toàn và khó có thể bị bẻ cong. Về hiệu năng, Ed25519 vượt trội hơn RSA về tốc độ đăng nhập SSH nhờ quá trình ký và xác minh nhanh, ít tiêu tốn CPU, phù hợp cho server nhiều kết nối SSH.

Vậy tại sao RSA vẫn là phương thức xác thực phổ biến? Bởi thuật toán này tương thích rất tốt với hệ thống cũ, hỗ trợ rộng rãi trong nhiều ứng dụng. Tổng kết lại, nếu bạn sử dụng hệ thống hiện đại, có thể ưu tiên dùng Ed22519 vì nó nhanh hơn và nhẹ hơn.
Ngoài Terminal, Tenten.vn sẽ giới thiệu với các bạn các phần mềm có thể tạo SSH Key.
Git là hệ thống quản lý phiên bản phân tán, cho phép kết nối và xác thực qua SSH khi làm việc với các kho mã nguồn từ xa.

Khi thiết lập SSH, bạn tạo cặp khóa SSH (public/private) trên máy rồi thêm khóa công khai vào tài khoản để xác thực mỗi lần bạn tương tác với repo mà không cần gõ mật khẩu.
Việc hỗ trợ SSH phương thức giao tiếp này an toàn với server mà không cần phụ thuộc vào mật khẩu.
PuTTY là phần mềm SSH miễn phí, thường được dùng trên Windows để đăng nhập và quản trị máy chủ từ xa thông qua giao thức bảo mật. Công cụ này có giao diện đơn giản, dễ cấu hình, phù hợp cả với người mới lẫn người quản trị hệ thống lâu năm.

PuTTY hỗ trợ SSH, Telnet và Serial, nhưng SSH vẫn là lựa chọn phổ biến nhất nhờ tính an toàn cao. Nhờ dung lượng nhẹ và độ ổn định tốt, PuTTY hiện tại là công cụ phổ biến trong môi trường server.
OpenSSH là bộ công cụ mã nguồn mở, được sử dụng rộng rãi để đăng nhập và quản trị hệ thống qua SSH một cách an toàn. Phần mềm này thường được tích hợp sẵn trên Linux và macOS, đồng thời cũng hỗ trợ tốt trên Windows.

OpenSSH nổi bật nhờ độ ổn định cao, khả năng mã hóa mạnh và phù hợp với môi trường server chuyên nghiệp. Với tính chuẩn hóa, công cụ này gần như trở thành lựa chọn mặc định trong các hệ thống quản trị từ xa với hệ điều hành Linux.
Termius là phần mềm SSH hiện đại, hỗ trợ đăng nhập máy chủ từ xa trên 4 nền tảng chính gồm Windows, macOS, Linux và thiết bị di động. Ứng dụng cho phép quản lý hàng chục kết nối SSH trong một giao diện duy nhất, giúp việc vận hành server trở nên gọn gàng và dễ theo dõi.

Hiện tại, phần mềm hỗ trợ xác thực bằng khóa SSH 2048-bit và 4096-bit, đáp ứng tốt yêu cầu bảo mật trong môi trường chuyên nghiệp
Bitvise SSH Client là phần mềm SSH dành cho Windows, miễn phí cho cả cá nhân và doanh nghiệp, cho phép dùng thử tối đa 30 ngày. Phần mềm hoạt động như một trình mô phỏng terminal hiện đại, kết hợp giao diện đồ họa (GUI) và dòng lệnh để dễ dàng quản lý kết nối.

Bitvise hỗ trợ đầy đủ các giao thức SSH, SFTP, SCP và tunneling, đáp ứng tốt nhu cầu quản trị và truyền dữ liệu an toàn. Bên cạnh đó, Bitvise cũng hỗ trợ các tác vụ phổ biến khác như chuyển tiếp Máy tính từ xa vào GUI để hợp lý hóa quá trình kết nối.
MobaXterm là một SSH client toàn diện chạy trên Windows, kết hợp nhiều công cụ quản trị từ xa trong một gói duy nhất thay vì chỉ một terminal đơn thuần. Phần mềm này hỗ trợ SSH, SFTP, RDP, VNC, Telnet và X11-forwarding, kèm theo máy chủ X tích hợp để hiển thị ứng dụng Unix/Linux trực tiếp lên Windows mà không cần cài đặt thêm.

Bản miễn phí ứng dụng cho phép bạn lưu tối đa 12 phiên, 4 macro và 2 đường hầm SSH, trong khi phiên bản Professional mở rộng gần như không giới hạn và cho phép tùy chỉnh sâu hơn giao diện lẫn cấu hình kết nối.
MobaXterm sở hữu giao diện theo thẻ tab, có thể mở nhiều kết nối cùng lúc và trình quản lý file SFTP kéo-thả tích hợp làm việc với file từ xa rất tiện.
SecureCRT là SSH client chuyên nghiệp hỗ trợ trên các nền tàng Windows, macOS và Linux được nhiều kỹ thuật viên IT tin dùng. Nó không chỉ hỗ trợ kết nối SSH mà còn Telnet, Rlogin và các chuẩn terminal như VT100, ANSI hay Xterm, giúp bạn làm việc với nhiều loại hệ thống khác nhau từ một ứng dụng duy nhất.

Phần mềm còn tích hợp tình năng scripting với Python và nhiều ngôn ngữ khác, giúp tự động hóa các tác vụ lặp lại trong quá trình quản trị server. Bên cạnh đó, SecureCRT có thể làm việc cùng SecureFX để truyền file an toàn qua SFTP, FTP/SSL hoặc SCP mà không phải nhập lại thông tin đăng nhập nhiều lần.
Mặc dù đây là sản phẩm thương mại, bạn vẫn có thể tải và dùng thử đầy đủ tính năng trong 30 ngày miễn phí trước khi quyết định mua bản quyền.
Dưới đây là tổng hợp một số lỗi phổi biến khi đăng nhập SSH.

Một số vấn đề lỗi có thể do cấu hình Firewall. Nếu firewall được thiết lập để chặn một số cổng hoặc dịch vụ nhất định, nó có thể ngăn bạn kết nối.
Trong trường hợp bạn đã thêm quy tắc firewall cho phép máy của bạn kết nối theo địa chỉ IP, hãy xác nhận rằng IP do nhà cung cấp dịch vụ Internet (ISP) cấp chưa thay đổi. Nếu IP thay đổi, bạn cần chỉnh sửa quy tắc firewall để cho phép IP mới hoặc dải địa chỉ mới.
Để kiểm tra quy tắc firewall, bạn sử dụng lệnh sau:
Ubuntu thường dùng UFW với lệnh: ufw status
CentOS thường dùng FirewallD: firewall-cmd –list-services
Còn lại sử dụng iptables với lệnh: iptables -nL

Lỗi này có nghĩa là SSH key bạn đang dùng để push được gắn với một tài khoản không có quyền truy cập vào repository.
Để khắc phục, repository cần thêm tài khoản của bạn (other-user) làm collaborator cho repository, hoặc thêm bạn vào một team có quyền ghi đối với repository đó.

Lỗi này xảy ra khi bạn cố gắng thêm một SSH key đã được gắn vào tài khoản hoặc repository khác trên Github.
Để xác định key đang được dùng ở đâu, mở terminal và chạy lệnh SSH. Dùng tham số -i để chỉ định đường dẫn tới key cần kiểm tra:
ssh -T -ai ~/.ssh/id_rsa git@github.com
# Kết nối tới GitHub.com bằng SSH key cụ thể
Hi USERNAME! You’ve successfully authenticated, but GitHub does not provide shell access.
Trong trường hợp bạn muốn SSH chỉ sử dụng key bạn truyền trên dòng lệnh, dùng tùy chọn -o IdentitiesOnly=yes:
ssh -v -o “IdentitiesOnly=yes” -i ~/.ssh/id_rsa git@github.com

Lỗi này xuất hiện khi máy chủ mà bạn đang kết nối cung cấp một host key không trùng khớp với khóa đã được SSH ghi nhận trước đây.
Nguyên nhân do máy chủ thay đổi SSH key đột ngột. Trong trường hợp này, thường sẽ có thông báo chính thức từ nguồn đáng tin cậy xác nhận việc thay đổi.
Nếu sử dụng GitHub thay đổi SSH host key, thông tin sẽ được công bố trên GitHub Blog. Nếu bạn muốn kết nối SSH diễn ra bình thường , bạn thêm các SSH key này vào file known_hosts
Khi kết nối SSH tới dịch vụ fortrabbit lần đầu, hệ thống sẽ hiển thị một cảnh báo cho biết bạn đang truy cập vào một SSH server mới. Lúc này, chỉ cần nhập yes để xác nhận, fingerprint của dịch vụ deploy fortrabbit sẽ được lưu lại trong file ~/.ssh/known_hosts.

Trong trường hợp fingerprint này bị thay đổi ở những lần kết nối sau, SSH sẽ báo lỗi để cảnh báo rủi ro, và bạn cần kiểm tra rồi xử lý tiếp tùy theo từng tình huống cụ thể.
Thông báo cảnh báo thường có dạng:
The authenticity of host ‘…’ can’t be established
RSA key fingerprint is …
Are you sure you want to continue connecting (yes/no)?
Với một số môi trường đặc thù, bạn có thể phải tự cấu hình hoặc chỉ rõ đường dẫn tới file known_hosts để quá trình kết nối diễn ra bình thường.
Trên đây là hướng dẫn chi tiết cho người dùng tạo SSH Keygen và xác thực kết nối SSH bằng Public/Private key nhanh chóng và đầy đủ nhất. Chúc bạn thao tác thành công!
DỊCH VỤ CLOUD SERVER TỐC ĐỘ XỬ LÝ VƯỢT TRỘI
Các tìm kiếm liên quan đến chủ đề “SSH Keygen”
| SSH key GitHub | Generate private key from public key | Copy SSH key | SSH key GitLab |
| Copy SSH key Windows 10 | SSH key generate | Get SSH key | Generate SSH key Windows |
MySQL là gì? Ưu điểm và nhược điểm của MySQL nổi bật
NAT là gì? Các loại NAT phổ biến ngày nay?