Cách đăng nhập vào SSH server bằng GPG key

Duy trì thông tin đăng nhập SSH là một phần quan trọng trong giao thức bảo mật của mọi quản trị viên. Bài viết hôm nay sẽ chỉ cho bạn cách có thể giảm bớt các key cần duy trì bằng cách liên kết thông tin đăng nhập SSH với GPG key.

Tại sao nên sử dụng GPG key để đăng nhập vào SSH?

Một trong những lợi thế của việc sử dụng GPG key để đăng nhập SSH là dễ dàng di chuyển giữa các máy chủ. Mọi hệ điều hành ngày nay đều có công cụ GUI hoặc CLI tương tác với GPG. Ví dụ, GNU Kleopatra có sẵn cho Linux và Windows và công cụ GnuPG có sẵn cho cả Linux và macOS.

GNU Kleopatra đang chạy bằng GPG key.
GNU Kleopatra đang chạy bằng GPG key.

Một ưu điểm khác của GPG key là, không giống như SSH key, bạn có thể sử dụng chúng cho nhiều tác vụ liên quan đến bảo mật. Ngoài SSH, bạn có thể tạo các subkey bổ sung để ký email và mã hóa file. Do đó, GPG key cho phép bạn hợp nhất phần lớn cuộc sống số của mình thành một số bit bảo mật dễ bảo trì.

GPG key có nhiều subkey
GPG key có nhiều subkey

Cuối cùng, việc sử dụng GPG qua SSH sẽ không thay đổi bất kỳ cơ sở hạ tầng hiện có nào trên các máy từ xa. Điều này là do GPG chuyển đổi key xác thực của nó thành định dạng “tương thích với SSH”. Do đó, bạn có thể xuất public GPG key “tương thích với SSH” của mình sang máy chủ SSH và ngay lập tức sử dụng nó để đăng nhập.

Chuẩn bị GPG key cho SSH

Bước đầu tiên khi sử dụng GPG key trên SSH là tạo subkey mới. Việc làm này sẽ cho phép chia sẻ chi tiết xác thực SSH mà không ảnh hưởng đến danh tính GPG chính của bạn.

Bắt đầu bằng cách mở GPG prompt cho key chính:

gpg --expert --edit-key YOUR-KEY@EMAIL.ADDRESS

Lưu ý: Bạn có thể tìm địa chỉ email cho key chính của mình bằng cách liệt kê nội dung của key: gpg --list-keys.

Nhập “addkey” trên GPG prompt, chọn “8”, sau đó nhấn Enter.

Template RSA tùy chỉnh cho subkey GPG
Template RSA tùy chỉnh cho subkey GPG

Đặt khả năng của subkey thành “=A” rồi nhấn Enter.

Quá trình thiết lập khả năng xác thực cho subkey GPG
Quá trình thiết lập khả năng xác thực cho subkey GPG

Nhập “4096” vào lời nhắc kích thước key, sau đó nhấn Enter.

Đặt khoảng thời gian hợp lý cho tính hợp lệ của subkey. Trong trường hợp này, ví dụ sẽ gõ “1y” để làm cho subkey mới chỉ có hiệu lực trong một năm.

Các giá trị về kích thước key và tính hợp lệ của subkey
Các giá trị về kích thước key và tính hợp lệ của subkey

Tạo subkey GPG mới bằng cách nhập “y”, sau đó nhấn Enter trên lời nhắc xác nhận của trình hướng dẫn.

“quit”, sau đó nhấn Enter để thoát khỏi GPG prompt.

Xác nhận rằng subkey mới đang hoạt động bình thường bằng cách lấy thông tin chi tiết về key chính:

gpg --list-keys YOUR-KEY@EMAIL.ADDRESS
Subkey xác thực bổ sung bên dưới key chính.
Subkey xác thực bổ sung bên dưới key chính.

Kích hoạt hỗ trợ SSH trong GPG

Khi subkey được thiết lập và chạy, giờ đây bạn có thể cấu hình daemon SSH của mình để chấp nhận các yêu cầu gpg-agent đến. Để làm điều đó, hãy thêm “enable-ssh-support” vào file “gpg-agent.conf” của người dùng hiện tại:

echo "enable-ssh-support" >> ~/.gnupg/gpg-agent.conf

Mở file “.bashrc” bằng trình soạn thảo văn bản yêu thích:

nano ~/.bashrc

Dán các dòng code sau vào cuối file .bashrc:

export SSH_AUTH_SOCK=$(gpgconf --list-dirs agent-ssh-socket)<br>gpgconf --launch gpg-agent

Lưu file bashrc, sau đó in keygrip của subkey:

gpg --list-keys --with-keygrip
Keygrip của subkey GPG.
Keygrip của subkey GPG.

Sao chép keygrip của subkey, sau đó tạo file “sshcontrol” trong thư mục .gnupg:

nano ~/.gnupg/sshcontrol

Dán keygrip danh tính của bạn vào trong file mới, sau đó lưu nó.

Keygrip của subkey trên file sshcontrol
Keygrip của subkey trên file sshcontrol

Áp dụng cấu hình SSH và GPG mới bằng cách load lại file bashrc trên phiên terminal hiện tại:

source ~/.bashrc

Kiểm tra xem daemon SSH hiện có hoạt động bình thường hay không bằng cách liệt kê SSH public key của nó:

ssh-add -l
GPG key đã load cho SSH.
GPG key đã load cho SSH.

Xuất và kiểm tra GPG key

Tại thời điểm này, bạn đã có daemon SSH được liên kết chính xác với GPG agent của mình. Để sử dụng nó, hãy tạo key xuất SSH bằng lệnh sau:

gpg --ssh-export-key YOUR-KEY@EMAIL.ADDRESS > ~/authorized_keys

Đặt các bit quyền của key xuất thành chỉ người dùng mới có thể đọc và ghi được:

chmod 600 ~/authorized_keys

Gửi file ủy quyền mới đến máy chủ từ xa bằng scp:

scp ~/authorized_keys YOUR-REMOTE.SERVER.DOMAIN:~/.ssh/authorized_keys

Đăng nhập vào máy chủ từ xa, sau đó khởi động lại daemon SSH để áp dụng key mới:

sudo systemctl restart ssh.service

Nhấn Ctrl + D, sau đó đăng nhập lại vào máy chủ SSH từ xa. Thao tác này sẽ đưa ra lời nhắc mới yêu cầu nhập mật khẩu GPG key chính.

Lời nhắc mật khẩu GPG của Gnome cho SSH.
Lời nhắc mật khẩu GPG của Gnome cho SSH.

Liên kết GPG key với daemon SSH và xuất nó sang máy chủ từ xa chỉ là một số điều bạn có thể thực hiện với SSH. Khám phá những gì có thể làm với phần mềm tuyệt vời này bằng cách sử dụng SSH với các UNIX pipe trong Linux.

Thứ Bảy, 25/05/2024 07:29
51 👨 213
0 Bình luận
Sắp xếp theo
    ❖ Linux