Nếu bạn đang chạy máy chủ X trên Windows (giống như bạn đang sử dụng Xming), thì phía Windows hầu hết đã được thực hiện (nhưng xem bên dưới để biết một vài chi tiết quan trọng). Bit chính còn lại là yêu cầu các ứng dụng X11 trên pi gửi dữ liệu X11 của chúng đến PC Windows của bạn.
Điều này được thực hiện thông qua DISPLAY
biến môi trường. Thông thường, nếu máy chủ X và ứng dụng đang chạy trên cùng một máy tính, thì HIỂN THỊ sẽ chỉ định số máy chủ (ví dụ: :0
nếu bạn chỉ chạy một máy chủ X) hoặc có thể là máy chủ và màn hình (ví dụ :0.0
). Vì không có địa chỉ IP, điều này cho thư viện X của ứng dụng biết rằng máy chủ là cục bộ và các kết nối sẽ được thực hiện tương ứng (có thể là một loại vận chuyển bộ nhớ chia sẻ).
Để yêu cầu ứng dụng gửi dữ liệu X11 đến một nút từ xa, hãy bao gồm địa chỉ IP trong DISPLAY
biến. Ví dụ , export DISPLAY=192.168.1.10:0
. Điều này sẽ cho bất kỳ ứng dụng X11 nào biết rằng họ cần mở kết nối TCP đến máy chủ X # 0 trên nút 192.168.1.10. Tên máy chủ DNS vẫn ổn ở đây, nếu bạn đã có chúng trên mạng của mình.
Hai vấn đề tiềm ẩn
Như tôi đã viết trong đoạn đầu tiên, chỉ cần chạy Xming có thể là không đủ. Có thể có cấu hình bổ sung cần thiết.
Đầu tiên là máy chủ X11 của bạn phải được cấu hình để chấp nhận các kết nối từ các nút từ xa thông qua TCP. Nhiều máy chủ X được phân phối ngày hôm nay (tôi không biết về Xming) chỉ chấp nhận kết nối từ các ứng dụng chạy cục bộ trừ khi bạn định cấu hình chúng một cách rõ ràng. Đây là một tính năng bảo mật, vì mỗi ổ cắm mở là một vector tiềm năng để tấn công.
Thứ hai là máy chủ X11 của bạn duy trì cơ sở dữ liệu của máy chủ / người dùng được phép kết nối. Bạn cần lập danh sách trắng địa chỉ IP của Raspberry Pi. Bạn có thể làm điều này bằng cách chạy xhost
lệnh từ Xming trên Windows, ví dụ, từ bảng điều khiển chạy trong xterm. Bạn cũng có thể nhập xhost +
để tắt kiểm tra bảo mật này, nhưng điều đó nguy hiểm vì nó sẽ cho phép mọi ứng dụng từ mọi nơi trên thế giới mở kết nối với màn hình của bạn. Nếu bạn đứng sau tường lửa trên mạng LAN nơi bạn tin tưởng tất cả mọi người (ví dụ: nhà riêng của bạn), đó là cách tiếp cận dễ nhất, nhưng hãy dành thời gian để định cấu hình đúng xhost
nếu bạn không.
Thay thế: ssh -Y
Sử dụng phương pháp trên, tất cả các ứng dụng X11 của bạn sẽ cố gắng mở các kết nối TCP đến máy chủ X của bạn. Những kết nối này không an toàn. Ai đó trên các gói snooping LAN của bạn có thể chặn chúng.
Để giải quyết vấn đề này, thay vì đặt biến HIỂN THỊ trên Raspberry pi, hãy sử dụng -Y
tham số khi kết nối với nó (ví dụ slogin -Y hostname
). Tham số -Y (như -X) sẽ tạo một đường hầm giữa các nút để mang lưu lượng X11. Điều này sẽ giữ cho lưu lượng X11 được mã hóa và an toàn. Nó cũng sẽ gán biến môi trường HIỂN THỊ của riêng mình để các ứng dụng sẽ sử dụng đường hầm. Nó cũng có thể loại bỏ sự cần thiết phải gây rối xhost
vì (liên quan đến máy chủ X của bạn), các kết nối có nguồn gốc cục bộ (từ phía xuất phát của đường hầm SSH).