» » Hướng dẫn tạo SSH key bằng PuTTYgen và OpenSSH

Hướng dẫn tạo SSH key bằng PuTTYgen và OpenSSH

SSH key là gì? SSH key là một cách để xác thực với một máy chủ SSH mà không cần mật khẩu. Bài viết này sẽ hướng dẫn bạn tạo SSH key bằng PuTTYgen và OpenSSH.

SSH key bao gồm một cặp khóa công khai (public key) và khóa riêng tư (private key) và nó sử dụng giao thức xác thực challenge-response mà trong đó một bên trình bày một câu hỏi (“challenge”) và một bên khác phải cung cấp một câu trả lời hợp lệ (“response”) được chứng thực.

Ưu điểm của việc sử dụng SSH key là không cần phải nhập mật khẩu cho mỗi lần xác thực và bạn cũng không phải gửi mật khẩu qua mạng. Sử dụng SSH key là bảo mật hơn so với mật khẩu, vì nó khó khăn hơn để đoán hoặc đánh cắp.

Một số nhà cung cấp VPS như Runabove, họ yêu cầu bạn sử dụng SSH key thay thế mật khẩu. DigitalOcean cũng yêu cầu bạn sử dụng SSH key cho FreeBSD và CoreOS.

  1. Tạo SSH key bằng PuTTYgen
  2. Tạo SSH key bằng OpenSSH
  3. Thêm SSH key vào máy chủ
  4. Kết nối SSH bằng key

Tạo SSH key bằng PuTTYgen

Nếu bạn đang sử dụng PuTTY để kết nối SSH thì bạn nên tạo SSH key bằng PuTTYgen là thích hợp nhất. PuTTYgen cũng là phần mềm đơn giản và nhanh nhất để tạo SSH key trên Windows.

  1. Tải PuTTYgen và chạy chương trình.
  2. Nhấn vào nút Generate để tạo mới một cặp khóa công khai và khóa riêng tư. Nếu bạn đã có một khóa riêng tư, bạn có thể nhấn Load để mở nó và xem hoặc lưu khóa công khai. Di chuyển trỏ chuột vào vùng trắng như hình dưới để tạo khóa.
    hướng dẫn tạo SSH key
  3. Bạn có thể thay đổi Key comment để dễ phân biệt và dễ nhớ nếu như bạn có nhiều key.
    Nhập mật khẩu cho Key passphrase Confirm passphrase nếu như bạn muốn sử dụng mật khẩu cho khóa riêng tư. Bất cứ ai không có passphrase cũng sẽ không bao giờ có thể sử dụng được khóa riêng tư.
    tạo SSH key bằng PuTTYgen
  4. Nhấn Save public key để lưu khóa công khai của bạn, hoặc bạn có thể copy nội dung khóa công khai mà không cần lưu file này. Nhấn Save private key để lưu khóa riêng tư.
    Chú ý: trước khi lưu khóa, bạn có thể chọn tiêu chuẩn RSA hoặc DSA hoặc một loại khác phù hợp với máy chủ SSH của bạn. Bạn cũng có thể tăng cấp độ mã hóa bằng cách thay đổi số bit từ 2048 thành 4096. Nên để mặc định.

Như vậy là bạn đã có cặp khóa công khai (public key) và khóa riêng tư (private key). Nếu như bạn không muốn sử dụng PuTTYgen, bạn có thể sử dụng OpenSSH để tạo khóa.

Tạo SSH key bằng OpenSSH

Nếu bạn đang sử dụng hệ điều hành Linux như Ubuntu hoặc CentOS, bạn có thể dễ dàng tạo SSH key chỉ với một dòng lệnh.

Để tạo SSH key, sử dụng lệnh sau:

ssh-keygen

Mặc định thì hệ thống sẽ tạo SSH key loại RSA với số bit mã hóa là 2048. Bạn có thể gán thêm một số tùy chọn như sau:

  • -t: khai báo loại key mà bạn muốn tạo, có thể là rsa, dsa, ecdsa và ed25519.
  • -b: đây là số bit mã hóa của khóa
    • RSA: tối thiểu là 1024 và tối đa là 16384 bits.
    • DSA: 1024 bits.
    • ECDSA: 256, 384 hoặc 521 bits.
    • Ed25519: 256 bits.
  • -C: comment cho khóa, về mục đích sử dụng của khóa, hoặc một nội dung gì đó.

Ví dụ, mình muốn tạo SSH key loại RSA 4096 bits, sử dụng lệnh sau:

ssh-keygen -t rsa -b 4096 -C "VPS sitecuatui.com"

Kết quả như sau:

tunguyen@tunguyenpc:~$ ssh-keygen -t rsa -b 4096 -C "VPS sitecuatui.com"
Generating public/private rsa key pair.
Enter file in which to save the key (/home/tunguyen/.ssh/id_rsa): 
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /home/tunguyen/.ssh/id_rsa.
Your public key has been saved in /home/tunguyen/.ssh/id_rsa.pub.
The key fingerprint is:
52:1a:75:17:9f:14:88:25:eb:97:00:90:8f:3d:cd:9d VPS sitecuatui.com
The key's randomart image is:
+--[ RSA 4096]----+
|      .oo oo+oo. |
|      .. o.+.o . |
|      .+.oo. .o  |
|      .++.o.E.   |
|      o S.. o    |
|       .   .     |
|                 |
|                 |
|                 |
+-----------------+

Mặc định thì SSH key sẽ được lưu trong thư mục .ssh của user. Ở đây user của mình là tunguyen nên mặc định nó lưu ở /home/tunguyen/.ssh/ và tên của file khóa là id_rsa. Ở đây, có 2 chỗ bạn cần lưu ý:

  1. Enter file in which to save the key: bạn có thể nhập đường dẫn đầy đủ và tên file mà bạn muốn lưu. Nếu bạn để trống thì chương trình sẽ sử dụng mặc định.
  2. Enter passphrase (empty for no passphrase): sử dụng mật khẩu cho khóa. Bất cứ khi nào khóa được sử dụng, bạn cũng cần phải nhập mật khẩu này.

Bây giờ bạn đã có cặp khóa công khai (có đuôi .pub) và khóa riêng tư. Xem tiếp để biết cách sử dụng khóa.

Thêm SSH key vào máy chủ

Để sử dụng SSH key thì bạn cần phải thêm khóa công khai (public key) vào máy chủ và dùng khóa riêng tư để xác thực việc kết nối.

Nếu bạn thêm SSH key trong khi tạo VPS trên DigitalOcean, Vultr, Runabove hoặc bất cứ đâu thì chỉ cần copy nội dung của khóa công khai (public key) để cung cấp cho họ. Dưới đây là hướng dẫn thêm SSH key cho một VPS Linux như Ubuntu và CentOS. Dành cho trường hợp bạn muốn thêm SSH key cho một người dùng mới.

  1. Đầu tiên bạn cần tạo thư mục .ssh tại thư mục home của user:
    mkdir ~/.ssh
  2. Tạo file authorized_keys trong thư mục .ssh vừa tạo ở trên:
    nano ~/.ssh/authorized_keys

    Bây giờ bạn cần copy nội dung của khóa công khai (public key) vào đây và lưu lại.

  3. Thiết lập quyền cho thư mục và file ở trên:
    chmod 700 ~/.ssh
    chmod 600 ~/.ssh/authorized_keys

Vậy là bạn đã thiết lập xong ở phía máy chủ.

Kết nối SSH bằng key

Kết nối đến một máy chủ SSH có thể được thực hiện trên Windows, Linux, Mac OS X và trên nhiều phần mềm như PuTTY, Terminal…

Linux và Mac OS

Đối với Linux như Ubuntu, CentOS và Mac OS X thì bạn có thể kết nối SSH thông qua phần mềm Terminal. Để sử dụng SSH key thông qua Terminal, bạn cần phải tạo SSH key bằng OpenSSH. Nếu bạn muốn sử dụng PuTTY SSH client hoặc sử dụng SSH key được tạo từ PuTTYgen thì bạn hãy xem phần tiếp theo.

Mở Terminal và sử dụng lệnh sau:

$ ssh -p 22 -i ~/.ssh/id_rsa user@ip-cua-ban
  • ssh: đây là lệnh sử dụng để kết nối SSH
  • -p: (port)sử dụng tùy chọn này nếu bạn muốn chỉ định một cổng SSH khác.
    • 22: mặc định thì SSH sử dụng port 22. Nếu bạn đã thay đổi port mặc định thì bạn cần phải chỉ định một cổng rõ ràng.
  • -i: gán thêm tùy chọn này nếu như bạn muốn sử dụng SSH key.
    • ~/.ssh/id_rsa: đây là đường dẫn của khóa riêng tư (private key).
  • user@ip-cua-ban: đây là user và IP mà bạn muốn kết nối đến. Bạn có thể sử dụng domain

Kết quả tương tự như sau:

tunguyen@tunguyenpc:~$ ssh -p 22 -i ~/.ssh/id_rsa tunguyen@127.0.0.1
The authenticity of host '127.0.0.1 (127.0.0.1)' can't be established.
ECDSA key fingerprint is 16:fc:ce:ee:0a:f2:52:1a:26:35:01:3a:ce:12:87:81.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '127.0.0.1' (ECDSA) to the list of known hosts.
Welcome to Ubuntu 14.04.3 LTS (GNU/Linux 3.19.0-39-generic x86_64)

 * Documentation:  https://help.ubuntu.com/

66 packages can be updated.
0 updates are security updates.

Last login: Thu Dec 17 10:54:37 2015 from localhost

Nếu đây là lần đầu tiên bạn kết nối tới máy chủ SSH này, bạn sẽ nhìn thấy dòng Are you sure you want to continue connecting (yes/no)?. Gõ yes và enter để tiếp tục.

Sử dụng Terminal để kết nối SSH cũng rất tiện lợi, nhưng nếu bạn đang dùng Windows, bạn nên sử dụng PuTTY SSH client.

Windows

Đối với Windows, bạn nên sử dụng PuTTY SSH client để kết nối SSH bằng SSH key.

Chú ý: nếu bạn muốn sử dụng PuTTY để kết nối SSH thì bạn không thể sử dụng SSH key được tạo ra bằng OpenSSH. Bạn nên tạo SSH key bằng PuTTYgen. Hoặc bạn có thể chuyển đổi khóa được tạo bởi OpenSSH sang định dạng của PuTTY bằng cách mở PuTTYgen và nhấn nút Load thay vì Generate.

  1. Tải PuTTY và mở chương trình. PuTTY cũng có sẵn để tải về trên Linux như Ubuntu, CentOS và Mac OS X.
  2. Như thường lệ, ở mục Session bên cột trái, nhập IP của máy chủ hoặc tên miền và Port (mặc định là 22).
    hướng dẫn sử dụng PuTTY SSH client
  3. Ở cột tùy chọn bên trái, đi đến Connection > SSH > Auth và nhấn Browse… để mở khóa riêng tư (private key) của bạn. Bỏ qua bước này nếu bạn không muốn dùng SSH key.
    Hướng dẫn sử dụng SSH
  4. Nhấn Open để kết nối SSH.

PuTTY là phần mềm quản lý và kết nối SSH tốt nhất mình từng sử dụng. Bạn cũng có thể sử dụng một số phần mềm quản lý SSH khác tại đây.

Mặc dù sử dụng SSH key là an toàn, nhưng bạn cũng nên thực hiện một số cài đặt để bảo mật SSH như vô hiệu hóa đăng nhập bằng mật khẩu, đổi port 22.

Chúc bạn thành công!

Thích hoặc chia sẽ bài này

  • Nhân

    cám ơn bạn, bài viết rất hay