Thursday, November 21, 2024

Hướng dẫn tạo và quản lý khóa SSH trên Linux

-

1. Tổng Quan.

Bài viết này sẽ giới thiệu bạn về việc tạo và quản lý khóa SSH trên hệ thống Linux. SSH (Secure Shell) là một giao thức quan trọng được sử dụng rộng rãi để kết nối và truy cập từ xa vào máy chủ và hệ thống Linux. Sử dụng khóa SSH giúp cải thiện tính bảo mật khi đăng nhập bằng cách thay thế việc sử dụng mật khẩu.

Nội dung bài viết bao gồm:

  • Tạo Cặp Khóa SSH:
    • Sử dụng lệnh ssh-keygen để tạo cặp khóa SSH (khóa riêng tư và khóa công khai).
    • Cách lựa chọn loại khóa (RSA, ED25519, …) và đặt mật khẩu cho khóa riêng tư.
  • Lưu Trữ Khóa SSH:
    • Vị trí mặc định của các file khóa trong thư mục người dùng.
    • Lưu trữ an toàn khóa riêng tư và không chia sẻ nó với người khác.
  • Sử Dụng Khóa SSH:
    • Đăng ký khóa công khai trên máy chủ SSH để cho phép đăng nhập bằng khóa SSH.
    • Sử dụng khóa SSH để thiết lập kết nối SSH mà không cần mật khẩu.
  • Quản Lý Khóa SSH:
    • Cách quản lý nhiều khóa SSH cho nhiều máy chủ và tài khoản.
    • Cách thực hiện việc quản lý khóa khi cần thay đổi hoặc bổ sung khóa.

Có 2 loại khóa trong SSH.

  • Khóa công khai (public key): Khóa này thường được sử dụng trên máy tính của người dùng. Nó được sử dụng để xác thực người dùng khi họ kết nối vào máy chủ từ xa. Khóa công khai có thể được chia sẻ công khai và bạn có thể đăng ký nó trên máy chủ SSH để cho phép người dùng đăng nhập bằng khóa SSH. Điều này cho phép người dùng xác thực bản thân mình mà không cần mật khẩu và tăng tính bảo mật.
  • Khóa riêng tư (private key): Khóa này nằm trên máy tính của người dùng và không nên bao giờ được chia sẻ hoặc tiết lộ cho người khác. Nó giữ bí mật và dùng để ký và xác minh kết nối từ xa. Khóa riêng tư chỉ thuộc về người sở hữu và nó giữ cho người dùng quyền truy cập vào máy chủ mà họ đã đăng ký khóa công khai với.

Khóa công khai và khóa riêng tư là cặp khóa, quá trình xác thực hoạt động bằng cách so sánh thông tin từ khóa công khai (được gửi từ máy tính người dùng) với khóa riêng tư (nằm trên máy chủ). Nếu thông tin trùng khớp thì người dùng được xác thực và được phép truy cập vào máy chủ.

Với cặp khóa SSH này, người dùng đủng cấp quyền truy cập vào máy chủ từ xa mà không phải chia sẻ mật khẩu và duy trì tính bảo mật của khóa riêng tư.

2. Thực hành.

Để tạo cặp khóa SSH (SSH key pair) trên Linux, bạn có thể sử dụng công cụ ssh-keygen. Dưới đây là cách tạo cặp khóa SSH trên Linux:

Sử dụng lệnh ssh-keygen để tạo khóa SSH. Mặc định, lệnh này sẽ tạo một cặp khóa RSA 2048-bit. Bạn có thể chỉ định loại khóa khác (như ED25519) bằng tham số -t.

Ví dụ:

ssh-keygen -t rsa

Hoặc để tạo một khóa ED25519:

ssh-keygen -t ed25519
  • Lệnh trên sẽ yêu cầu bạn chọn vị trí để lưu khóa (mặc định là ~/.ssh/id_rsa cho RSA hoặc ~/.ssh/id_ed25519 cho ED25519) và mật khẩu (passphrase) tùy chọn cho khóa riêng tư. Bạn có thể chọn mật khẩu hoặc để trống nếu bạn muốn trống mật khẩu.
  • Sau khi tạo khóa, bạn sẽ có hai file: một file khóa riêng tư và một file khóa công khai. Mặc định, các file này sẽ được lưu trong thư mục ~/.ssh. File khóa riêng tư thường có tên là id_rsa hoặc id_ed25519, và file khóa công khai có tên tương ứng với phần mở rộng .pub.Ví dụ:
    • Khóa riêng tư: ~/.ssh/id_rsa hoặc ~/.ssh/id_ed25519
    • Khóa công khai: ~/.ssh/id_rsa.pub hoặc ~/.ssh/id_ed25519.pub
  • Bây giờ bạn có thể sử dụng khóa công khai (id_rsa.pub hoặc id_ed25519.pub) để đăng ký trên máy chủ SSH để có thể đăng nhập bằng khóa SSH. Thường bạn sẽ sao chép nội dung của file khóa công khai và gửi nó đến người quản trị máy chủ hoặc thêm nó vào tài khoản SSH trên máy chủ.

Khi bạn tạo một cặp khóa SSH bằng lệnh ssh-keygen, cặp khóa này sẽ thuộc về người dùng hiện tại, nghĩa là khóa riêng tư và khóa công khai sẽ nằm trong thư mục người dùng của người dùng đó. Cụ thể, file khóa riêng tư (private key) sẽ nằm trong thư mục .ssh trong thư mục người dùng của bạn.

Ví dụ, nếu bạn đăng nhập bằng tài khoản user1 và chạy lệnh ssh-keygen, thì cặp khóa SSH sẽ thuộc về user1 và nằm trong thư mục /home/user1/.ssh.

Một người dùng khác cần phải tạo một cặp khóa SSH riêng của họ bằng lệnh ssh-keygen nếu họ muốn sử dụng khóa SSH để đăng nhập vào hệ thống.

Cặp khóa SSH là độc lập cho từng người dùng, và đó là cách để đảm bảo tính bảo mật và phân quyền truy cập vào hệ thống.

3. Sao chép khóa sang một server khác.

Để sao chép khóa SSH từ máy tính của bạn sang một máy chủ khác, bạn có thể sử dụng một số phương pháp. Dưới đây là hai phương pháp phổ biến:

  • Sử dụng lệnh ssh-copy-id (Được ưu tiên):
    • Sử dụng lệnh ssh-copy-id để sao chép khóa công khai lên máy chủ từ máy tính của bạn.
    • Sử dụng cú pháp sau đây:
ssh-copy-id -i ~/.ssh/id_rsa.pub user@remote_server
  • Thay ~/.ssh/id_rsa.pub bằng đường dẫn đến file khóa công khai của bạn, user bằng tên người dùng trên máy chủ từ xa, và remote_server bằng địa chỉ IP hoặc tên máy chủ từ xa.
  • Lệnh này sẽ sao chép khóa công khai của bạn vào file ~/.ssh/authorized_keys trên máy chủ từ xa.

Sử dụng lệnh scp:

  • Sử dụng lệnh scp để sao chép file khóa công khai từ máy tính của bạn lên máy chủ từ xa.
  • Sử dụng cú pháp sau đây:
scp ~/.ssh/id_rsa.pub user@remote_server:~/.ssh/authorized_keys

Thay ~/.ssh/id_rsa.pub bằng đường dẫn đến file khóa công khai của bạn, user bằng tên người dùng trên máy chủ từ xa và remote_server bằng địa chỉ IP hoặc tên máy chủ từ xa.

Sau khi bạn đã sao chép khóa công khai lên máy chủ từ xa, bạn sẽ có thể đăng nhập vào máy chủ từ xa bằng khóa SSH mà không cần mật khẩu. Đảm bảo tích hợp tính bảo mật bằng việc chỉ cho người dùng cần thể thực hiện cả hai phương pháp trên.

3. Lưu ý quan trọng.

Khóa SSH mà bạn tạo sẽ dành riêng cho một người dùng cụ thể trên hệ thống Linux của bạn. Mỗi người dùng có thể có một cặp khóa SSH riêng và khóa riêng tư của mỗi người dùng nên chỉ có quyền truy cập và sử dụng bởi người dùng đó. Khóa SSH này sẽ dùng để xác thực người dùng khi họ đăng nhập vào hệ thống từ xa thông qua giao thức SSH.

Mỗi người dùng sẽ có một thư mục .ssh riêng tại thư mục người dùng của họ (ví dụ: /home/username/.ssh) và các file khóa SSH sẽ được lưu trữ trong thư mục này. Điều này có nghĩa rằng các người dùng khác không thể sử dụng cặp khóa SSH này.

Nếu bạn muốn tất cả người dùng trên hệ thống sử dụng cùng một khóa SSH (khóa công khai) để đăng nhập, bạn có thể đặt khóa công khai trong file /etc/ssh/authorized_keys. Tuy nhiên, điều này không được khuyến nghị do nguy cơ bảo mật. Thường thì mỗi người dùng nên có cặp khóa riêng để quản lý và đảm bảo tính bảo mật riêng tư của họ.

4. Kết Luận.

Khóa SSH là một công cụ mạnh mẽ để cải thiện tính bảo mật và quản lý truy cập vào hệ thống Linux từ xa. Bằng cách sử dụng khóa SSH, bạn có thể loại bỏ việc sử dụng mật khẩu và tăng cường tính bảo mật khi kết nối với máy chủ. Điều này đặc biệt quan trọng khi bạn quản lý các máy chủ từ xa hoặc cần xác thực an toàn. Bài viết này cung cấp hướng dẫn chi tiết về cách tạo, lưu trữ và sử dụng khóa SSH trên hệ thống Linux.

LEAVE A REPLY

Please enter your comment!
Please enter your name here

4,956FansLike
256FollowersFollow
223SubscribersSubscribe
spot_img

Related Stories