Sau khi đã biết cách SSH vào Raspberry Pi từ Windows, macOS và Linux, bước tiếp theo rất nên học là dùng SSH key. Tài liệu chính thức của Raspberry Pi nêu rõ: để truy cập Raspberry Pi từ xa mà không cần nhập password mỗi lần, bạn nên dùng SSH keypair; đồng thời Raspberry Pi Imager cũng hỗ trợ cấu hình public key authentication ngay từ lúc tạo image.
Mục tiêu sau bài học
Sau khi hoàn thành bài này, bạn nên đạt được các mục tiêu sau:
- hiểu SSH key là gì và vì sao an toàn hơn password
- hiểu sự khác nhau giữa public key và private key
- biết cách dùng Raspberry Pi Imager để bật public key authentication
- biết cách đăng nhập vào Raspberry Pi bằng SSH key
- hiểu các lỗi phổ biến khi dùng SSH key
- biết nguyên tắc bảo vệ private key đúng cách
SSH key là gì?
SSH key là một cặp khóa dùng để xác thực khi đăng nhập qua SSH. Cặp này gồm:
- public key: khóa công khai, có thể đặt lên Raspberry Pi
- private key: khóa riêng, phải giữ ở máy của bạn
Cách hoạt động cơ bản là: Raspberry Pi giữ public key, còn máy của bạn giữ private key. Khi bạn SSH vào Pi, SSH client dùng private key để chứng minh rằng bạn đúng là người sở hữu khóa tương ứng. Raspberry Pi documentation mô tả đúng hướng này khi hướng dẫn cấu hình SSH without a password bằng SSH keypair.
Vì sao SSH key an toàn hơn password?
SSH key thường an toàn hơn đăng nhập bằng password vì:
- bạn không phải nhập password mỗi lần
- khó bị brute-force hơn kiểu password thông thường
- phù hợp hơn cho máy headless hoặc khi quản lý nhiều Raspberry Pi
Raspberry Pi documentation khuyến nghị dùng public key authentication để cấu hình Raspberry Pi sử dụng xác thực bằng khóa SSH thay vì chỉ dùng password.
Public key và private key khác nhau thế nào?
Đây là phần rất quan trọng:
Public key
Đây là khóa bạn có thể đưa cho Raspberry Pi. Nó không phải bí mật. Trong Raspberry Pi Imager, khi chọn Use public key authentication, bạn sẽ điền hoặc chọn public key để ghi vào image. Nếu máy bạn đã có public RSA key trong cấu hình SSH, Imager có thể tự dùng khóa đó; nếu chưa có, bạn có thể dán hoặc chọn file public key thủ công.
Private key
Đây là khóa bí mật phải nằm trên máy của bạn. Bạn không đưa private key cho Raspberry Pi. Raspberry Pi forum giải thích rõ rằng phần “allowed keys” trong Imager chỉ cần public key, còn SSH client trên máy bạn sẽ tự lấy private key từ thư mục SSH cục bộ khi kết nối.
Khi nào nên chuyển sang SSH key?
Bạn nên cân nhắc chuyển sang SSH key khi:
- bạn dùng Raspberry Pi headless thường xuyên
- bạn SSH vào Pi hằng ngày
- bạn quản lý nhiều Raspberry Pi
- bạn muốn giảm phụ thuộc vào password login
Với người mới, có thể bắt đầu bằng password trước. Nhưng khi đã SSH ổn định, chuyển sang SSH key là bước nâng cấp bảo mật rất đáng làm. Raspberry Pi documentation đã tích hợp hướng dẫn này trực tiếp trong phần remote access và getting started.
Cách dễ nhất: cấu hình SSH key ngay từ Raspberry Pi Imager
Đây là cách sạch và ít lỗi nhất.
Khi cấu hình image bằng Raspberry Pi Imager:
- vào phần Remote Access
- bật Enable SSH
- chọn Use public key authentication
- cung cấp public key của bạn
Tài liệu chính thức của Raspberry Pi mô tả đúng các bước này, và cũng nói rằng nếu máy bạn đã có public RSA key trong cấu hình SSH thì Imager có thể tự dùng khóa đó; nếu chưa có, bạn có thể dán hoặc duyệt chọn file public key trên máy.
Nếu đã cài Raspberry Pi OS rồi thì sao?
Nếu Raspberry Pi đã cài xong và đang dùng password SSH bình thường, bạn vẫn có thể chuyển sang SSH key sau đó bằng cách thêm public key vào file authorized_keys của user tương ứng.
Về nguyên tắc, Raspberry Pi cần biết public key nào được phép đăng nhập. Raspberry Pi forum cũng nhấn mạnh rằng public key là phần được đặt vào phía máy đích, còn private key luôn ở máy khách.
Quy trình tư duy đúng khi dùng SSH key
Hãy nhớ quy tắc ngắn này:
- Pi giữ public key
- Máy của bạn giữ private key
- Không bao giờ chép private key lên Raspberry Pi
Nếu bạn làm sai bước cuối, mô hình bảo mật gần như mất ý nghĩa.
SSH key nằm ở đâu trên máy của bạn?
Điều này tùy hệ điều hành và SSH client, nhưng về logic chung, SSH client sẽ tìm private key trong thư mục cấu hình SSH cục bộ của bạn. Raspberry Pi forum mô tả rõ rằng khi bạn dùng chương trình ssh, nó sẽ lấy private key từ thư mục home SSH của bạn, còn hệ điều hành trên Pi chỉ cần public key.
Dùng SSH key có cần bật SSH không?
Có. SSH key chỉ là cách xác thực đăng nhập; còn dịch vụ SSH trên Raspberry Pi vẫn phải được bật trước. Tài liệu Raspberry Pi nêu rõ SSH mặc định bị tắt, và có thể bật bằng Imager, desktop control centre hoặc raspi-config. Ngoài ra, raspi-config nonint do_ssh 0 là lệnh không tương tác để bật SSH.
Đăng nhập bằng SSH key trông như thế nào?
Khi mọi thứ đã cấu hình đúng, bạn vẫn dùng lệnh SSH quen thuộc:
ssh username@hostname.local
hoặc:
ssh username@ip-address
Khác biệt là thay vì hỏi password mỗi lần, SSH client sẽ dùng private key của bạn để xác thực. Raspberry Pi documentation mô tả đây là cách “configure SSH without a password.”
Ví dụ:
ssh quan@pi-study-01.local
hoặc:
ssh quan@192.168.1.120
Có thể dùng “public-key only” không?
Có. Trong Raspberry Pi Imager, bạn có thể chọn Use public key authentication để cấu hình Raspberry Pi dùng xác thực dựa trên khóa công khai. Tài liệu getting started và remote access đều mô tả lựa chọn này trong Imager.
Về mặt bảo mật, đây là hướng chặt chẽ hơn so với chỉ dùng password, đặc biệt cho máy headless hoặc máy mở SSH lâu dài trong LAN.
SSH key có thay thế hoàn toàn mọi rủi ro không?
Không. Nó giúp đăng nhập an toàn hơn, nhưng bạn vẫn nên:
- giữ private key cẩn thận
- đặt passphrase cho private key nếu phù hợp
- không chia sẻ tài khoản quản trị bừa bãi
- không để lộ Raspberry Pi ra internet công khai nếu chưa hiểu rõ firewall và hardening
SSH key là một lớp nâng cấp rất tốt, nhưng không phải “bật lên là xong hết mọi thứ”.
Những lỗi thường gặp khi dùng SSH key
1. Nhầm public key với private key
Đây là lỗi phổ biến nhất. Public key mới là thứ đưa vào Raspberry Pi hoặc Imager; private key phải ở lại máy bạn. Raspberry Pi documentation và forum đều phân biệt rất rõ hai phần này.
2. Tưởng phải chép private key sang Raspberry Pi
Không đúng. Nếu làm vậy là sai mô hình bảo mật.
3. Bật SSH key nhưng quên bật dịch vụ SSH
SSH vẫn phải được enable trước. Raspberry Pi documentation nói rõ SSH disabled by default và hướng dẫn cách bật nó.
4. Dùng sai user
Public key phải gắn với đúng user mà bạn định đăng nhập. Nếu bạn SSH bằng quan@... nhưng key lại được cấu hình cho user khác, bạn sẽ gặp lỗi xác thực.
5. Không giữ private key an toàn
Ai có private key của bạn thì về cơ bản có thể đăng nhập như bạn, nếu hệ thống chấp nhận khóa đó.
Khi nào nên dùng password, khi nào nên dùng SSH key?
Dùng password khi:
- bạn mới học SSH
- bạn chỉ test nhanh
- bạn đang ở giai đoạn làm quen
Dùng SSH key khi:
- bạn dùng Raspberry Pi thường xuyên
- bạn muốn đăng nhập an toàn hơn
- bạn quản lý nhiều Pi
- bạn dùng headless lâu dài
Raspberry Pi documentation rõ ràng nghiêng về hướng SSH key cho việc truy cập từ xa không cần password mỗi lần.
Một quy trình thực tế mình khuyên dùng
Với người mới, bạn có thể đi theo lộ trình này:
Giai đoạn 1
- bật SSH bằng password
- SSH vào được ổn định bằng hostname hoặc IP
Giai đoạn 2
- cấu hình SSH key trong Imager cho image mới, hoặc thêm public key vào máy đang dùng
- kiểm tra đăng nhập bằng key
Giai đoạn 3
- khi đã chắc chắn key hoạt động tốt, cân nhắc giảm phụ thuộc vào password login
Cách này giúp bạn hiểu từng bước, thay vì nhảy ngay vào cấu hình bảo mật mà chưa chắc mình đang đăng nhập bằng đường nào.
Checklist sau bài học
[ ] Hiểu public key và private key khác nhau thế nào
[ ] Biết public key là thứ đặt vào Raspberry Pi
[ ] Biết private key phải giữ trên máy của mình
[ ] Biết Raspberry Pi Imager hỗ trợ public key authentication
[ ] Biết SSH key giúp đăng nhập an toàn hơn so với chỉ dùng password
[ ] Biết các lỗi cơ bản khi cấu hình SSH key
Kết luận
SSH key là bước nâng cấp rất đáng làm sau khi bạn đã SSH vào Raspberry Pi bằng password thành công. Theo tài liệu chính thức của Raspberry Pi, đây là cách để truy cập Raspberry Pi từ xa không cần nhập password mỗi lần, và Raspberry Pi Imager đã hỗ trợ sẵn public key authentication trong quy trình cài đặt. Chỉ cần nhớ đúng nguyên tắc: Pi giữ public key, máy bạn giữ private key.
Bài tiếp theo
Bài 12: Khi nào nên dùng desktop, khi nào nên dùng headless?


