Nếu bạn dùng Linux đã một thời gian, chắc hẳn bạn đã nghe về công cụ gọi là SSH. Secure Shell, thường gọi là SSH, là giao thức mạng để thiết lập kết nối an toàn giữa client và server từ xa. Nó được thiết kế để cho phép người dùng đăng nhập an toàn vào các loại máy tính khác nhau từ xa qua mạng. Ở đây chúng tôi chỉ cách thiết lập và sao chép khóa SSH đến server dễ dàng.
Cài đặt SSH
Để bắt đầu, chúng ta phải cài đặt SSH server. Bạn có thể tìm và cài gói openssh-server trong Software Center hoặc trình quản lý gói. Hoặc, nếu bạn đang trên server (hoặc chỉ thích dùng terminal), mở terminal và gõ lệnh:
# Ubuntu/Debian sudo apt install openssh-server # Fedora/CentOS/REHL sudo dnf install openssh-server
Kích hoạt SSH trong Linux
Sau khi cài OpenSSH server, bạn cần khởi động và kích hoạt unit systemd. Để làm điều đó, gõ lệnh sau vào terminal:
sudo systemctl enable --now ssh
Tạo khóa SSH
Sau khi cài openssh server, bạn có thể bắt đầu tạo cặp khóa SSH. Trước khi tiến hành, hãy đảm bảo bạn không có cặp khóa hiện có, vì quá trình này sẽ ghi đè khóa cũ.
Để kiểm tra xem bạn có cặp khóa hiện có, dùng lệnh:
ls -la ~/.ssh
Nếu bạn có cặp khóa hiện có, lệnh trên sẽ hiển thị file "id_rsa" và "id_rsa.pub".
Sau khi xác thực bạn không có cặp khóa SSH hiện có, bạn có thể tạo cặp mới. Nếu không, hãy backup khóa cũ để tránh mất.
Để tạo khóa mới, dùng lệnh:
ssh-keygen -t rsa -b 4096
Lệnh trên gọi tiện ích ssh-keygen để tạo cặp khóa SSH tương tác. Dùng tùy chọn -t để chỉ định loại khóa tạo. Ở đây tạo khóa RSA.
Chúng ta cũng dùng tùy chọn -b để chỉ định số bit trong khóa. Nếu dùng khóa RSA, kích thước bit tối thiểu là 1024. Nếu không chỉ định, nó sẽ tạo khóa 3072 bit.
Nên dùng vị trí mặc định để lưu khóa SSH để tránh gõ đường dẫn khi kết nối SSH dùng khóa.
Nếu bạn không muốn mã hóa khóa bằng passphrase, nhấn Enter để bỏ qua.
Sao chép khóa đến Server từ xa
Bây giờ chúng ta đã tạo cặp khóa SSH mới, cần tải nó lên máy từ xa muốn quản lý.
Cách hiệu quả nhất là dùng lệnh ssh-copy-id. Dùng lệnh như sau:
ssh-copy-id remote_user@remote_IP
Nếu bạn dùng keyfile với tên file riêng biệt, dùng lệnh sau để chỉ định đường dẫn keyfile:
ssh-copy-id -i ~/.ssh/id_rsa remote_user@remote_IP
Nếu bạn đăng nhập vào máy từ xa lần đầu, bạn cần chấp nhận fingerprint.
Tiếp theo, nhập mật khẩu SSH cho remote user.
Sau khi xác thực, lệnh ssh-copy-id sẽ nối nội dung khóa id_rsa.pub của bạn vào file "~/.ssh/authorized_keys" trên máy từ xa và đóng kết nối.
Đăng nhập vào máy từ xa
Sau khi hoàn thành thành công các bước trên, bạn có thể đăng nhập vào server từ xa mà không cần mật khẩu.
Bạn có thể kiểm tra bằng lệnh:
ssh remote_user@remote_ip
Trừ khi bạn bật passphrase cho khóa, bạn sẽ được đăng nhập tự động.
Câu hỏi thường gặp
1. SSH có an toàn không?
SSH là công cụ bảo mật mạnh cho phép người dùng xác thực đăng nhập vào hệ thống từ xa. Tuy nhiên, nó chỉ an toàn bằng mức độ file cấu hình cho phép. Server SSH chưa cấu hình/sai cấu hình có thể dễ bị hacker và bên thứ ba truy cập. Hãy chắc chắn bảo mật cấu hình SSH ngay sau khi cài đặt.
2. File SSH authorized_keys ở đâu?
File SSH authorized_keys chứa public key của mỗi user và chỉ định user nào được phép đăng nhập vào server. Trong Linux, file authorized_keys thường nằm trong thư mục ".ssh" trong thư mục Home của user.
3. Cách khắc phục lỗi ssh-copy-id permission denied?
Điều này chỉ xảy ra khi bạn đã có public key trên remote server và đã tắt xác thực mật khẩu. Để khắc phục, trước tiên đăng nhập vào server, bật xác thực mật khẩu trong file "/etc/ssh/sshd_config", rồi chạy lại lệnh ssh-copy-id.
Sau khi sao chép keyfile mới, nhớ tắt lại tùy chọn xác thực mật khẩu.
Kết luận
Bây giờ bạn đã thiết lập và dùng SSH, việc tiếp theo là bảo mật cấu hình SSH. Hoặc, nếu bạn dùng Windows, hãy học cách tạo cặp khóa SSH trong Windows.