Hướng dẫn cấu hình SSH Key trên máy chủ Linux

Giới thiệu

SSH (Secure Shell) là một giao thức được mã hóa dùng để quản trị và giao tiếp với các máy chủ. Khi làm việc với máy chủ Linux, bạn sẽ dành phần lớn thời gian của mình trong một phiên kết nối với máy chủ của bạn thông qua SSH.

Mặc dù có một số cách khác nhau để đăng nhập vào máy chủ SSH, nhưng trong hướng dẫn này, chúng tôi sẽ tập trung vào việc thiết lập khóa SSH (SSH Key). Khóa SSH cung cấp một cách dễ dàng nhưng cực kỳ an toàn để đăng nhập vào máy chủ của bạn. Vì lý do này, sử dụng SSH Key là phương pháp chúng tôi đề xuất cho tất cả người dùng khi thực hiện đăng nhập vào server.

Hướng dẫn tạo SSH Key trên hệ điều hành Windows

Bước đầu tiên để định cấu hình xác thực khóa SSH cho máy chủ của bạn là tạo một cặp khóa SSH trên máy tính cục bộ của bạn.

Đối với hệ điều hành Windows, bạn có thể sử dụng công cụ PuTTYgen để tạo một cặp khóa, để tải PuTTYgen về máy tính bạn hãy truy cập tại đây.

Sau khi download hoàn tất, bạn mở chương trình PuTTYgen lên sau đó thực hiện lựa chọn vào các tùy chọn bên dưới như hình ảnh bên dưới rồi chọn Generate.

[1] Type of key to generate: Lựa chọn chuỗi mã hóa cho key (mặc định: RSA).

[2] Numbers of bits in a generated key: Số bit trong một khóa được tạo (mặc định: 2048).

ssh-key-puttygen-01

Sau khi khởi tạo key hoàn tất, nhưng bước tiếp theo bạn cần thực hiện là nhập passphrase (options), lưu trữ cẩn thận public key và private key vào thiết bị, máy tính của bạn.

ssh-key-puttygen-02

Hướng dẫn tạo SSH Key trên hệ điều hành Linux / Macbook

Để làm điều này, bạn có thể sử dụng một câu lệnh đặc biệt có tên ssh-keygen, được bao gồm trong bộ công cụ OpenSSH tiêu chuẩn. Theo mặc định, điều này sẽ tạo một cặp khóa RSA 2048 bit, phù hợp với hầu hết các mục đích sử dụng. Cấu trúc câu lệnh ssh-keygen như sau:

ssh-keygen -t rsa -b 4096 -f   /path/key-name
tao-ssh-key-tren-câu-lenh-ssh-keygen

Câu lệnh trên bao gồm tùy chọn -t cho phép bạn lựa chọn kiểu mã hóa cho key, -b là số bits trong khóa, -f dùng để xác định vị trí lưu cùng với tên của khóa và bạn nhập passphrase để hoàn tất việc khởi tạo.

Bây giờ bạn có một public key và private key mà bạn có thể sử dụng để xác thực. Bước tiếp theo là đặt public key trên máy chủ của bạn. Để thực hiện việc này ngoài việc bạn thực hiện thủ công bằng cách copy public key và paste vào tệp ./.ssh/authorized_key , bạn có thể tham khảo một số lựa chọn bên dưới để thực hiện.

Copy public key với câu lệnh ssh-copy-id

Cách dễ nhất để sao chép khóa công khai của bạn vào một máy chủ hiện có là sử dụng lệnh ssh-copy-id. Câu lệnh tổng quát như sau:

ssh-copy-id -p [your-ssh-port] username@remote_host 
  • your-ssh-port: Là port của dịch vụ SSH trên máy chủ mà bạn cần gán public-key
  • username: Là user trên máy chủ mà bạn cần gán public-key
  • remote_host là địa chỉ IP hoặc domain name của máy chủ mà bạn cần gán public-key

Trong trường hợp bạn cần thay đổi port SSH trên máy chủ Linux, bạn có thể tham khảo tại đây.

Tiếp theo, câu lệnh sẽ quét tài khoản cục bộ của bạn để tìm khóa id_rsa.pub mà chúng tôi đã tạo trước đó. Khi tìm thấy chìa khóa, nó sẽ nhắc bạn nhập mật khẩu của tài khoản remote.

/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
username@remote_host's password:

Sau khi bạn nhập password chính xác, câu lệnh sẽ kết nối với tài khoản trên máy chủ từ xa bằng mật khẩu bạn đã cung cấp. Sau đó, nó sẽ sao chép nội dung của khóa ~/.ssh/id_rsa.pub vào tệp authorized_keys ở máy chủ remote. Sau khi hoàn tất, bạn sẽ thấy kết quả như sau:

Number of key(s) added: 1 Now try logging into the machine, with: "ssh 'username@remote_host' and check to make sure that only the key(s) you wanted were added.

Copy public key thông qua SSH

Ở cách này chúng tôi sẽ thực hiện việc này bằng cách xuất nội dung của public key trên thiết bị của bạn và chuyển tới máy chủ. Câu lệnh đầy đủ để thực hiện sẽ giống như sau:

cat ~/.ssh/id_rsa.pub | ssh username@remote_host "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys && chmod 700 ~/.ssh && chmod 600 ~/.ssh/authorized_keys"

Lưu ý: Bạn vui lòng lưu trữ files private-key (format là .ppk với Windows hoặc theo tên mà bạn đã thiết lập với Linux, macOS) cẩn thận để tránh để mất hoặc lộ thông tin truy cập.

Cấu hình xác thực với SSH Key-based trên máy chủ Linux

Truy cập vào máy chủ Linux với user root hoặc bất kì tài khoản có quyền sudo. Mở tệp cấu hình SSH trên máy chủ:

sudo vi/etc/ssh/sshd_config

Bên trong tệp này, hãy tìm kiếm cấu hình có tên là PasswordAuthentication set giá trị là no để disable tính năng xác thực SSH với password và enable xác thực với SSH Key bằng cách set yes với cấu hình PubkeyAuthentication.

PasswordAuthentication no 
PubkeyAuthentication yes

Sau đó đó bạn lưu lại file và cho tiến hành restart lại dịch vụ SSH để hoàn tất

service sshd restart || systemctl sshd restart || /etc/init.d/sshd restart

Để thực hiện cấu hình kết nối đến máy chủ với SSH key vừa tạo, bạn có thể xem hướng dẫn tại đây.

Tổng kết

Chúng tôi đã hướng dẫn cho bạn thực hiện tạo khóa ssh, chuyển thông tin public key lên máy chủ Linux và cấu hình cho máy chủ xác thực với SSH Key.

Nếu bạn có bất kỳ câu hỏi hoặc nhận xét nào, vui lòng để lại bình luận bên dưới.

Was this article helpful?

Related Articles

Leave A Comment?