SSH vào Pi qua Cloudflare Tunnel và Access
Tóm tắt
Không phải ingest từ tài liệu có sẵn — đây là ghi chú thao tác trực tiếp: dựng SSH-over-Cloudflare-Tunnel vào Raspberry Pi theo đúng mô hình đã dùng cho cf:vtech:tam (một máy homelab khác, xem ~/.ssh/config). Mục tiêu: SSH vào Pi qua domain homelab.nguyenbinhson.com mà không cần mở cổng SSH ra WAN, có lớp xác thực Cloudflare Access (email OTP) đứng trước.
Điểm chính
- Cài
cloudflared(bản arm64, deb) trực tiếp trên Pi — trước đó Pi không còn cloudflared ở tầng hệ điều hành sau khi cài lại OS (chỉ còn container riêng cho WordPress). cloudflared tunnel logincần thao tác thủ công: mở URL, chọn domainnguyenbinhson.com, authorize trên trình duyệt — bước này không thể tự động hoá qua SSH.- Tạo tunnel mới tên
homelab-ssh(IDbdcd1edd-f39b-47ad-b14e-0e4a55bcbf97). - Config đặt tại
/etc/cloudflared/(không phải~/.cloudflared/) vìcloudflared service installchạy dưới root — cùng lý do đã ghi trong vibe-companion-va-cloudflare-tunnel-tren-raspberry-pi. - Ingress rule dùng
service: ssh://localhost:22(khác với Companion dùnghttp://localhost:3456) — cloudflared proxy nguyên giao thức SSH qua tunnel. - DNS:
cloudflared tunnel route dns homelab-ssh homelab.nguyenbinhson.comtự tạo CNAME trỏ về<tunnel-id>.cfargotunnel.com. - Cài làm systemd service (
cloudflared.service), chạy ổn định. - Cloudflare Access Application tạo thủ công trên Zero Trust Dashboard: type Self-hosted, domain
homelab.nguyenbinhson.com, policy “Only me” (Allow theo email cá nhân) — giống hệt policy đã dùng cho Companion. - Client-side: thêm alias
cf:home:pivào~/.ssh/config, dùngProxyCommand /opt/homebrew/bin/cloudflared access ssh --hostname %h— cùng mẫu vớicf:vtech:tam. - Lần kết nối đầu tiên:
cloudflared access sshtự mở trình duyệt để xác thực OTP qua Access; sau khi qua Access, SSH vẫn yêu cầu xác thực SSH bình thường (key/password) — Access chỉ là lớp network-level phía trước, không thay thế xác thực SSH. - Đã test thành công:
ssh cf:home:pivào được Pi (hostname,whoamitrả về đúng).
Khái niệm
Người liên quan
Câu hỏi mở
- Tunnel
homelab-sshlà tunnel riêng cho SSH, tách biệt với tunnel WordPress đang chạy trong Docker — có nên gộp chung một tunnel với nhiều ingress rule (SSH + HTTP) để dễ quản lý hơn không?