Lỗi Tailscale 403, session expired, logged out: cách sửa

Chia sẻ bài viết

Mục lục
Lỗi Tailscale 403, session expired, logged out: cách sửa

Trả lời nhanh: Nhóm lỗi 403 / session expired / logged out đều quy về một gốc: phiên xác thực không còn hiệu lực. Xử theo thứ tự: tailscale up (hoặc tailscale login) đăng nhập lại máy → nếu là admin console báo session expired thì đăng nhập lại trình duyệt → máy chạy dài hạn bị lặp lỗi thì vào console bật Disable key expiry để khóa máy không bao giờ hết hạn nữa.

Đây là nhóm lỗi Tailscale gặp nhiều nhất vì nó đến theo lịch: khóa máy (node key) có hạn dùng, hết hạn là mọi kết nối đứng hình kèm thông báo 403 hoặc logged out, thường vào đúng lúc bạn cần SSH gấp. Bài này tách từng thông báo trong nhóm, chỉ gốc rễ của mỗi ca và cách chặn tái diễn vĩnh viễn cho server.

Tóm tắt nhanh
  • error 403: user is not logged in: máy chưa/hết xác thực: tailscale up là xong đa số ca
  • session expired, log in again: phiên admin console trên trình duyệt hết hạn, không liên quan máy
  • you are logged out kèm last login error, tailscaled mất phiên: đọc phần lỗi kèm theo để biết gốc
  • Server bị lặp lỗi theo chu kỳ = key expiry: bật Disable key expiry trong console một lần là hết
  • Nút Sign in bấm không phản hồi là bệnh khác (webview), đăng nhập vòng qua CLI

Ba thông báo, ba chỗ hỏng khác nhau

Cùng chữ đăng nhập nhưng ba lỗi này sống ở ba tầng: error 403 user is not logged in nói về máy, tailscaled trên thiết bị không có phiên hợp lệ với control server; session expired nói về trình duyệt, phiên đăng nhập admin console hết hạn, mạng của bạn vẫn chạy bình thường; you are logged out là trạng thái máy đã bị đăng xuất, kèm dòng the last login error was... cho biết vì sao. Xác định đúng tầng trước khi gõ lệnh, sửa nhầm tầng là lý do nhiều người loay hoay cả buổi.

Xử ca máy: tailscale up và các biến thể

tailscale status
# NeedsLogin / Logged out -> dang nhap lai:
sudo tailscale up
# hoac chi dang nhap, khong dong den cau hinh:
tailscale login

Lệnh in ra link, mở trên trình duyệt bất kỳ, xác thực, máy sống lại ngay. Máy headless dùng auth key: sudo tailscale up --auth-key=tskey-auth-xxxxx. Nhớ bẫy quen thuộc: tailscale up reset các cờ không khai lại, máy đang làm exit node/subnet router thì khai đủ cờ cũ, hoặc đăng nhập bằng tailscale login rồi chỉnh lẻ bằng tailscale set (chi tiết trong bài Ubuntu toàn tập).

Chặn tái diễn cho server: Disable key expiry

Khóa máy mặc định hết hạn theo chu kỳ của tailnet (thường 180 ngày), hợp lý cho laptop, tai họa cho server không người trực: đến hẹn là VPS văng khỏi mạng giữa đêm. Vào admin console → Machines → máy cần giữ → menu ba chấm → Disable key expiry. Làm một lần cho mọi server, VPS, router trong mạng. Cách bền hơn cho hạ tầng nhiều máy: vào mạng bằng auth key gắn tag (tag:server), node theo tag không hết hạn theo user ngay từ đầu.

Session expired trên console và lỗi 401 khi gọi API

Admin console báo session expired: chỉ cần đăng nhập lại trình duyệt (phiên web ngắn hạn là chủ đích bảo mật); không có gì hỏng ở mạng. Error 401 khi gọi Tailscale API (script tự động, CI): API key hết hạn, key API có hạn tối đa 90 ngày, tạo key mới trong Settings → Keys và cập nhật vào secret của script. Đừng nhầm API key (gọi REST API) với auth key (đưa máy vào mạng), hai loại khác nhau, lỗi chữ giống nhau.

Nút Sign in không phản hồi: bệnh riêng, thuốc riêng

Bấm Sign in mà không có gì xảy ra không phải lỗi phiên, là webview/trình duyệt mặc định gãy, gặp nhiều trên Windows và Android. Thuốc theo nền tảng: Windows, cài Microsoft Edge WebView2 Runtime, đặt lại trình duyệt mặc định, hoặc né hẳn bằng CLI tailscale login; Android, cập nhật Android System WebView trên Play Store. Toàn cảnh chẩn đoán kết nối (khi đăng nhập xong vẫn không thông) nằm ở bài chẩn đoán 5 tầng.

Con số về hạn dùng, lấy từ tài liệu Tailscale

LoạiHạn mặc địnhGhi chú
Khóa máy (node key)180 ngày cho tailnet mớiHết hạn là mọi kết nối tới và đi từ máy đó ngừng hoạt động
Máy đã gắn thẻ (tag)Không hết hạnTài liệu Tailscale ghi rõ: máy được gắn thẻ lần đầu và xác thực xong thì hạn khóa mặc định bị tắt
Phiên đăng nhập trang quản trịNgắn, hết hạn thường xuyênChỉ ảnh hưởng trình duyệt, không ảnh hưởng mạng đang chạy

Điểm quan trọng nhất nằm ở dòng thứ hai: đưa máy chủ vào mạng bằng khóa xác thực có gắn thẻ thì node không hết hạn ngay từ đầu, khỏi phải nhớ vào bật tắt cho từng máy. Đây là cách làm đúng cho hạ tầng nhiều máy, còn nút Disable key expiry là cách chữa cho những máy đã lỡ vào mạng theo kiểu cũ.

Đưa máy chủ vào mạng theo cách không bao giờ hết hạn

# 1. Trong access control cua tailnet, khai thu so huu the:
#    "tagOwners": { "tag:server": ["autogroup:admin"] }
# 2. Tao auth key: Settings > Keys > Generate auth key
#    bat Reusable, gan Tags = tag:server
# 3. Tren may chu:
sudo tailscale up --auth-key=tskey-auth-xxxxx --advertise-tags=tag:server
tailscale status                   # kiem tra may hien dung ten va the

Kiểm nhanh máy nào sắp hết hạn: mở trang quản trị, mục Machines, cột Expires. Sắp xếp theo cột đó là thấy ngay danh sách máy cần xử lý trước. Máy đã tắt hạn khóa hiển thị chữ Disabled.

Ba tình huống hay gặp ở doanh nghiệp Việt Nam

  • VPS văng khỏi mạng lúc nửa đêm, không SSH vào được. Đúng chu kỳ 180 ngày kể từ ngày đưa máy vào mạng. Lối vào cuối cùng là console khẩn cấp của nhà cung cấp VPS, đăng nhập qua đó rồi chạy tailscale up. Đây là lý do phải giữ thông tin đăng nhập console ở nơi khác, không phải chỉ trên máy đó.
  • Kịch bản tự động hoặc CI báo lỗi 401. Đây là khóa gọi API hết hạn, khác hẳn khóa đưa máy vào mạng. Tạo khóa mới trong mục Settings, Keys, rồi cập nhật vào nơi lưu bí mật của kịch bản. Đừng nhầm hai loại khóa, tên gọi giống nhau nhưng dùng cho hai việc khác nhau.
  • Nhân viên nghỉ việc, máy của họ vẫn trong mạng. Xóa tài khoản người đó khỏi tailnet thì các máy do họ đưa vào cũng bị ảnh hưởng, trừ máy đã gắn thẻ vì máy gắn thẻ thuộc về thẻ chứ không thuộc về người. Thêm một lý do nữa để mọi máy chủ đều gắn thẻ ngay từ đầu.

Danh sách kiểm trước khi coi là xong

  • Mọi máy chủ và thiết bị mạng đều gắn thẻ hoặc đã tắt hạn khóa.
  • Khóa xác thực dùng cho máy chủ là loại tái sử dụng, không phải loại dùng một lần và không phải loại tự xóa khi máy offline.
  • Có ít nhất hai người trong tổ chức vào được trang quản trị, tránh việc một người nghỉ là không ai quản lý được.
  • Ghi lại ngày đưa từng máy chủ vào mạng, hoặc đơn giản hơn là đặt lịch nhắc rà cột Expires mỗi quý.
  • Giữ đường vào dự phòng cho mọi máy chủ quan trọng, không phụ thuộc hoàn toàn vào mạng riêng.

Câu hỏi thường gặp

Vì sao Tailscale bắt đăng nhập lại dù tôi không làm gì?

Khóa máy có hạn dùng mặc định, đến hạn là phải xác thực lại, đây là thiết kế an toàn chứ không phải lỗi. Máy chạy dài hạn thì tắt cơ chế này bằng Disable key expiry trong admin console.

Đăng nhập lại có mất cấu hình exit node, subnet router không?

Mất nếu bạn đăng nhập bằng tailscale up mà không khai lại cờ. Dùng tailscale login (chỉ xác thực) hoặc khai đủ cờ cũ trong lệnh up. Kiểm tra sau đăng nhập bằng tailscale status và admin console.

Lỗi 403 xuất hiện trên một máy nhưng máy khác vẫn chạy?

Bình thường, khóa mỗi máy hết hạn theo mốc riêng (tính từ lần xác thực của máy đó). Máy nào báo thì đăng nhập lại máy đó.

Bị logged out ngay sau khi vừa đăng nhập thành công?

Xem dòng last login error đi kèm: thường là fetch control key (mạng/giờ hệ thống, có bài riêng trong series) hoặc node bị xóa/tài khoản bị gỡ khỏi tailnet trong admin console, kiểm tra mục Machines xem máy còn tồn tại không.

Hạ tầng VPS tại Việt Nam của TND
Cloud VPS linh hoạt và VPS NVMe xung cao, IP công cộng riêng, đặt tại Việt Nam
Dân tự host gặp lỗi này nhiều nhất trên chính chiếc VPS của mình, và một VPS tử tế phải có console khẩn cấp để cứu khi mọi đường SSH tê liệt. Cloud VPS TND kèm console trên trang quản lý, IP riêng, đặt tại Việt Nam, bàn giao 5 phút; workload nặng I/O có dòng VPS NVMe.
Dựng ngay một Cloud VPS cho mạng TailscaleCần I/O mạnh? Xem VPS NVMe

Bài viết liên quan