03/12/2025
Chia sẻ
53835 lượt xem

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 💥💥

Đăng ký ngay

 

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.

SSH Keygen là gì?

ssh keygen

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

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. 

  • Public Key là khóa chung, là một file văn bản – nó được lưu trữ ở phía máy chủ SSH và được sử dụng để kiểm tra sự phù hợp giữa Private Key (file lưu trên máy khách) và Public Key này khi khách hàng gửi Private Key lên để xác thực kết nối 
  • Private Key là khóa riêng, là một file văn bản, chứa mã riêng để xác thực. Khi kết nối SSH, máy khách phải chỉ định rõ file này thay vì nhập mật khẩu để đảm bảo tính bảo mật. Vì vậy, nên lưu trữ file Private Key cẩn thận vì bất kỳ ai có file này đều có thể truy cập vào máy chủ của bạn.

ssh keygen

Hướng dẫn tạo SSH Key (Public/Private)

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:

ssh keygen

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.

Hướng dẫn xác thực bằng SSH Key

Để xác thực bằng SSH Key, bạn có thể làm theo các bước sau:

ssh keygen

  • Bước 1: Tạo cặp SSH Keygen (Public và Private Key) trên máy tính của bạn.
  • Bước 2: Phân phối Public Key lên máy chủ SSH 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. 
  • Bước 3: Sử dụng Private Key để kết nối đến máy chủ SSH bằng lệnh sau trong Terminal: ssh -i /path/to/private_key user@remote_host

Hướng dẫn cấu hình Public SSH Keygen

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

ssh keygen

  • Bước 1: Tạo cặp SSH Key (Public và Private Key) trên máy tính của bạn.
  • Bước 2: Sao chép nội dung của file Public Key vào file ‘authorized_keys’ trên máy chủ SSH. Bạn có thể sử dụng lệnh sau để sao chép Public Key lên máy chủ: ssh-copy-id user@remote_host
  • Bước 3: Cấp quyền SSH Keygen truy cập cho file ‘authorized_keys’ với lệnh: chmod 700 ~/.ssh và chmod 600 ~/.ssh/authorized_keys
  • Bước 4: Khởi động lại dịch vụ SSH trên máy chủ bằng lệnh: sudo service ssh restart

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.

Hướng dẫn cấu hình Private key cho SSH Client

ssh keygen

Để cấu hình Private key cho SSH Client, bạn có thể làm theo các bước sau:

  • Bước 1: Tạo cặp SSH Keygen (Public và Private Key) trên máy tính của bạn. 
  • Bước 2: Lưu Private Key vào thư mục ~/.ssh trên máy tính của bạn. 
  • Bước 3: Sử dụng lệnh sau để thêm Private Key vào SSH Agent:  ssh-add ~/.ssh/private_key
  • Bước 4: Tạo kết nối SSH bằng lệnh sau:  ssh -i ~/.ssh/private_key user@remote_host

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!

So sánh Ed25519 và RSA

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
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.

ssh keygen

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.

7 phần mềm SSH có thể sử dụng

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/Github/GitLab

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.

ssh keygen

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

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.

ssh keygen

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

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.

ssh keygen

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

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.

ssh keygen

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

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.

ssh keygen

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

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.

ssh keygen

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

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.

ssh keygen

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.

Tổng hợp troubleshooting SSH phổ biến

Dưới đây là tổng hợp một số lỗi phổi biến khi đăng nhập SSH.

Checking Your Firewall

ssh keygen

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

Permission to user/repo denied to other-user

ssh keygen

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 đó.

Error: Key already in use

ssh keygen

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

Host key verification failed

ssh keygen

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

Host authenticity warning

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.

ssh keygen

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.

Kết luận

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

ssh keygen

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

Bài liên quan

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?

So sánh Linux Server vs Windows Server

RAID là gì? Các loại RAID và cách triển khai