SSH: khởi chạy các chương trình GUI trên màn hình từ xa, không hiển thị X


11

Vấn đề

Hầu hết mọi người muốn kết nối với máy chủ qua ssh với tùy chọn "-X" để chạy các chương trình GUI trên máy chủ từ xa bằng cách sử dụng màn hình của máy khách. Tôi muốn chạy các chương trình GUI trên màn hình vật lý được gắn vào máy chủ. Điều này có thể không? Hãy để tôi được cụ thể hơn:

Tình huống của tôi là như sau: Tôi có một máy trạm không có bàn phím hoặc chuột, nhưng nó có một màn hình được kết nối với nó. Tôi muốn SSH tới nó bằng máy tính xách tay của mình và có thể khởi chạy một số chương trình đồ họa, chẳng hạn như xeyes hoặc ssvnc và để nó xuất hiện trên màn hình của máy trạm.

[xapple@laptop ~]$ ssh workstation
Last login: Mon Sep 26 20:03:35 2011 from laptop
[xapple@workstation ~]$ export DISPLAY=:0
[xapple@workstation ~]$ xeyes
No protocol specified
Error: Can't open display: :0

Chỉnh sửa: thêm thông tin

Tôi có lẽ nên giải thích một vài điều rõ ràng hơn:

  • Tôi có quyền truy cập sudo trên máy trạm, tôi có thể cài đặt bất cứ thứ gì nếu cần.
  • Máy trạm đang chạy giao diện người dùng Gnome.
  • Trước khi ngắt kết nối bàn phím và chuột khỏi máy trạm, tôi đã đăng nhập vào một phiên Gnome. Hiện tại người ta có thể thấy máy tính để bàn Gnome của tôi trên màn hình của máy trạm.
  • Tôi không muốn chạy các chương trình từ máy tính xách tay của tôi trên máy trạm. Tôi muốn chạy các chương trình máy trạm trên máy trạm. Xeyes hoặc bất cứ thứ gì có thể thực thi được tìm thấy trên máy chủ từ xa và nên được chạy trên màn hình của máy chủ từ xa
  • Tôi hiểu rằng việc thực hiện việc này sẽ khiến tôi rơi vào tình huống con trỏ của tôi sẽ không được kết nối với giao diện. Tôi không thể nhấp vào mọi thứ. Vậy là được rồi.

Bất kỳ trợ giúp đánh giá rất cao!


Bạn đã thực hiện xhost +trên máy chủ của bạn?
karlphillip

Tôi nghĩ đây cũng là một câu hỏi thú vị, ví dụ nếu bạn có 3 máy tính Ubuntu chạy Synergy để sử dụng cùng một bàn phím và chuột giữa 3 ... khi bạn đăng nhập, bạn phải đăng nhập 3 lần. sẽ rất tuyệt khi tạo một tập lệnh đăng nhập bạn vào hai PC khác, khi bạn đăng nhập vào PC chính.
Sverre

Câu trả lời:


5

bất kỳ ứng dụng xlib nào cũng phải kết nối với máy chủ xs. bạn phải thông báo cho ứng dụng kết nối đến máy chủ bằng cách:

  • thiết lập biến môi trường HIỂN THỊ
  • sử dụng cờ dòng lệnh như -display

xserver đầu tiên thường có thể đạt được bằng chuỗi kết nối ': 0'. vì vậy, hãy thử điều này:

xeyes -display :0

hoặc cái này

env DISPLAY=:0 xeyes

Trong nhiều trường hợp (chẳng hạn như khi được khởi động bởi GDM của Gnome), XAUTHORITYcũng sẽ cần cài đặt , vì máy chủ X11 sẽ sử dụng tệp Xauthority tạm thời.
dùng1686

Thật thú vị, sau khi đặt biến $ HIỂN THỊ, bây giờ tôi nhận được, ngoài thông báo "Lỗi: Không thể mở hiển thị", thông báo "Không có giao thức được chỉ định" khi cố gắng khởi chạy xeyes.
xApple

@grawity Cảm ơn lời khuyên. Tôi có thể hỏi làm thế nào để tôi thiết lập XAUTHORITY để lệnh của tôi hoạt động không?
xApple

5

Máy trạm này có chạy máy chủ X Windows không? Không có điều đó, đây là tất cả.

Bạn cần SOMETHING để xử lý dữ liệu thành đồ họa, pixel, màu sắc và vị trí. Một 'màn hình' là vô dụng nếu không có một số loại phần mềm để chạy nó.

Giả sử nó là. (nhưng từ văn bản, chắc chắn âm thanh khác)

Đặt tên máy chủ (và độ phân giải DNS thích hợp thông qua / etc / hosts hoặc DNS hoặc bất cứ thứ gì) của 'máy trạm' và 'máy tính xách tay' ... nếu không, hãy thay thế tên máy chủ bằng địa chỉ IP thích hợp.

ssh workstation
xhost +laptop

sau đó bạn có thể đăng xuất khỏi máy trạm vào thời điểm này, vì điều này đặt các quyền trên Xserver của máy trạm để cho phép 'máy tính xách tay' kết nối.

nếu bạn khởi động các chương trình của mình với varv HIỂN THỊ được đặt một cách thích hợp, bạn có thể khiến các ứng dụng được hiển thị trên máy trạm, trong khi chạy trên máy tính xách tay của bạn.

DISPLAY=workstation:0 xeyes

-hoặc là-

export DISPLAY=workstation:0
xeyes

một trong hai phương thức sẽ hoạt động, phương thức thứ hai sẽ khiến mọi thứ X11 liên quan được hiển thị trên máy trạm khi được khởi động từ trình bao đó. (hy vọng điều đó có ý nghĩa)

Dòng 'xhost' là cho phép máy tính xách tay kết nối với Xserver của máy trạm. Nếu không có nó, bạn sẽ bị từ chối cấp phép, trừ khi bạn khởi động máy chủ X không có quyền, điều này không thực sự được khuyến nghị. Bảo vệ 'xhost' vẫn còn khập khiễng, vì dữ liệu được gửi 'văn bản đơn giản' giữa máy tính xách tay và máy trạm và có thể bị đánh hơi, nhưng đó là một giải pháp dễ dàng.

Nếu bạn muốn bảo mật, bạn cần thiết lập một số loại đường hầm được mã hóa giữa máy tính xách tay của bạn và máy trạm (cổng 6000 để hiển thị: 0). Yup, nó trở nên kỳ lạ ở điểm này.

Nếu bạn đang ở trong một môi trường được kiểm soát, thì sử dụng lệnh 'xhost + laptop' là đủ, nếu bạn rời khỏi phần 'laptop' của lệnh đó 'xhost +', thì BẤT K can AI có thể kết nối với Xserver và hiển thị mọi thứ.

Hãy nhớ rằng, chuột của bạn KHÔNG được 'kết nối' với máy chủ Xserver và bạn sẽ KHÔNG thể thao tác với các cửa sổ hoặc nhấp vào mọi thứ.

Nếu bạn muốn chuột được kết nối, tôi muốn giới thiệu một cái gì đó như x2x, sức mạnh tổng hợp, vnc hoặc ứng dụng chia sẻ màn hình dựa trên X Windows.


Cảm ơn câu trả lời của bạn ! Bạn nói đúng, tôi có thể cần chỉ định thêm một số điều: (1) Máy trạm đang chạy giao diện người dùng Gnome (2) Tôi không muốn chạy các chương trình từ máy tính xách tay của mình. Xeyes hoặc bất cứ thứ gì nên được chạy trên máy trạm với màn hình của máy trạm (3) Không sao, tôi hiểu con trỏ của tôi sẽ không được kết nối.
xApple

Ồ, vậy thì bạn thực sự chỉ cần ssh vào máy trạm, đặt biến HIỂN THỊ thành 'localhost: 0' (hoặc chỉ ': 0') và khởi động ứng dụng của bạn. Bạn vẫn sẽ cần phải xử lý các quyền (xhost + localhost có thể là câu trả lời tốt nhất) và nohup, hoặc &! (nền và từ chối), hoặc các lệnh bg / disown từ shell để ứng dụng không thoát khi bạn đăng xuất. (trừ khi đó là những gì bạn muốn, tất nhiên)
lornix

Ah, vậy có lẽ vấn đề của tôi chỉ là vấn đề cho phép. Mặc dù, nếu tôi chạy "xeyes" với quyền root thì thông báo lỗi là như nhau. Nếu bạn đăng một câu trả lời giải quyết các vấn đề về quyền, tôi có thể đánh dấu nó là đã giải quyết!
xApple

Có ai đăng nhập vào phiên X windows trên máy trạm không? Không có điều đó, mã nghe các kết nối chương trình chưa hoạt động, chỉ là công cụ đăng nhập. (Tôi đang đơn giản hóa rất nhiều!) Hãy thử ssh'ing với máy trạm, sau đó 'startx', THÌ bạn có thể kết nối với màn hình. Một cách khác là sử dụng máy chủ X xương trần, gõ 'X: 0 &', đặt biến HIỂN THỊ và sau đó thực hiện 'xhost + máy tính xách tay' (hoặc chỉ 'xhost +'). Nhưng đó là nhận được một chút mức độ thấp cho hầu hết. (Tuyệt vời để thử nghiệm!)
lornix

Có, tôi đã đăng nhập vào một phiên Gnome trên máy trạm trước khi ngắt kết nối bàn phím và chuột. Tôi đã cố gắng thực hiện lệnh "startx" từ phiên ssh của mình. Thông báo lỗi như sau: "X: người dùng không được phép chạy máy chủ X, hủy bỏ."
xApple
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.