Hướng Dẫn Xác Thực SSH Trên Linux
Khi làm việc với các máy chủ từ xa, cách phổ biến nhất để kết nối là thông qua SSH (Secure Shell). Nếu bạn đã từng quản lý các máy chủ Linux hoặc triển khai ứng dụng, có lẽ bạn đã sử dụng nó. Trong bài viết này, chúng ta sẽ tìm hiểu SSH là gì, cách sử dụng nó để đăng nhập và cuối cùng là cách thiết lập đăng nhập không cần mật khẩu trên nhiều máy chủ.
SSH Là Gì?
SSH (Secure Shell) là một giao thức cho phép chúng ta kết nối an toàn đến một máy khác qua mạng không an toàn. Nó được sử dụng rộng rãi bởi các nhà phát triển, quản trị hệ thống và kỹ sư DevOps để:
- Đăng nhập vào các máy chủ từ xa
- Chạy các lệnh
- Chuyển file
- Quản lý hệ thống một cách an toàn
Khác với các phương pháp cũ như Telnet, SSH mã hóa toàn bộ thông tin liên lạc. Điều này có nghĩa là thông tin xác thực và dữ liệu của chúng ta được bảo vệ khỏi việc nghe lén.
Cách Đăng Nhập Qua SSH
Cú pháp cơ bản để đăng nhập SSH là:
ssh username@hostname
username→ tài khoản người dùng trên máy chủ từ xahostname→ địa chỉ IP hoặc tên miền của máy chủ
Ví Dụ
Nếu chúng ta có một máy chủ tại 172.16.238.10 với người dùng là tony:
ssh tony@172.16.238.10
Bạn sẽ được yêu cầu nhập mật khẩu cho người dùng đó. Khi xác thực thành công, bạn sẽ nhận được một shell trên máy tính từ xa.
Vấn Đề Với Mật Khẩu
Nhập mật khẩu mỗi khi đăng nhập nhanh chóng trở nên phiền phức, đặc biệt khi chúng ta cần đăng nhập vào nhiều máy chủ hoặc chạy các script tự động. Mật khẩu cũng tiềm ẩn nhiều rủi ro bảo mật nếu chúng yếu hoặc được tái sử dụng.
Đây là lúc khóa SSH phát huy tác dụng.
Đăng Nhập SSH Không Cần Mật Khẩu
Khóa SSH cho phép chúng ta xác thực mà không cần gõ mật khẩu. Ý tưởng rất đơn giản:
- Tạo một cặp khóa trên máy tính cục bộ (khóa riêng + khóa công).
- Sao chép khóa công lên máy chủ từ xa.
- Khi kết nối, máy chủ xác minh khóa riêng của chúng ta với khóa công đã lưu trữ.
Nếu chúng khớp, chúng ta có thể đăng nhập mà không cần mật khẩu.
Bước 1: Tạo Khóa SSH
Trên máy khách (trong trường hợp của chúng ta, máy chủ nhảy với người dùng thor):
ssh-keygen -t rsa -b 4096
- Nhấn Enter để chấp nhận các tùy chọn mặc định.
- Để trống passphrase (quan trọng cho tự động hóa).
Điều này sẽ tạo ra hai file:
~/.ssh/id_rsa→ khóa riêng của bạn (giữ an toàn!)~/.ssh/id_rsa.pub→ khóa công của bạn (chia sẻ với các máy chủ)
Bước 2: Sao Chép Khóa Công Lên Máy Chủ
Để kích hoạt đăng nhập không cần mật khẩu, sao chép khóa công lên máy chủ:
ssh-copy-id -i ~/.ssh/id_rsa.pub username@hostname
Ví Dụ
Đối với một máy chủ tại 172.16.238.10 với người dùng tony:
ssh-copy-id -i ~/.ssh/id_rsa.pub tony@172.16.238.10
Bạn sẽ được yêu cầu nhập mật khẩu một lần cuối. Sau đó, bạn sẽ có thể đăng nhập mà không cần mật khẩu nữa.
Bước 3: Đăng Nhập Mà Không Cần Mật Khẩu
Bây giờ hãy thử nghiệm:
ssh tony@172.16.238.10
Lần này bạn có thể kết nối trực tiếp mà không cần nhập mật khẩu.
Ví Dụ Thực Tế: Nhiều Máy Chủ Ứng Dụng
Dưới đây là một cấu hình thực tế mà chúng tôi đã phải thiết lập đăng nhập không cần mật khẩu cho người dùng máy chủ nhảy (thor) đến nhiều máy chủ ứng dụng.
| Tên Máy Chủ | IP | Tên Miền | Người Dùng | Mật Khẩu | Mục Đích |
|---|---|---|---|---|---|
| stapp01 | 172.16.238.10 | stapp01.stratos.xfusioncorp.com | tony | Ir0nM@n | Ứng Dụng Nautilus 1 |
| stapp02 | 172.16.238.11 | stapp02.stratos.xfusioncorp.com | steve | Am3ric@ | Ứng Dụng Nautilus 2 |
| stapp03 | 172.16.238.12 | stapp03.stratos.xfusioncorp.com | banner | BigGr33n | Ứng Dụng Nautilus 3 |
Chúng tôi đã chạy:
ssh-copy-id -i ~/.ssh/id_rsa.pub tony@172.16.238.10
ssh-copy-id -i ~/.ssh/id_rsa.pub steve@172.16.238.11
ssh-copy-id -i ~/.ssh/id_rsa.pub banner@172.16.238.12
Bây giờ, người dùng thor có thể đăng nhập vào tất cả các máy chủ ứng dụng mà không cần nhập mật khẩu.
sudo Không Cần Mật Khẩu
Đôi khi, các script của chúng tôi cần quyền sudo. Theo mặc định, sudo yêu cầu mật khẩu. Chúng tôi có thể cấu hình người dùng cho sudo không cần mật khẩu.
Trên mỗi máy chủ ứng dụng, chỉnh sửa file sudoers:
sudo visudo
Thêm:
username ALL=(ALL) NOPASSWD:ALL
Thay thế username bằng tony, steve, hoặc banner.
Kết Luận
- Tự động hóa các script
- Quản lý nhiều máy chủ một cách dễ dàng
- Tăng cường bảo mật với khóa thay vì mật khẩu
Hãy bắt tay vào thực hiện các bước trên để cải thiện trải nghiệm làm việc với SSH và đạt được hiệu quả cao hơn trong quản lý máy chủ của bạn!