Bạn cần xem màn hình của một chiếc Mac từ máy của chính mình, chiếc Mac nằm sau một máy chủ mà bạn đã có thể SSH tới, và câu hỏi là liệu điều đó có đáng một VPN. Thường thì không. Một chuyển tiếp cục bộ mang một cổng TCP qua phiên SSH bạn đã có, và với một màn hình trên một máy chủ thì đây là cách bố trí nhỏ hơn và dễ kiểm tra hơn so với việc định tuyến cả một mạng.

Ba điều kiện quyết định, và bất kỳ điều kiện nào cũng có thể đẩy bạn về phía VPN được quản lý.

Ba điều kiện quyết định

Điều kiện thứ nhất là phạm vi: một dịch vụ trên một máy chủ, hay nhiều máy chủ và nhiều cổng. Điều kiện thứ hai là mọi bước nhảy giữa bastion và mục tiêu đã được tin cậy chưa, vì SSH chỉ bảo vệ đoạn mà nó kết thúc. Điều kiện thứ ba là ai phải duy trì cách bố trí này sau khi bạn dựng nó, vì một đường hầm làm thủ công thường sống lâu hơn người hiểu nó. Hãy nêu tên người đó trước khi bắt đầu, và viết lệnh ở nơi họ có thể tìm thấy. Một chuyển tiếp không được ghi lại là một sự cố tương lai với ngày bắt đầu bị hoãn.

Nếu câu trả lời là «một», «có» và «tôi, hiện tại», chuyển tiếp là công cụ đúng. Nếu bất kỳ câu trả lời nào thay đổi, một thiết kế truy cập từ xa có hỗ trợ sẽ rẻ hơn trong một năm so với việc xem xét sự cố sau một đường hầm không được ghi lại.

Chuyển tiếp một cổng, không phải cả mạng

Chuyển tiếp cục bộ mở một trình lắng nghe trên máy của bạn và chuyển mỗi kết nối qua máy chủ SSH tới một đích mà máy chủ đó có thể tới. Với một chiếc Mac có dịch vụ chia sẻ màn hình lắng nghe trên TCP 5900, và một bastion có thể phân giải mac.corp.example, lệnh này ngắn và hẹp một cách có chủ ý. Mọi tùy chọn trong đó đều tồn tại để giữ cách bố trí nhỏ: không shell, không trình lắng nghe trên mọi giao diện, không daemon. Hãy đọc nó như một tuyên bố phạm vi, không phải một công thức.

ssh -N -o ExitOnForwardFailure=yes -L 127.0.0.1:15900:mac.corp.example:5900 [email protected]

Gắn trình lắng nghe vào 127.0.0.1 giữ nó tránh xa mọi giao diện khác. Đây không phải thủ tục hình thức: một chuyển tiếp gắn với mọi giao diện biến laptop của bạn thành một rơ-le mở vào mạng công ty cho bất kỳ ai trong cùng quán cà phê có Wi-Fi. Nếu cổng đã được dùng, hãy chọn một cổng cao khác và cập nhật trình xem; đừng dừng một dịch vụ không liên quan để ví dụ khớp.

Tài khoản trên bastion cũng cần quyền chuyển tiếp tới đích đó. Một số cấu hình SSH được tăng cường vô hiệu hóa hoàn toàn việc chuyển tiếp cổng, và một số hạn chế nó bằng chỉ thị permit-listen hoặc permit-open. Hãy đọc chính sách máy chủ trước khi cho rằng một kênh bị từ chối nghĩa là mật khẩu sai.

SSH mã hóa gì, và nó dừng ở đâu

Phiên SSH bảo vệ lưu lượng từ Mac của bạn tới bastion, và chuyển tiếp mang giao thức VNC bên trong phiên đó mà không hiểu nó. Khi kết nối rời bastion về phía mục tiêu, nó không còn nằm trong phiên SSH của bạn nữa. Bất kỳ sự bảo vệ nào trên bước nhảy cuối đó đều thuộc về giao thức đích và các kiểm soát riêng của mạng riêng.

Vì vậy không nên mô tả một bước nhảy VNC cuối đơn giản là được mã hóa đầu-cuối chỉ vì bước nhảy đầu dùng SSH. Hãy mô tả các đoạn một cách trung thực: mạnh từ máy khách tới bastion, và sau đó là những gì mục tiêu hỗ trợ. Nếu yêu cầu là toàn bộ đường đi được mã hóa bằng một cơ chế, chuyển tiếp không đáp ứng điều đó.

Xác thực tại mục tiêu lại là chuyện riêng. Tài khoản SSH không cấp đăng nhập macOS, và dịch vụ chia sẻ màn hình vẫn yêu cầu thông tin xác thực của chính nó và vẫn áp dụng danh sách truy cập của chính nó. Một trình lắng nghe cục bộ chấp nhận kết nối không chứng minh điều gì về việc dịch vụ từ xa có chấp nhận phiên hay không.

Khi nào VPN đầy đủ là lựa chọn đúng

Chọn VPN khi công việc cần nhiều hơn một cổng: các chức năng quản lý và báo cáo của Apple Remote Desktop dùng thêm lưu lượng TCP và UDP mà một chuyển tiếp TCP không mang được. Chuyển tiếp không phải là triển khai một phần của toàn bộ sản phẩm; nó là một công cụ khác, nhỏ hơn.

Chọn nó khi nhiều quản trị viên kết nối từ những địa điểm thay đổi, vì một hồ sơ được quản lý phân phối tuyến, thông tin xác thực và chính sách mà mỗi người không phải tự phát minh dòng lệnh. Chọn nó khi dấu vết kiểm toán phải cho thấy ai kết nối tới cái gì, vì một phiên SSH cho mỗi người dùng và một chuyển tiếp cục bộ chia sẻ để lại những bản ghi rất khác nhau.

Cuối cùng, chọn nó khi mạng đích không được phép tiếp cận từ laptop nếu không có cổng của chính tổ chức. Một chuyển tiếp cá nhân vượt qua cổng đó theo thiết kế, và đó chính là lý do nó thuộc về một bản ghi thay đổi chứ không phải lịch sử shell.

Hãy để chuyển tiếp thất bại ồn ào

Dùng ExitOnForwardFailure=yes để một lần gắn thất bại dừng phiên thay vì để lại một shell trông như đã kết nối mà không chuyển tiếp gì. Giữ bật xác minh khóa máy chủ, và ưu tiên khóa hoặc agent hơn mật khẩu. Sau đó kiểm tra đúng URL mà trình xem sẽ dùng, vì một phiên SSH hoạt động và một kết nối màn hình hoạt động là hai kết quả khác nhau.

Với ứng dụng khách gốc trên macOS, trình xem được truy cập qua một URL cục bộ: open "vnc://127.0.0.1:15900". Nếu cửa sổ mở ra và máy chủ từ xa từ chối xác thực, đường hầm vẫn tốt và vấn đề nằm ở mục tiêu. Nếu cửa sổ không bao giờ mở, vấn đề nằm ở trình lắng nghe hoặc cổng.

Dừng phiên khi xong, và ghi lại cổng, bastion, mục tiêu và chính sách tài khoản. Một chuyển tiếp không ai ghi lại thì sáu tháng sau không thể phân biệt với cửa sau, và đó là lý lẽ mạnh nhất để giữ nó nhỏ, có tên và tạm thời.

Bài viết liên quan