Tại sao màn hình x11 không hoạt động thông qua đăng nhập ssh?


22

Tôi đã đăng nhập vào một máy chủ từ xa và đang cố gắng hiển thị một ứng dụng x (ví dụ: firefox). nhưng một thông báo lỗi xuất hiện. Dưới đây là những nỗ lực của tôi để mở firefox

Black@Black-PC ~
$ ssh -X kwagjj@$labserver -p 122
[kwagjj@James5 ~]$ firefox
Error: no display specified
[kwagjj@James5 ~]$ exit
logout
Connection to 143.248.146.204 closed.

Black@Black-PC ~
$ ssh -Y kwagjj@$labserver -p 122
[kwagjj@James5 ~]$ firefox
Error: no display specified
[kwagjj@James5 ~]$ 

Tôi đã sử dụng -X, -Y vì tôi đã đọc ở đâu đó rằng hai tùy chọn này có liên quan đến thông tin đăng nhập liên quan đến X11 và các công tắc này sẽ thực hiện công việc cho tôi. Ngay cả khi không có công tắc -X, -Y, nỗ lực của tôi đã thất bại.

Lỗi 'không hiển thị speicified' có nghĩa là gì?

PS Điều kỳ lạ là nếu tôi kết nối với máy chủ từ xa thông qua PUTTY của mình và lặp lại lệnh 'firefox' thì nó hoạt động?!?! (Firefox được hiển thị trên máy tính cục bộ)

PS máy tính cục bộ của tôi là Windows 7 vì vậy tôi có Xming chạy trên nền để cho phép X11 hiển thị. Đối với các nỗ lực được viết ở phần trên, các lệnh đã được nhập vào tại thiết bị đầu cuối Cygwin.


Bạn đã thử hiển thị một cái gì đó cục bộ từ thiết bị đầu cuối Cygwin của bạn? Ví dụ: bạn có thể tìm thấy một tiện ích X cục bộ như xclock và chạy nó để xem điều gì xảy ra. Nếu bạn không thể hiển thị cục bộ, màn hình từ xa sẽ không hoạt động. Bạn cũng có thể cần máy chủ X cho Cygwin.
unxnut

1
@unxnut như bạn đã chỉ ra, DISPLAYbiến của tôi chưa được đặt. Vì vậy, tôi đã thiết lập nó với export DISPLAY=:0.0' and executed xclock` và xclock xuất hiện. Nhưng khi tôi đăng nhập vào máy chủ từ xa thông qua ssh và thử xclocklại, nó báoError: Can't open display:
kwagjj

Câu trả lời:


16

Đảm bảo rằng bạn có bộ biến HIỂN THỊ trong môi trường cygwin của bạn:

export DISPLAY=:0.0

sau khi kết nối với SSH, hãy kiểm tra xem trình bao đó có biết biến HIỂN THỊ chính xác với:

echo $DISPLAY

4
Tôi đã thiết lập biến HIỂN THỊ trong thuật ngữ cygwin của máy tính cục bộ và sau đó ssh'ed đến máy chủ từ xa và gõ echo $DISPLAY. Nhưng vẫn là biến HIỂN THỊ trong máy chủ từ xa được đặt thành không có gì ..
kwagjj

2
Error: Can't open display: :0.0
Ahmed

2
Làm điều này:export DISPLAY=localhost:0
trogne

18

Tôi vừa gặp phải vấn đề này khi kết nối với máy chủ RHEL7 không đầu.

Bạn cần gói xorg-x11-xauth được cài đặt trên máy chủ của bạn để biến HIỂN THỊ được thiết lập và được ủy quyền chính xác.

Hy vọng tôi đã cứu ai đó một thời gian.


3
Chính xác những gì tôi đang tìm kiếm. Nhiều đánh giá cao!
josh-cain

1
Câu trả lời chính xác! Các giải pháp khác (cài đặt HIỂN THỊ thủ công thông qua xuất) sẽ dẫn đến việc truyền không được mã hóa giữa máy khách và máy chủ! Trên Debian Squeeze, đó là gói "xauth" cần được cài đặt để mọi thứ hoạt động. Sau một đăng nhập lại mỗi ssh -Xmột echo $DISPLAYtrở URL + cổng và tiếng gọi của xterm &mở ra một thiết bị đầu cuối trong một cửa sổ địa phương.
Jpsy

7

Cảm ơn @jensd, @unxnut đã giúp tôi. dựa trên ý kiến ​​của bạn tôi đã có thể tìm ra vấn đề.

Giải pháp cần hai bước:

  1. biến HIỂN THỊ phải được đặt đúng.
  2. Khi ssh'ing đến máy chủ từ xa, công tắc -X phải được bật

những nỗ lực trước đây của tôi thiếu một hoặc cả hai điều kiện này.

Dù sao đi nữa, đối với những người dùng sau này xem đây là những ví dụ để cho bạn thấy những gì tôi đang cố gắng nói.

trường hợp 1

máy cục bộ của tôi sẽ không có bộ biến HIỂN THỊ. Và sau đó tôi sẽ ssh đến máy chủ từ xa với chuyển đổi -X và sau đó thử thực thi xclock.

Black@Black-PC ~
$ echo $DISPLAY

## the blank means that DISPLAY variable has not been specified##
Black@Black-PC ~
$ ssh -X kwagjj@$labserver -p 122
Last login: Tue Jun 24 22:23:13 2014 from 
[kwagjj@James5 ~]$ xclock
Error: Can't open display:
[kwagjj@James5 ~]$ setenv | grep $DISPLAY
DISPLAY: Undefined variable.

như bạn có thể thấy một lỗi Error: Can't open display:được hiển thị tại thiết bị đầu cuối máy chủ từ xa.

trường hợp2

lần này, tại máy cục bộ, tôi sẽ chỉ định biến HIỂN THỊ. Nhưng khi tôi đang chạy, tôi sẽ không bật công tắc -X. Kết quả sẽ là một thất bại:

Black@Black-PC ~
$ export DISPLAY=:0.0

Black@Black-PC ~
$ echo $DISPLAY
:0.0

Black@Black-PC ~
$ ssh kwagjj@$labserver -p 122
Last login: Tue Jun 24 22:33:32 2014 from 
[kwagjj@James5 ~]$ xclock
Error: Can't open display:
[kwagjj@James5 ~]$ setenv | grep DISPLAY
[kwagjj@James5 ~]$ 

Khi bắt đầu, bạn có thể thấy rằng tôi đã đặt đúng biến HIỂN THỊ. Nhưng ngay cả như vậy, sau khi ssh'ing (không có công tắc -X), xclock vẫn không được thực thi.

* Một kết quả khác với setenv | grep DISPLAYcó thể được nhìn thấy ở đây (so sánh với case1). trong case2, kết quả chỉ là trống. mặt khác, kết quả của case1 đối với dòng lệnh này là DISPLAY: undefined variable.... Tôi không chắc sự khác biệt này được gây ra như thế nào nhưng tôi có một linh cảm liên quan đến việc bạn có hài lòng với điều kiện 1. hay 2 không .

trường hợp 3

lần này, tôi sẽ chỉ định chính xác biến HIỂN THỊ tại máy cục bộ và ssh đến máy chủ từ xa khi bật công tắc -X của tôi.

Black@Black-PC ~
$ echo $DISPLAY
:0.0

Black@Black-PC ~
$ ssh -X kwagjj@$labserver -p 122
Warning: untrusted X11 forwarding setup failed: xauth key data not generated
Warning: No xauth data; using fake authentication data for X11 forwarding.
Last login: Tue Jun 24 22:37:27 2014 from 
[kwagjj@James5 ~]$ xclock &
[1] 9174
[kwagjj@James5 ~]$ setenv | grep DISPLAY
DISPLAY=localhost:11.0
[kwagjj@James5 ~]$

với cài đặt này, xclockhoạt động !! đây là một ảnh chụp màn hình để chứng minh rằng tôi không nói dối. nhập mô tả hình ảnh ở đây xclock được hiển thị thành công trong máy cục bộ của tôi.

Một lần nữa, kiểm tra kết quả setenv | grep DISPLAYtrong trường hợp này. Bây giờ nó cho thấy DISPLAY=localhost:11.0. Từ những gì tôi biết, điều này có liên quan đến MIT-MAGIC-COOKIE trong tệp .Xmasterity nhưng vì tôi không biết nhiều về điều này nên tôi sẽ không đi xa hơn.

Kết luận: từ ba trường hợp trên, chúng tôi có thể xác nhận rằng để Windows X từ xa được hiển thị đúng, cả 1. Biến HIỂN THỊ của máy cục bộ và 2. -Xcông tắc ssh phải được đặt đúng. Tất nhiên, máy chủ từ xa sẽ cho phép X11 tiến tới.

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.