Một máy đến máy khác qua VPN, và giờ ai đó muốn cùng shell đó trên mạng riêng của nhà cung cấp. Tuyến đường tồn tại, ping thành công, nhưng SSH vẫn từ chối. Nguyên nhân thường gặp là daemon chưa từng lắng nghe trên địa chỉ mới, nên không có gì để kết nối. Đây là vấn đề ràng buộc địa chỉ trước khi là vấn đề tường lửa.

Vì sao tuyến mới không tạo ra trình lắng nghe mới

Socket lắng nghe được tạo bởi tiến trình đặt tên các địa chỉ mà nó sẽ chấp nhận. Tuyến chỉ cho gói tin biết phải đi đâu; nó không tạo trình lắng nghe ở đích. Khi sshd được cấu hình với một ListenAddress, các kết nối tới bất kỳ địa chỉ cục bộ nào khác đều bị từ chối dù giao diện đang hoạt động. Điều tương tự cũng đúng với unit socket sở hữu cổng, vì vậy kiểm tra đầu tiên luôn là thứ thực sự đang lắng nghe.

So sánh hai đường theo địa chỉ đích, không theo tên giao diện. Máy khách kết nối tới một địa chỉ, và địa chỉ đó phải được ràng buộc trước khi bất kỳ quy tắc tường lửa nào có ý nghĩa.

Liệt kê các địa chỉ và trình lắng nghe

Trước khi sửa bất cứ điều gì, hãy ghi lại các địa chỉ trên máy chủ và các socket hiện có.

ip -br addr
ss -ltnp | grep ':22'

Danh sách địa chỉ cho biết địa chỉ riêng nào là thật và trên giao diện nào, còn danh sách socket cho biết có gì đang gắn với nó không. Một trình lắng nghe trên 0.0.0.0:22 đã chấp nhận mọi địa chỉ, nên ràng buộc mới không thêm gì. Một trình lắng nghe trên một địa chỉ cụ thể giải thích việc từ chối ngay lập tức. Nếu cổng thuộc về unit socket chứ không phải daemon, cấu hình daemon không phải toàn bộ câu chuyện.

Thêm ràng buộc và giữ ràng buộc cũ

OpenSSH chấp nhận nhiều mục ListenAddress, nên tuyến VPN có thể giữ nguyên trong khi tuyến riêng được thêm vào. Hãy kiểm tra tệp trước khi tải lại.

sshd -t
systemctl reload sshd

Một bài kiểm tra cấu hình thất bại để daemon đang chạy không bị đụng tới, và đó chính là điều bạn muốn khi đang kết nối qua tuyến bạn đang sửa. Giữ mục hiện có, thêm địa chỉ cục bộ mới và xác nhận dịch vụ tải lại mà không ngắt phiên hiện tại. Trên các bản cài kích hoạt bằng socket, hãy thêm địa chỉ vào unit socket thay vào đó và tải lại unit đó. Sau đó đọc lại danh sách trình lắng nghe, vì một ràng buộc không bao giờ xuất hiện nghĩa là đã sửa nhầm thành phần.

Xác minh phiên mới trước khi đóng phiên cũ

Kết nối tới địa chỉ mới trong khi phiên gốc vẫn mở, dùng đầu ra chi tiết để xem địa chỉ và khóa nào đã được dùng. Giữ phiên gốc mở cho tới khi thử nghiệm thành công hai lần.

ssh -v [email protected]

Đọc các dòng gỡ lỗi cho địa chỉ đích và khóa máy chủ được trình bày. Xác nhận dấu vân tay khóa máy chủ với giá trị bạn đã tin tưởng, thay vì chấp nhận một khóa lạ chỉ vì mạng được mô tả là riêng tư. Đích mới cần mục known_hosts riêng, và điều đó là bình thường. Chỉ nên đóng phiên quản trị cũ sau khi tuyến riêng hoạt động.

SSH bảo vệ phần truyền tải, nhưng tự nó không làm hai mạng tương đương. Hãy quyết định xem niềm tin của tuyến riêng có phù hợp với dữ liệu trước khi dựa vào nó.

Bài viết liên quan