Chạy ứng dụng trên máy cục bộ và hiển thị GUI trên màn hình từ xa


35

Có thể chạy một ứng dụng trên máy tính để bàn cục bộ của tôi nhưng hiển thị GUI trên máy tính xách tay của tôi (từ xa X) không?

Tôi tự hỏi liệu có thể mô phỏng thiết lập màn hình kép bằng cách sử dụng 2 máy được kết nối lan khác nhau.

Tôi đã cài đặt sức mạnh tổng hợp và tôi có thể dễ dàng điều khiển máy tính xách tay của mình bằng bàn phím / chuột để bàn, nhưng tôi cũng muốn chạy một cái gì đó trên máy tính để bàn và hiển thị GUI trên màn hình máy tính xách tay.

Từ kinh nghiệm hạn chế của tôi với X, tôi biết rằng tôi có thể chạy một chương trình trên một máy từ xa và sử dụng màn hình của cái đầu tiên để hiển thị đầu ra, nhưng không phải là cách khác.

Bất kỳ con trỏ sẽ được giúp đỡ rất nhiều. Cảm ơn bạn

PS chạy XFCE 4.10 trên Ubuntu 12.10

Câu trả lời:


39

Biến thể A - Quay X Windows sang một HIỂN THỊ khác:

  1. Hãy xem, Xserver trên Laptop của bạn bắt đầu nghe các kết nối tcp. Đáng buồn thay, Mạng X11 bị tắt theo mặc định trong hầu hết các bản phân phối. Vì Xserver được khởi động bởi trình quản lý hiển thị của bạn (gdm, lightdm) nên điều này phải được cấu hình ở đó:

    Dù bạn sử dụng trình quản lý hiển thị nào, một số tệp cấu hình trong / etc / có thể sẽ chứa tham số XServer chịu trách nhiệm. Chạy grep -r 'nolisten tcp' /etc/trên Máy tính xách tay của bạn để tìm ra tệp cấu hình nào chịu trách nhiệm và xóa phần mà nó nói -nolisten tcp(không phải toàn bộ dòng, chỉ tham số này). Khởi động lại X trên máy tính xách tay của bạn.

    Máy tính xách tay của bạn bây giờ sẽ có màn hình chạy trên cổng tcp 6000 (hãy thử chạy nmap -p6000 Laptoptrên Máy tính để bàn của bạn, nếu cổng được báo là "mở", bạn đã đi xa đến mức này).

  2. Làm cho màn hình X của bạn có sẵn cho máy tính để bàn. X11 sử dụng cơ chế xác thực để cấp quyền truy cập vào màn hình. Bạn phải cho phép máy tính để bàn bắn Windows vào máy tính xách tay. Thông thường bằng cách trao đổi một cookie hiển thị.

    Để bắt đầu thực hiện bước này với tay trên máy tính xách tay của bạn. Một khi bạn đã có được khái niệm với DISPLAYbiến và mọi thứ, bạn có thể thực hiện điều này thông qua ssh.

    Nhanh và bẩn: Bạn có thể chạy xhost +desktops.computers.ip.addresstrên máy tính xách tay của mình để cấp quyền truy cập X cho máy tính để bàn. Lưu ý rằng mọi người dùng trên máy tính xách tay của bạn có thể sử dụng máy tính xách tay X của bạn hiển thị theo cách này. Lưu ý rằng điều này là đủ tức là để cài đặt một keylogger trên màn hình máy tính xách tay của bạn. Chỉ sử dụng phương pháp này để thử nghiệm.

    Chính xác và bảo mật: chạy xauth extract cookie-file :0trên máy tính xách tay của bạn để xuất bí mật truy cập hiển thị của bạn sang "tệp cookie". Chuyển cookie vào máy tính để bàn của bạn. Chạy đi xauth merge cookie-file. Hoặc trong một bước ngắn (từ máy tính để bàn của bạn) ssh Laptop xauth extract - :0 |xauth merge -Lưu ý: nếu máy tính xách tay và máy tính để bàn của bạn đang chia sẻ một thư mục chính, tức là qua nfs, bạn không cần phải trao đổi bất kỳ thông tin đăng nhập nào. Cơ sở dữ liệu thông tin xác thực là tệp .Xmasterity trong thư mục nhà của bạn và có thể được chia sẻ giữa các máy khác nhau.

  3. Chạy chương trình: Trong một thiết bị đầu cuối trên máy tính để bàn của bạn chạy export DISPLAY=Your.Laptops.IP.Address:0, hãy chạy bất kỳ chương trình X nào trong cùng một thiết bị đầu cuối. Nó sẽ xuất hiện trên màn hình máy tính xách tay.

Biến thể B - Sử dụng SSH với một twist.

SSH thực hiện chuyển tiếp X11 bằng cách chuyển tiếp ổ cắm X11 cục bộ (thường là Ổ cắm tên miền Unix) sang ổ cắm TCP cục bộ trên máy từ xa, sau đó đàm phán cookie hiển thị, sau đó đặt HIỂN THỊ-Môi trường trên máy từ xa. Bằng cách này, tất cả lưu lượng X11 được mã hóa qua đường hầm ssh. Trường hợp sử dụng thông thường là chuyển tiếp màn hình cục bộ đến máy từ xa (nghĩa là cho phép các ứng dụng từ xa hiển thị x windows cục bộ).

Ưu điểm của việc sử dụng ssh là, bạn không cần đặt X-Server của mình vào chế độ nghe tcp (vì ổ cắm unix được sử dụng). Và ssh xử lý trao đổi thông tin xác thực.

  1. SSH vào máy tính xách tay của bạn từ máy tính để bàn (bạn chưa cần sử dụng -X).
  2. Trong shell từ xa, export DISPLAY=:0điều này làm cho màn hình đã chạy trên notebook của bạn có sẵn với shell mà bạn có thông qua ssh. Nếu bạn chạy bất kỳ lệnh X nào bây giờ, nó sẽ xuất hiện trên màn hình máy tính xách tay của bạn, nhưng vẫn chạy trên máy tính xách tay của bạn (hãy thử để đảm bảo an toàn).
  3. Từ shell ssh này trở lại máy tính để bàn của bạn, sử dụng -X lần này. Bây giờ bạn có một vỏ trên máy mà phiên ssh bắt nguồn nhưng lần này với X. chạy xeyes hoặc xcalc để kiểm tra nó.
  4. echo $DISPLAYhiển thị cho bạn chỉ định, màn hình máy tính xách tay X của bạn hiện có trên máy tính để bàn của bạn. Tức là: 10 hoặc: 11.
  5. Bạn có thể giảm thiểu các thiết bị đầu cuối bây giờ. Bất cứ khi nào bạn nhập export DISPLAY=:10(xem số hiển thị bạn có) trên máy tính để bàn của bạn bây giờ, mỗi chương trình bạn chạy sau đó trong cùng một vỏ sẽ xuất hiện trên màn hình máy tính xách tay của bạn.

    Biến thể này dễ nhưng chậm, vì tất cả lưu lượng X11 được chuyển tiếp qua SSH.

Biến thể C - Khái niệm thinclient ban đầu:

Bạn có thể sử dụng máy tính xách tay của mình để mở phiên máy tính để bàn chạy hoàn toàn trên máy tính để bàn của bạn.

  1. Định cấu hình trình quản lý hiển thị trên Màn hình của bạn để trả lời Phát sóng XDMCP. Làm thế nào để làm điều này phụ thuộc vào trình quản lý hiển thị của bạn. Một số trình quản lý hiển thị hoàn toàn không hỗ trợ điều này, tức là mỏng. XDM, KDM, WDM, GDM hỗ trợ nó.

  2. Khởi động X-Server trên máy tính xách tay của bạn, yêu cầu trình quản lý hiển thị từ máy tính để bàn của bạn. Hoặc là X: Xephyr :1 -query desktophoặc Xephyr :1 -broadcast Hoặc bằng cách tắt X-Server Notebook của bạn và nhập vào Terminal Terminalsudo Xorg :0 -broadcast

    Trình quản lý hiển thị sẽ thấy với nó, rằng thông tin đăng nhập được tạo và trao đổi và mọi thứ. Xin chúc mừng, bây giờ bạn sẽ thấy một cửa sổ đăng nhập được cung cấp bởi máy tính để bàn của bạn.


2
BTW. Tất cả Chức năng X11 tuyệt vời này sẽ chỉ ngừng hoạt động khi Ubuntu chuyển sang Wayland. Các ứng dụng NAland wayland thậm chí không thể được chuyển tiếp qua ssh nữa.
Paul Hänsch

6
Không phải thật trớ trêu khi không có công cụ đồ họa để kiểm soát X-Server của bạn sao? Nếu bạn thực sự muốn làm việc với GUI, trước tiên bạn phải thống trị dòng lệnh.
Paul Hänsch

Gợi ý chung: Chương trình đầu tiên bạn có thể muốn bắt đầu trên màn hình từ xa là trình khởi động ứng dụng. Tức là lxpanel hoặc một cái gì đó. Điều này rất nhiều công việc dòng lệnh.
Paul Hänsch

Điều này vẫn hoạt động cho Ubuntu 17 + + hay dự đoán Wayland đã đi qua?
Xen2050

19

Bạn có thể sử dụng chuyển tiếp ssh X để đạt được mục tiêu của mình. Nếu bạn đang ở trong cùng một mạng con thì nó sẽ thoát nhanh.

Cài đặt máy chủ và máy khách ssh trên máy tính xách tay và máy tính để bàn của bạn

sudo apt-get install ssh

Để kết nối với máy tính để bàn, hãy mở một thiết bị đầu cuối trên máy tính xách tay và gõ như sau

ssh -X username@desktop_pc_ip

Và bạn có thể khởi động bất kỳ phần mềm nào bằng thiết bị đầu cuối, ví dụ như khởi động Firefox, chỉ cần nhập firefoxvào thiết bị đầu cuối.


2
Đừng quên xác minh rằng các tệp cấu hình sshd (thường là / etc / ssh / sshd_config) có X11Forwarding được đặt thành có.
Nốt ruồi ma trận

Đây là trường hợp sử dụng của tôi: Tôi đang ở trên máy tính để bàn của mình và tôi mở Firefox, nhưng tôi muốn cửa sổ trình duyệt mở trên màn hình máy tính xách tay của tôi và vẫn chạy trên máy tính để bàn của tôi. Tôi đang tìm một chức năng tương tự như không gian làm việc, nhưng thay vì không gian làm việc cục bộ (4 màn hình trên cùng một máy tính) để sử dụng không gian làm việc từ xa (máy tính xách tay)
Vlad Balmos

2
Ngoài ra, bạn có thể thử x2xgói, bạn có thể sử dụng một bàn phím và chuột trong các máy khác nhau. ví dụ:ssh -X user@host x2x -west -to :0
OHLÁLÁ

@iUngi Tôi đã sử dụng sức mạnh tổng hợp cho điều đó, dù sao cũng cảm ơn
Vlad Balmos

Xin lưu ý rằng bằng cách mở quyền truy cập vào máy chủ X của máy tính để bàn, bạn sẽ cấp quyền truy cập khá rộng vào máy từ xa. Nếu máy chủ của bạn bị xâm nhập, điều này cũng có thể được sử dụng để vào máy tính để bàn của bạn. Chuyển tiếp X11 rất hữu ích, nhưng hãy nghĩ về những gì bạn đang làm và không bật nó theo mặc định.
mc0e

7

Chuẩn bị

(bạn làm điều này chỉ một lần)

Trong máy tính để bàn của bạn cài đặt máy chủ SSH

sudo apt-get install openssh-server


Từ máy tính xách tay của bạn:

tên người dùng ssh -X @ desktop_pc_ip

Trong thiết bị đầu cuối, bạn nhận được bất cứ thứ gì bạn chạy sẽ có trên máy tính để bàn của bạn nhưng được hiển thị trên máy tính xách tay của bạn. Nếu bạn muốn làm tương tự trong khi ngồi trên máy tính để bàn của bạn (và gửi các cửa sổ trên máy tính xách tay của bạn) thì hãy tiếp tục.

Trên thiết bị đầu cuối của bạn, bạn chạy

echo $ HIỂN THỊ

Điều này sẽ cho bạn thấy một cái gì đó như:

localhost:10.0

Từ máy tính để bàn của bạn:

Mở một thiết bị đầu cuối và chạy

DISPLAY=:10.0 firefox

Điều này sẽ gửi một firefoxcửa sổ trên máy tính xách tay của bạn nhưng chạy trên máy tính để bàn của bạn. Đảm bảo số bạn đặt (ví dụ 10.0) giống như trong echokết quả


3

Bạn đang xem xét bằng cách sử dụng kết hợp SSH và màn hình để có được tình huống bạn muốn.

Trên máy tính để bàn của bạn, cài đặt màn hình:

màn hình cài đặt sudo apt-get

Từ đó, bắt đầu một phiên màn hình mới:

màn

và mở firefox trong đó:

lửa

Sử dụng firefox tất cả những gì bạn muốn trên máy tính để bàn của bạn, sau đó ssh vào máy tính của bạn từ máy tính xách tay của bạn:

ssh -X tên người dùng @ tên máy chủ

Nhập lệnh sau để xem phiên màn hình nào bạn đang chạy:

màn hình

Đăng nhập vào phiên màn hình của bạn (1234 sẽ là số màn hình đã cung cấp cho bạn)

màn hình -x 1234

Sau đó, bạn có thể sử dụng firefox trên máy tính xách tay của mình và đóng thiết bị đầu cuối trên máy tính để bàn của bạn.


đã thử nó mở màn hình từ thiết bị đầu cuối, khởi động firefox trên máy tính để bàn, sau đó sshed từ máy tính xách tay vào máy tính để bàn, đính kèm phiên màn hình, nhưng tôi không nhận được bất kỳ cửa sổ nào trên máy tính xách tay, chỉ là đầu ra từ chương trình đang chạy trong màn hình.
Vlad Balmos

Bạn đã trộn nó lên. Đợi ... ít nhất một trong số các bạn đã làm. Cài đặt màn hình trên máy tính để bàn của bạn, sử dụng máy tính xách tay ssh -Xcủa bạn để máy tính để bàn của bạn, bắt đầu màn hình trong phiên ssh, tách nó ra và để phiên chạy. Sau đó gắn lại phiên màn hình bằng tay trên máy tính để bàn của bạn và chạy một cái gì đó. Điều này tương tự với câu trả lời "SSH with a twist" của tôi. Sử dụng màn hình làm cho nó triệu tập hơn một chút.
Paul Hänsch

3

Virtualgl sẽ tạo một máy tính để bàn (nền) bổ sung ( Kiểu kiểu VNC ) mà bạn có thể truy cập thông qua ứng dụng khách VNC turbo . Nó sẽ hoạt động như một thỏa thuận loại máy tính để bàn từ xa -> Nhưng nó sẽ phát video mượt mà qua mạng.

Nếu bạn đang tìm cách giảm tải CPU cho kết nối từ xa, để bạn có thể chạy các ứng dụng từ máy tính trên máy tính xách tay của mình, thì đó sẽ là điều tôi sẽ làm.

http://www.virtualgl.org/

Bạn cũng có thể xuất môi trường máy tính để bàn thông qua SSH như / dude đã đề cập ở trên.


Cảm ơn bạn. Trông đầy hứa hẹn. Tôi sẽ xem và giữ cho bạn được đăng.
Vlad Balmos

Vâng, "TurboVNC" (moreso thành phần VirtualGL của nó) là kết quả của việc tôi tìm kiếm một chương trình máy tính để bàn từ xa cho phép tôi chơi Trò chơi video và Phim. Nó sẽ hoạt động dễ dàng như một màn hình phụ.
TardisGuy

1

Sau khi đào thêm trực tuyến, tôi đã đi qua DMX

Từ trang chủ

Xdmx là máy chủ proxy X cung cấp hỗ trợ nhiều đầu cho nhiều màn hình được gắn vào các máy khác nhau (mỗi máy chủ đang chạy một máy chủ X điển hình). Khi Xinerama được sử dụng với Xdmx, nhiều màn hình trên nhiều máy được hiển thị cho người dùng dưới dạng một màn hình thống nhất.


1
đây sẽ là một câu trả lời tốt hơn nếu bạn có thể đưa ra hướng dẫn cách cài đặt và cách sử dụng.
fossfreedom

XmetaX cung cấp các chức năng tương tự. Có sự thay thế nào cho Xdmx và XmetaX không?
Mariusz

1

Vâng, nó là có thể. Tôi đang dùng cả máy tính linux với xclock được cài đặt trên máy tính cục bộ. Tôi đang cố gắng chạy xclock cục bộ và hiển thị đồng hồ trên máy tính linux từ xa.

reboot the remote machine
Disable firewall
Disable SELINUX
Check $DISPLAY variable value by command
echo $DISPLAY
Let say its value is :1
run command
xhost +

Now on local computer
xclock -display remote_machine_IP_address:1
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.