Hướng dẫn cấu hình SSH Key trên Rocky Linux 8
Bạn không sử dụng Rocky Linux 8?
Xem bài viết cho các distro khácGiới thiệu
SSH (Secure Shell) là một giao thức giúp người dùng quản lý và giao tiếp với server. SSH Key được sinh ra để thay thế mật khẩu thông thường nhằm đảm bảo hơn về tính bảo mật. Nó bao gồm 2 key (Public key và Private key) được mã hoá.
Private key phải được đảm bảo giữ bí mật tuyệt đối. Bất kỳ người nào có key này đều có thể truy cập vào server. Ngược lại Public key được phép công khai nhằm mã hoá thông tin mà chỉ có thể giải mã bởi Private key.
Bài viết này sẽ hướng dẫn bạn cấu hình SSH Key trên Rocky Linux 8.
Yêu cầu
- Hệ thống chạy Rocky Linux 8
Bước 1: Tạo SSH Key
Bước đầu tiên để cấu hình Xác thực bằng SSH Key bạn cần tạo một cặp SSH Key trên máy tính cục bộ của mình. Ở đây mình sẽ sử dụng ssh-keygen
(có sẵn trong bộ OpenSSH suite). Trên terminal bạn nhập lệnh sau:
Các tuỳ chọn:
-b "bits"
: chỉ định số lượng bit trong khóa-t “Type”
: chỉ định loại khóa sẽ được tạo. Các giá trị thường được sử dụng là:- rsa
cho khóa RSA,- dsa
cho khóa DSA-q
: ssh-keygen chế độ yên tĩnh.
Bạn sẽ cần nhập nơi lưu trữ key, hãy đảm bảo rằng chỗ đó đủ bảo mật. Private key Sẽ được gọi là id_rsa
còn Public key là id_rsa.pub
, cả 2 được lưu vào thư mực ~/.ssh
theo mặc định
Sau đó công cụ này sẽ hỏi bạn nhập mội pass phrase. Bạn có thể để trống nêu muốn nhưng mình khuyên bạn nên điền vào vì nó như lớp bảo mật thứ 2 vậy.
Lưu ý: Passphrase không có cách nào để phục hồi nên hãy lưu nó ở một nơi an toàn và dễ nhớ.
Vậy là hoàn thành việc tạo một cặp key SSH.
Bước 2: Copy SSH Public Key cho Server của bạn
Có nhiều cách để tải Public Key lên server SSH, mỗi cách đều phụ thuộc vào công cụ mà bạn đang có. Các cách dưới đây đề cho về một kết quả như nhau. Mình sẽ trình bày cách dễ nhất trước sau đó cách cách sau sẽ yêu cầu thêm các tác vụ thủ công thêm. Bạn chỉ nên làm theo nếu như các cách trước không hoạt động.
1. Sử dụng ssh-copy-id
Cách đơn giản nhất chính là sử dụng công cụ ssh-copy-id
được tích hợp và bộ công cụ OpenSSH. Để sử dụng, bạn cần chỉ ra server mình muốn copy và tài khoản, mật khẩu SSH. Ở đây, mình có:
- username :
username
- Remote host:
remote_host
- Thư mục lưu key:
$HOME/.ssh/id_rsa.pub
Bạn có thể thêm tuỳ chọn
-p "port"
để chỉ định cổng port trong trường hợp SSH Server không chạy ở port 22.
Nếu đây là lần đầu bạn truy cập và Remote Host bạn sẽ có thông báo sau:
Bạn chỉ cần nhập vào yes
sau đó là phím <Enter> là được. Tiếp theo công cụ sẽ quét tìm id_rsa.pub
mà ta đã tạo, khi tìm kiếm thành công nó sẽ yêu cầu bạn nhập mật khẩu của tài khoản SSH
Vì lý do bảo mật nên khi nhập, mật khẩu sẽ bị ẩn đi. Sau khi hoàn thành bấm <Enter> và công cụ sẽ tự động kết nối tới tài khoản và copy Key public ~/.ssh/id_rsa.pub
vào file trên server ~/.ssh/username/authorized_keys/
. Bạn sẽ nhận được thông báo thành công như sau:
2. Sử dụng SSH
Nếu như bạn không thể sử dụng ssh-copy-id
thì ta có thể tải key bằng cách SSH thông thường.
Chúng ta sử dụng kí hiệu >>
để nối vào nội dung thay vì ghi đề lên toàn bộ. Điều này cho phép thêm key và không xoá đi các key đang có.
Bạn cần phân quyền cho thư mục trên như sau :
.ssh:
700 (drwx------)
authorized_keys:
600 (-rw-r--r--)
Nếu đây là lần đầu bạn truy cập và Remote Host bạn sẽ có thông báo sau:
Bạn chỉ cần nhập vào yes
sau đó là phím <ENTER> là được. Tiếp theo công cụ sẽ quét tìm id_rsa.pub
mà ta đã tạo, khi tìm kiếm thành công nó sẽ yêu cầu bạn nhập mật khẩu của tài khoản SSH
Vì lý do bảo mật nên khi nhập, mật khẩu sẽ bị ẩn đi. Sau khi hoàn thành bấm <Enter> và công cụ sẽ tự động kết nối tới tài khoản và copy key public ~/.ssh/id_rsa.pub
vào file trên server ~/.ssh/username/authorized_keys/
.
3. Copy thủ công
Nếu như cả 2 cách trên đều không khả dụng, thì cách thủ công này là lựa chọn tuyệt vời. Tuy vậy nó sẽ khá khó khăn cho người mới và bạn sẽ phải làm mọi thứ.
Bạn cần mở xem nội dung của Public key tại id_rsa.pub
.
Tiếp theo, bạn cần truy cập vào server và tạo thư mực ~/.ssh
nếu chưa có bằng cách:
Bây giờ, bạn sẽ cần copy toàn bộ nội dung của id_rsa.pub
Vào file authorized_keys
.
Bạn cần phân quyền cho thư mục trên như sau :
.ssh:
700 (drwx------)
authorized_keys:
600 (-rw-r--r--)
Bước 3: Xác thực bằng SSH Key
Bạn đã hoàn thành việc thêm SSH Key và có thể đăng nhập vào server mà không cần mật khẩu. Để đăng nhập bạn nhập lệnh sau:
Nếu bạn sử dụng khoá khác thì có thể sử dụng tuỳ chọn
-i đường_dẫn_tới_file
để chỉ định file khoá để xác thực
Nếu đây là lần đầu bạn truy cập và Remote Host bạn sẽ có thông báo sau:
Bạn chỉ cần nhập vào yes
sau đó là phím <Enter> là được. Sau đó bạn sẽ tự động đăng nhập vào server (Nếu bạn có thêm passpharse thì hệ thống sẽ yêu cầu bạn nhập vào).
Bước 4: Tắt xác thực bằng mật khẩu trên Server
Đăng nhập bằng SSH key không yêu cầu mật khẩu của username vì thế bạn có thể tắt chức năng này đi bằng cách đăng nhập vào server và mở file cấu hình SSH
Tìm tới mục PasswordAuthentication
và để giá trị của nó thành no
.
Thông tin: Mục này có thể đang ở chế độ `comment` với kí hiệu # ở trước. Bạn chỉ cần xoá kí hiệu đi để bỏ chế độ comment.
Lưu lại và khởi động lại service:
Lưu ý: Bạn cần giữ kết nối SSH hiện tại và mở thêm 1 kết nối SSH dự phòng trước khi restart service ssh tránh trường hợp cầu hình bị lỗi và không thể đăng nhập và server.
Kết luận
Bây giờ bạn đã hoàn thành xác thực bằng SSH Key trên server của mình. Việc sử dụng SSH thay thế cho mật khẩu phổ thông ngày nay càng được ưa chuộng vì tính bảo mật của mình, mong qua bài hôm nay bạn đã hiểu hơn về SSH. Tạm biệt và hẹn gặp lại !
Tính năng đang được phát triển