IoTLabs

Nghiên cứu, Sáng tạo và Thử nghiệm

Series: Raspberry Pi OS – Bài 10: SSH vào Raspberry Pi từ Windows, macOS và Linux

> Phần 3 — Mạng và truy cập từ xa

SSH là cách phổ biến nhất để điều khiển Raspberry Pi từ xa qua terminal. Raspberry Pi documentation mô tả đây là phương thức truy cập terminal của Raspberry Pi từ một máy khác trong cùng mạng bằng giao thức Secure Shell, và cũng nhấn mạnh rằng SSH bị tắt mặc định trên Raspberry Pi OS cho tới khi bạn bật nó lên.

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 là gì và khi nào nên dùng
  • biết cách bật SSH trên Raspberry Pi
  • biết cách SSH vào Raspberry Pi từ Windows, macOS và Linux
  • biết dùng hostname hoặc IP để kết nối
  • hiểu các lỗi SSH thường gặp khi mới bắt đầu
  • biết khi nào nên chuyển từ password sang SSH key

SSH là gì?

SSH là viết tắt của Secure Shell. Với Raspberry Pi, đây là cách bạn mở terminal của Pi từ một máy khác trong mạng mà không cần cắm màn hình hay bàn phím trực tiếp. Raspberry Pi documentation xem SSH là cách chuẩn để truy cập terminal từ xa và đặt nó trong nhóm tính năng remote access chính thức.

SSH đặc biệt hữu ích khi bạn dùng Raspberry Pi theo kiểu:

  • headless
  • mini server
  • MQTT gateway
  • máy học Linux
  • thiết bị IoT đặt cố định ở nơi khác

Trước khi SSH, cần có những gì?

Để SSH vào Raspberry Pi, bạn cần đủ ba điều kiện cơ bản:

  • Raspberry Pi đã kết nối mạng
  • SSH server đã được bật trên Raspberry Pi
  • bạn biết hostname hoặc IP address của Raspberry Pi

Raspberry Pi documentation cho biết bạn có thể preconfigure hostname, user account, network connection và SSH ngay khi cài hệ điều hành bằng Raspberry Pi Imager, đây là cách rất tiện cho headless setup.

Cách bật SSH trên Raspberry Pi

Raspberry Pi documentation liệt kê nhiều cách bật SSH, gồm bật từ desktop, bật trong lúc ghi image bằng Imager, bật từ terminal qua raspi-config, hoặc bật thủ công.

Cách 1: Bật SSH bằng Raspberry Pi Imager

Khi cài Raspberry Pi OS mới, đây là cách nên dùng nhất. Trong phần customisation của Imager, vào mục Remote Access rồi bật Enable SSH. Raspberry Pi cho phép bạn chọn:

  • Use password authentication
  • Use public key authentication

Cách 2: Bật SSH bằng raspi-config

Nếu Raspberry Pi đã boot xong, bạn có thể chạy:

sudo raspi-config

và vào phần interface options để bật SSH. Raspberry Pi documentation cũng nêu lệnh không tương tác:

sudo raspi-config nonint do_ssh 0

trong đó 0 là bật SSH, 1 là tắt SSH.

Cách 3: Bật SSH từ desktop

Nếu bạn đang dùng giao diện desktop, Raspberry Pi documentation hướng dẫn mở Control Centre, vào tab Interfaces, rồi bật SSH tại đó.

Cần dùng hostname hay IP?

Bạn có thể SSH vào Raspberry Pi bằng:

  • hostname
  • IP address

Nếu hostname của Raspberry Pi là pi-study-01, bạn thường có thể thử:

ssh user@pi-study-01.local

Còn nếu biết IP, bạn có thể dùng trực tiếp:

ssh user@192.168.1.120

Raspberry Pi documentation giải thích hostname là tên mDNS của thiết bị trên mạng và cũng có tài liệu riêng về việc tìm IP của Raspberry Pi khi cần remote access.

SSH từ macOS

Trên macOS, bạn có sẵn lệnh ssh trong Terminal, nên không cần cài thêm phần mềm riêng để SSH. Điều này phù hợp với cách Raspberry Pi documentation hướng dẫn truy cập terminal từ xa qua SSH bằng máy khác trong cùng mạng.

Cách dùng

Mở Terminal và nhập:

ssh username@hostname.local

Ví dụ:

ssh quan@pi-study-01.local

Hoặc dùng IP:

ssh quan@192.168.1.120

Nếu là lần đầu kết nối, macOS sẽ hỏi xác nhận fingerprint của host. Bạn gõ yes, rồi nhập password của user trên Raspberry Pi để đăng nhập.

SSH từ Linux

Trên phần lớn bản phân phối Linux, lệnh ssh cũng đã có sẵn hoặc rất dễ cài. Cách dùng giống macOS:

ssh username@hostname.local

hoặc:

ssh username@ip-address

Ví dụ:

ssh quan@pi-study-01.local

hoặc:

ssh quan@192.168.1.120

Về mặt thực hành, Linux và macOS gần như giống nhau ở phần SSH terminal, vì đều dùng OpenSSH client trong terminal. Cách này hoàn toàn phù hợp với hướng dẫn remote access chính thức của Raspberry Pi.

SSH từ Windows

Trên Windows hiện đại, cách dễ nhất là dùng PowerShell hoặc Windows Terminal, vì Windows đã hỗ trợ lệnh ssh trong nhiều cấu hình phổ biến hiện nay. Về mặt nguyên tắc kết nối, bạn vẫn dùng đúng cú pháp SSH chuẩn như Raspberry Pi documentation mô tả.

Cách dùng với PowerShell hoặc Windows Terminal

ssh username@hostname.local

Ví dụ:

ssh quan@pi-study-01.local

Hoặc:

ssh quan@192.168.1.120

Nếu hostname .local không resolve được trên máy Windows của bạn, hãy dùng IP trực tiếp. Trong thực tế, đây là cách ổn định hơn khi mới bắt đầu.

Dùng PuTTY có được không?

Có thể, nhưng nếu máy bạn đã dùng được ssh trong PowerShell thì thường không cần cài thêm. Với người mới, giữ mọi thứ theo SSH chuẩn trong terminal sẽ đơn giản hơn.

Lần đầu SSH vào Raspberry Pi sẽ thấy gì?

Lần đầu kết nối, bạn thường gặp thông báo dạng xác nhận host key. Đây là cơ chế bình thường của SSH để bạn xác nhận đang kết nối tới đúng thiết bị lần đầu tiên.

Sau khi xác nhận, bạn nhập password của user trên Raspberry Pi. Nếu đúng, bạn sẽ vào terminal của Pi.

Ví dụ prompt sau khi vào máy có thể giống:

quan@pi-study-01:~ $

Nếu dùng password authentication

Khi SSH được bật theo chế độ password authentication, bạn đăng nhập bằng:

  • username đã tạo trên Raspberry Pi
  • password của user đó

Raspberry Pi documentation nêu rõ trong Imager bạn có thể chọn Use password authentication để đăng nhập bằng cùng username và password bạn dùng khi trực tiếp sử dụng Raspberry Pi.

Khi nào nên chuyển sang SSH key?

Nếu bạn SSH thường xuyên, Raspberry Pi khuyến nghị dùng public key authentication thay vì chỉ dựa vào password. Documentation về remote access cho biết trong Imager bạn có thể chọn luôn Use public key authentication để cấu hình SSH key-based authentication ngay từ đầu.

SSH key có lợi ở chỗ:

  • an toàn hơn password đơn thuần
  • không phải nhập password mỗi lần
  • tiện khi quản lý nhiều Raspberry Pi

Với người mới, bạn có thể bắt đầu bằng password trước, rồi chuyển sang SSH key ở bài nâng cao hơn.

Cách kiểm tra SSH đã hoạt động chưa

Nếu bạn chưa SSH vào được, trước tiên kiểm tra xem Raspberry Pi đã có mạng chưa và SSH đã được bật chưa. Bạn cũng nên xác nhận hostname hoặc IP bằng các lệnh:

hostname
ip a

Raspberry Pi documentation có cả mục riêng về tìm IP của Raspberry Pi khi remote access, cho thấy đây là bước chẩn đoán rất cơ bản.

Một số lệnh SSH mẫu

SSH bằng hostname

ssh quan@pi-study-01.local

SSH bằng IP

ssh quan@192.168.1.120

Chạy một lệnh từ xa

Bạn cũng có thể SSH và chạy nhanh một lệnh:

ssh quan@192.168.1.120 "hostname && uptime"

Kiểu này rất tiện khi bạn chỉ muốn kiểm tra nhanh trạng thái máy.

Những lỗi SSH thường gặp

1. Connection refused

Lỗi này thường có nghĩa là Raspberry Pi đã lên mạng nhưng SSH chưa bật hoặc dịch vụ SSH chưa chạy đúng. Raspberry Pi documentation nhấn mạnh rằng SSH bị tắt mặc định, nên nếu quên bật thì đây là lỗi rất hay gặp.

2. Could not resolve hostname

Lỗi này thường do:

  • hostname gõ sai
  • .local không resolve được trên máy bạn
  • Raspberry Pi chưa vào đúng mạng

Khi đó, hãy chuyển sang dùng IP trực tiếp.

3. Permission denied

Lỗi này thường do:

  • sai username
  • sai password
  • bạn đang thử dùng key nhưng key không đúng
  • SSH đang bật theo phương thức xác thực khác với cách bạn dùng

4. No route to host / timeout

Thường do Raspberry Pi chưa vào mạng, sai IP, hoặc thiết bị không cùng mạng LAN với máy bạn.

5. Vào được một lần rồi lần sau báo cảnh báo host key

Điều này có thể xảy ra nếu IP cũ đã được cấp cho thiết bị khác hoặc bạn vừa cài lại Raspberry Pi OS. Khi đó cần kiểm tra lại host key cache trên máy client.

Mẹo dùng SSH dễ hơn khi mới bắt đầu

Ưu tiên dùng Ethernet nếu đang debug mạng

Nếu Wi-Fi đang làm bạn rối, Ethernet thường là cách dễ nhất để SSH ổn định lần đầu.

Gán hostname rõ ràng

Tên như pi-study-01, pi-gateway-lab, pi-home-server dễ nhớ hơn nhiều so với để tên chung chung.

Kiểm tra mạng trước rồi mới đổ lỗi cho SSH

Rất nhiều trường hợp vấn đề không nằm ở SSH mà nằm ở việc Pi chưa có IP.

Bật SSH ngay từ Imager

Đây là cách sạch và ít lỗi nhất cho headless setup.

Khi nào nên dùng Raspberry Pi Connect thay vì SSH?

Nếu bạn muốn truy cập Raspberry Pi từ trình duyệt hoặc từ ngoài mạng nội bộ mà không phải tự tìm IP public hay sửa firewall, Raspberry Pi có Raspberry Pi Connect. Documentation mô tả Connect có thể xử lý cấu hình giúp bạn và không bắt bạn tự xử lý IP public hay mở firewall. Ngoài ra, Raspberry Pi cũng đã bổ sung remote shell access trong Raspberry Pi Connect, phù hợp cho cả thiết bị không chạy desktop.

Tuy nhiên, trong phạm vi bài này, SSH trong LAN vẫn là bước nền tảng quan trọng nhất cần nắm chắc trước.

Checklist sau bài học

[ ] Raspberry Pi đã có mạng
[ ] SSH đã được bật
[ ] Biết hostname hoặc IP của Raspberry Pi
[ ] SSH được từ máy đang dùng
[ ] Hiểu khi nào dùng hostname, khi nào dùng IP
[ ] Biết lỗi SSH cơ bản để tự kiểm tra

Kết luận

SSH là kỹ năng bắt buộc nếu bạn muốn dùng Raspberry Pi theo kiểu headless hoặc quản lý thiết bị từ xa. Trên cả Windows, macOS và Linux, cách dùng cơ bản đều rất giống nhau: bật SSH trên Raspberry Pi, biết hostname hoặc IP, rồi kết nối bằng lệnh ssh username@hostname.local hoặc ssh username@ip-address. Raspberry Pi documentation cũng khuyến khích bạn bật SSH đúng cách từ Imager hoặc raspi-config, và cân nhắc chuyển sang SSH key khi dùng lâu dài.

Bài tiếp theo

Bài 11: Dùng SSH key để đăng nhập an toàn hơn