Tìm kiếm trang web

Thiết lập Khóa xác thực để đăng nhập SSH từ xa trong Ubuntu 24.04


Đây là hướng dẫn đơn giản chỉ ra cách tắt xác thực mật khẩu và sử dụng khóa SSH thay thế để đăng nhập từ xa vào Máy chủ hoặc Máy tính để bàn Ubuntu từ xa.

SSH (Secure Shell) là một cách phổ biến và an toàn để đăng nhập máy chủ từ xa và/hoặc truyền dữ liệu giữa máy cục bộ và máy từ xa. Khi bạn cố gắng SSH đến một máy chủ từ xa, nó thường yêu cầu mật khẩu người dùng để xác thực.

Tuy nhiên, mật khẩu không phải là an toàn nhất. Nhìn chung, chúng không phức tạp hoặc không đủ dài để bảo vệ khỏi các cuộc tấn công hoặc khó nhớ và gõ đi gõ lại trên mỗi kết nối.

Để an toàn hơn và cũng tiết kiệm thời gian của bạn, xác thực khóa bảo mật là một lựa chọn tốt. Và đây là cách thiết lập từng bước.

Bước 1: Tạo cặp khóa bảo mật

Cặp khóa SSH thường bao gồm các khóa riêng tưcông khai. Máy khách cục bộ giữ khóa riêng, trong khi khóa chung liên quan được tải lên máy chủ từ xa.

Khi kết nối SSH bắt đầu, máy chủ sẽ kiểm tra xem máy khách có khóa riêng hay không. Nếu được thì cho phép kết nối. Nếu không, hãy quay lại phương thức xác thực khác nếu có (ví dụ: yêu cầu mật khẩu).

Để tạo cặp khóa, mở terminal (Ctrl+Alt+T) và chạy lệnh bên dưới trong máy tính cục bộ của bạn:

ssh-keygen

Chạy sudo apt install openssh-client nếu bạn chưa cài đặt gói máy khách SSH.

Lệnh này theo mặc định sẽ tạo cặp khóa ed25519. Sau đó, nó sẽ yêu cầu nhấn Enter để lưu vào tệp khóa mặc định hoặc nhập thủ công /home/USER_NAME/.ssh/key_name_here.

Tiếp theo bạn cần gõ passphrase (chỉ cần gõ trong đầu, không có dấu sao phản hồi) và xác nhận mã hóa key nên dù bạn làm mất key thì người khác cũng không thể sử dụng nếu không có passphrase.

Bước 2: Sao chép khóa công khai vào máy chủ từ xa

Sau bước 1, bạn sẽ có các tệp khóa riêng và khóa chung trong thư mục cục bộ .ssh.

Chạy lệnh để điều hướng đến thư mục đó và liệt kê nội dung thư mục. Sau đó, bạn sẽ thấy 2 tệp chính.

cd ~/.ssh && ls

LƯU Ý: Trước khi chạy lệnh bên dưới, hãy đảm bảo máy chủ từ xa đã cài đặt openssh-server và bật ssh.service (ssh.socket cho 24.04). Đồng thời, nó cần cho phép xác thực mật khẩu.

Để tải công khai lên máy chủ SSH, hãy chạy lệnh tương tự bên dưới trong máy tính cục bộ:

ssh-copy-id -i ~/.ssh/my_ssh_key.pub -p 22366 ji@localhost

Trong lệnh, bạn cần thay thế các tùy chọn sau cho phù hợp:

  • -i ~/.ssh/my_ssh_key.pub – xác định tệp chính. Thay thế tên khóa my_ssh_key bằng tên của bạn theo Bước 1.
  • -p 22366 – thông báo cổng nghe của máy chủ SSH từ xa. Mặc định là 22.
  • ji@localhost – ‘ji’ là tên người dùng trên máy chủ từ xa mà tôi đang cố đăng nhập, “localhost” là tên máy chủ từ xa. Trong trường hợp này, tôi đang cố gắng SSH vào máy ảo. Bạn cần thay thế nó bằng username@server_ip_address.

Sau khi chạy thành công lệnh ssh-copy-id, máy chủ SSH từ xa giờ đây sẽ có “khóa chung” được viết dưới dạng một dòng mới trong ~/.ssh/authorized_keys mặc định tập tin.

Sau đó, bạn có thể thử lệnh ssh -p xxx user@ip-address trong máy tính cục bộ. Nó sẽ hiện lên hộp thoại yêu cầu mật khẩu (bạn đã đặt ở Bước 1) để mở khóa riêng.

Nếu bạn không muốn nhập đi nhập lại mật khẩu, chỉ cần đánh dấu vào “Tự động mở khóa khóa này bất cứ khi nào tôi đăng nhập” trong hộp thoại bật lên.

Tuy nhiên, trong trường hợp nó KHÔNG hoạt động, hãy đảm bảo máy chủ SSH của bạn có “pubkeyauthentication” được đặt thành “có” và bao gồm “.ssh/authorized_keys” là “authorizedkeysfile“. chúng thường là cài đặt daemon SSH mặc định.

Để xác định, sử dụng lệnh:

sudo sshd -T |grep -e "authorizedkeysfile" -e "pubkeyauthentication"

Bước 3: Vô hiệu hóa mật khẩu đăng nhập SSH

Nếu mọi việc suôn sẻ, bạn có thể tắt xác thực mật khẩu để bảo mật máy chủ SSH, mặc dù điều này là TÙY CHỌN.

1. Trước tiên, hãy kết nối với máy chủ SSH từ xa của bạn. Sau đó, chạy lệnh để chỉnh sửa tệp cấu hình sshd daemon:

sudo nano /etc/ssh/sshd_config

Khi tập tin mở ra, hãy làm:

  • Tìm hiểu “Xác thực mật khẩu có” và đặt thành Xác thực mật khẩu không. Xóa “#” nếu nó có ở đầu, nếu không nó sẽ không hoạt động.
  • Nếu dòng KbdInteractiveAuthentication được bật (không có # ở đầu), hãy đặt dòng này thành không. Nó được sử dụng để đăng nhập mật khẩu một lần, tuy nhiên cũng cho phép đăng nhập mật khẩu tĩnh trừ khi bạn tắt khỏi cài đặt PAM.
  • Nếu ChallengeResponseAuthentication được bật thì cũng được đặt thành không.

Cuối cùng nhấn Ctrl+S để lưu file và Ctrl+X để thoát

2. Sau đó, chạy lệnh để liệt kê nội dung thư mục /etc/ssh/sshd_config.d/:

ls /etc/ssh/sshd_config.d/

Thư mục theo mặc định trống! Nhưng bất kỳ tệp .conf nào trong thư mục đó đều có thể ghi đè cấu hình SSH của bạn vì chúng được tải trước tiên trong /etc/ssh/sshd_config.

3. Để xác minh cấu hình của bạn và kiểm tra xem có lỗi nào không, hãy sử dụng lệnh:

sudo sshd -T | grep authentication

4. Để áp dụng các thay đổi, hãy chạy lần lượt 2 lệnh bên dưới:

sudo systemctl daemon-reload

sudo systemctl restart ssh.socket

Đối với Ubuntu 22.04 cũ trở về trước, bạn có thể chạy lệnh bên dưới để áp dụng các thay đổi:

sudo systemctl status ssh.service