Chuyển tiếp X11 với Xming qua SSH?


11

Tôi đã có quyền truy cập SSH và tôi đã cài đặt Xming, cùng với phông chữ Xming. Tôi đã cấu hình PuTTY để chuyển tiếp x11 và bảo nó đặt máy tính để bàn tại localhost: 0, theo hướng dẫn ở đây .

Tuy nhiên, sau khi tôi đăng nhập, và startx, tôi không nhận được gì cả. Hay đúng hơn, nó chạy một loạt các thông báo dường như nói rằng mọi thứ đang hoạt động, nhưng tôi nhận được một con trỏ trong cửa sổ bảng điều khiển của mình hoạt động giống như trong trạng thái chờ. Và đó là nó.

Tôi đang thiếu gì? Tôi có cần phải mở một cái gì đó để xem máy tính để bàn?

Tôi muốn chuyển tiếp máy tính để bàn của mình tới PC làm việc, để tôi có thể chơi với RasPi vào bữa trưa mà không cần cắm phần cứng. Xin vui lòng giúp đỡ.

BIÊN TẬP:

Ảnh chụp màn hình về những gì xảy ra với Xming đang chạy và tôi SSH và gọi startx:

SSH với phản hồi Xming

EDIT 2:

Câu trả lời này nói startxlà không cần thiết, vì nó khởi động máy chủ RasPi X và tôi đang sử dụng máy chủ Xming trên Windows. Trong trường hợp đó, làm cách nào để tôi truy cập vào máy tính để bàn / GUI trên Xming từ Windows? Bởi vì, ngay cả khi Xming đang chạy và bật SSH, tôi không nhận được gì ngoài lời nhắc bảng điều khiển thông thường. Có lẽ tôi đang làm sai. Những gì tôi muốn là GUI RasPi đầy đủ, bình thường của tôi đang chạy trong một cửa sổ trên PC Windows từ xa. Tôi không muốn sử dụng VNC. Tôi đang chuyển tiếp qua Internet. Làm thế nào để tôi đến đó?


2
Tôi cũng muốn chạy phiên đồ họa từ Raspberry đến Máy tính Windows của tôi. Và khi tôi thấy tin nhắn của bạn nói rằng startx có nghĩa là khởi động máy chủ X, tôi hiểu rằng tôi cần phải bắt đầu một chương trình X ... Vì vậy, hãy bắt đầu ... trình quản lý phiên x! Bằng cách đó, bạn có phiên đồ họa trên máy tính ở xa. cảm ơn, bạn đã cho tôi con đường!

Câu trả lời:


15

Nếu bạn bắt đầu Xming trên máy tính Windows, thì bạn đã có máy chủ X đang chạy. Bạn không phải khởi động máy chủ X của Raspberry Pi bằng cách sử dụng startx. Các ứng dụng X của bạn sẽ chạy trên Raspberry Pi nhưng ứng dụng sẽ vẽ lên máy chủ Xming X của Windows.

Tài liệu bạn đã liên kết , nói rằng bạn phải khởi động máy chủ X trên Windows và không đề cập đến việc bạn phải khởi động máy chủ X trên Linux. Trong câu cuối cùng của tài liệu:

Bây giờ bạn có thể chạy các ứng dụng X từ máy chủ trên máy tính để bàn cục bộ của bạn

"Ứng dụng X" không chỉ máy chủ X (cần được khởi động bởi startx) mà là các ứng dụng như xclock, xeyes, v.v.

Một ứng dụng X đặc biệt là lxsession sẽ khởi động trình quản lý phiên chuẩn của LXDE (ít nhất là trên Raspbian của tôi). Bắt đầu ứng dụng này trên bảng điều khiển sẽ cung cấp cho bạn "GUI đầy đủ" mà bạn đang tìm kiếm:

lxsession

Cá nhân tôi không thấy hữu ích khi bắt đầu lxsession, khởi động các ứng dụng X trên bảng điều khiển dễ dàng hơn nhiều đối với tôi.


1
Đồng ý. Điều này tôi có thể hiểu, tôi nghĩ. Bạn đang nói startx là không cần thiết, vì nó khởi động máy chủ RasPi x và tôi đang sử dụng máy chủ Xming trên windows. Trong trường hợp đó, làm cách nào để truy cập máy tính để bàn / GUI trên Xming từ windows. Bởi vì, ngay cả khi Xming đang chạy và bật SSH, tôi không nhận được gì ngoài lời nhắc bảng điều khiển thông thường. Bạn đang nói rằng tôi sẽ chỉ chạy ứng dụng thực tế trong xming chứ không phải GUI đầy đủ. Có lẽ tôi đang làm sai. Những gì tôi muốn là GUI RasPi đầy đủ, bình thường của tôi đang chạy trong một cửa sổ trên PC Windows từ xa. Tôi không muốn sử dụng VNC. Tôi đang chuyển tiếp qua internet.
zenbike

Cập nhật câu trả lời.
asalamon74

Hoạt động hoàn hảo, nếu (như mong đợi) một chút chậm để đáp ứng. Cảm ơn sự giúp đỡ của bạn.
zenbike

1
Đó là lý do hướng dẫn của bạn khuyên bạn nên chạy các ứng dụng đơn lẻ trên ssh tại một thời điểm ...
Alexander - Tái lập lại

1
@ asalamon74 Cảm ơn! Ồ Đây chỉ là kickass. Tôi không phải đối phó với bàn phím và chuột được kết nối với usb bằng một sợi dây cực ngắn. Tôi đã từng ngồi trước TV với các thiết lập ở trên. HIỆN NAY? Tôi chỉ ssh và chạy gui như một ông chủ !!
Dheeraj Bhaskar

1

Sử dụng Cygwin / X

Nếu bạn không bị ràng buộc với Xming, thay vào đó bạn có thể sử dụng Cygwin / X để chạy máy chủ X trong Windows.

Chuẩn bị Raspberry Pi

Hãy thử thiết lập kết nối SSH thông thường từ Windows đến Raspberry Pi bằng PowerShell:

Đăng nhập vào Raspberry Pi trên Windows bằng PowerShell và SSH

Cho rằng Raspbian Buster bao gồm X11Forwarding yestrong /etc/ssh/sshd_config, Raspberry Pi của bạn cũng sẽ có thể chuyển tiếp đầu ra hình ảnh của các ứng dụng X11 đến một máy chủ X trên Windows.

Bước tiếp theo cho thấy cách cài đặt máy chủ X đó.

Cài đặt Cygwin / X trên Windows

Cygwin / X cung cấp máy chủ X cho Windows hiển thị các ứng dụng GUI đang chạy trên Raspberry Pi.

  1. Tải xuống và chạy setup-x86_64.exetừ trang web của Cygwin .

  2. Đối với "Thư mục gói địa phương" của Cygwin, bạn có thể sử dụng C:\Users\me\AppData\Roaming\Cygwin.

  3. Chọn một máy chủ gần bạn để tải gói.

  4. Đặt "Xem" thành "Đầy đủ" và tìm kiếm xinit.

  5. Trong cột "Mới", sử dụng menu thả xuống để thay đổi giá trị từ "Bỏ qua" sang xinitphiên bản mới nhất:

Cài đặt gói xinit với Cygwin

  1. Cài đặt gói opensshtheo cùng một cách.

Kết nối với Raspberry Pi từ Windows

  1. Khởi động máy chủ X bằng menu bắt đầu của Windows : Cygwin-X → XWin Server. Điều này sẽ không mở bất kỳ cửa sổ nào, nhưng bạn sẽ thấy hai biểu tượng mới trong khay hệ thống của mình:

Biểu tượng máy chủ XWin trong khay hệ thống

  1. Bắt đầu thiết bị đầu cuối Cygwin: Cygwin → Cygwin64 Terminal

  2. Đặt DISPLAYbiến môi trường thành nơi máy chủ X trên Windows chạy:

    export DISPLAY=:0.0

  3. Kết nối với Raspberry Pi của bạn với chuyển tiếp X11:

    ssh -Y pi@raspberrypi

Đăng nhập bằng Cygwin Terminal

Trong phiên SSH, bây giờ bạn có thể bắt đầu ứng dụng X trên Raspberry Pi như Thonny :

Thonny chuyển tiếp đến Windows

Ngoài ra, như user1297 đã đề cập trong các nhận xét của câu hỏi, bạn có thể chạy x-session-managerđể mô phỏng trải nghiệm bạn nhận được khi kết nối với Raspberry Pi qua HDMI trên màn hình ngoài:

Máy tính để bàn Rasbpian đã chuyển sang Windows

Nếu bạn muốn bắt đầu một ứng dụng trực tiếp mà không cần gõ tên của nó vào trình bao, hãy sử dụng điều này:

ssh -Y pi@raspberrypi x-session-manager

Trên macOS

XQuartz cung cấp một máy chủ X cho macOS.

Cài đặt XQuartz, đăng xuất và đăng nhập lại (để tạo giá trị mới DISPLAYhiệu quả), sau đó khởi chạy các ứng dụng với SSH từ Bash:

ssh -Y pi@raspberrypi thonny

Thonny bên trong macOS bằng XQuartz


1

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 DISPLAYbiế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ụ: :0nế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 DISPLAYbiế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 xhostlệ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 xhostnế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 -Ytham 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 xhostvì (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).

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.