ssh -X Lỗi Xt lỗi: Không thể mở hiển thị :: 0,0.


9

Tôi đang cố mở xtermtrên máy chủ từ xa (Ubuntu Server 10.04) bằng ssh:

ssh -X name@machine xterm

nhưng lỗi trả về là:

xterm Xt error: Can't open display: :0.0`

Tôi googled và thử mọi thứ tôi tìm thấy. Vẫn nhận được lỗi này. Biến HIỂN THỊ nên được đặt tự động, phải không?

Một phần của sshd_config:

X11Forwarding yes
X11DisplayOffset 10
PrintMotd no
PrintLastLog yes
TCPKeepAlive yes

Có lời khuyên nào không?


Bạn có thể chạy xtermtrong thiết bị đầu cuối hiện tại trước khi ssh-ing?
enzotib

@ Belacqua: không bắt buộc. Tôi thường kết nối với một máy chủ không đầu từ xa và có thể dễ dàng chạy các ứng dụng X từ xa trên máy chủ X cục bộ.
enzotib

@enzotib - cảm ơn; Tôi không biết điều đó.
belacqua

@enzotib xin lỗi, tôi không thấy bình luận của bạn. Có, tôi có thể mở xterm trên máy cục bộ của mình
Fabian

Câu trả lời:


8

Nếu ssh có thể thiết lập kết nối, nó sẽ được đặt thành DISPLAYgiá trị phù hợp. Vì bạn đã X11DisplayOffsetđặt thành 10 (giá trị mặc định), ssh sẽ sử dụng màn hình có sẵn đầu tiên bắt đầu từ 10. Nếu bạn thấy giá trị thấp hơn 10¹, thì có gì đó đang can thiệp vào chuyển tiếp X11 bình thường được thiết lập bởi ssh, ít nhất là bởi ghi đè DISPLAY. Giá trị :0(hoặc :0.0, phần sau dấu chấm không liên quan) biểu thị màn hình đầu tiên được khởi động trên máy, trong trường hợp điển hình là phiên hoạt động (hoặc dấu nhắc đăng nhập đồ họa) trên bảng điều khiển của máy.

Giải thích rất có thể cho hành vi bạn quan sát là một trong các tệp cấu hình shell của bạn được đặt DISPLAY. Thủ phạm rõ ràng nhất là ~/.bashrc(do một cú bash được thực thi bất cứ khi nào cha mẹ của bash là rshdhoặc sshd, ngay cả khi shell không tương tác). Một tập tin khác xác định các biến môi trường là /etc/environment. Nếu đó là trường hợp, giải pháp là rõ ràng: không đặt DISPLAYở đó. (Có rất ít trường hợp bạn cần đặt DISPLAYthủ công.)

Có những lời giải thích kỳ lạ khác. Điều này có thể xảy ra nếu bạn đã thay đổi shell đăng nhập của mình thành screen(một ý tưởng dễ thương về mặt lý thuyết, nhưng không thực tế) và bạn có một tệp khởi tạo shell buộc phải đặt DISPLAYbên trong màn hình (không phải là một ý tưởng hay). Điều này cũng có thể xảy ra nếu bạn định cấu hình máy chủ chấp nhận các biến môi trường được gửi bởi máy khách ( AcceptEnvchỉ thị trong sshd_config), máy khách đang gửi DISPLAYvà kết nối X không thể được thiết lập. Hoặc nó có thể xảy ra nếu bạn đặt biến môi trường trên máy chủ thông qua lệnh commandtrong ~/.ssh/authorized_keys. Hoặc xtermcó thể là một kịch bản.

¹ Hoặc bất cứ điều gì giá trị của X11DisplayOffsetlà trong cấu hình máy chủ, nhưng nó hầu như không bao giờ thay đổi so với mặc định.


1
có những cách được liệt kê để khắc phục các vấn đề khác nhau mà bạn đề cập sẽ hữu ích.
George Stocker

@GeorgeStocker Tất cả những vấn đề này thuộc về hình thức có một số cài đặt trong tệp cấu hình, do đó, cách khắc phục cho tất cả những vấn đề này là xóa hoặc thay đổi cài đặt. Có một cái cụ thể mà bạn có thể xác định nhưng không sửa chữa?
Gilles 'SO- ngừng trở nên xấu xa'

Tôi thấy DISPLAY=localhost:11.0trong tôi env, nhưng sự liên quan của nó và liệu tôi có nên thay đổi nó thành DISPLAY 10.0không rõ ràng.
George Stocker

@GeorgeStocker Sau đó, các triệu chứng của bạn không phù hợp với câu hỏi này. Tôi đã cập nhật câu trả lời của mình để làm rõ rằng 10 là giá trị ngưỡng dưới đây mà câu trả lời này được áp dụng. 11 là một giá trị dự kiến ​​ở đây (có thể là kết nối SSH hoạt động thứ hai với chuyển tiếp X).
Gilles 'SO- ngừng trở nên xấu xa'

Tôi đang chạy DISPLAY=:0 xtermvà vẫn gặp xterm: Xt error: Can't open display: :0lỗi, vì vậy biến môi trường không phải là vấn đề.
Dan Dascalescu

3

Lệnh của bạn nên hoạt động, hoặc ít nhất là nó cho tôi. Hãy thử điều này thay thế:

ssh -Y user@machine xterm

Chỉnh sửa (1):

Thử cái này:

ssh -X user@machine env

Điều đó sẽ hiển thị tất cả các môi trường. Cần có nhiều thứ SSH khác nhau trong đó, và cả HIỂN THỊ. HIỂN THỊ nên là 10.0.

Bạn cũng có thể thử điều này:

ssh -X user@machine DISPLAY=10.0 xterm

Tôi đã thử nó -Ynhưng nó cũng không hoạt động. Tôi vẫn nhận đượcCan't open display: :0.0
Fabian

Máy địa phương của bạn đang chạy gì? : 0,0 có liên quan, vì nó là mặc định cho máy chủ X cục bộ , không phải từ xa ...
ed.

Tôi sử dụng Ubuntu 10.04, Linux Mint 11 hoặc Mac OS X 10.7. Cách sử dụng tùy thuộc vào vị trí (công việc / nhà), nhưng lỗi hoàn toàn giống nhau
Fabian

Tôi sẽ chỉnh sửa câu trả lời ... (1)
ed.

Biến HIỂN THỊ của tôi làlocalhost:10.0
Alexis Wilke

2

Kiểm soát truy cập của X có thể là cách.

Chạy xhost +(từ gói x11-xserver-utils) để vô hiệu hóa hoàn toàn kiểm soát truy cập.



1

Tôi thấy rằng xauth đã không được cài đặt.


0

Ngoài ra, hãy kiểm tra xem bạn đã cài đặt X11 ở đầu máy khách chưa. Tôi gặp vấn đề này khi nâng cấp máy Mac lên OS X Mountain Lion. Mountain Lion loại bỏ X11, vì vậy bạn phải cài đặt lại thông qua dự án X Quartz nguồn mở. http://xquartz.macosforge.org/landing/


-1

Trước tiên, bạn nên mở kết nối và sau khi thiết lập xterm mở.


Cảm ơn bạn vì câu trả lời. Bạn có ý nghĩa gì với "mở một kết nối"? Khi tôi sử dụng ssh -X name@machine và sau khi kết nối, xtermtôi gặp lỗi tương tự. Ý bạn là sao? ;)
Fabian

Không, nó cũng hoạt động mà không cần kết nối trước.
enzotib

@Fabian - Tôi tin đó là ý anh.
belacqua

Tôi nghĩ rằng một kết nối VNC là cần thiết.
nanofarad

@enzotib, à ... thực sự sshlà kết nối đầu tiên, sau đó xterm được bắt đầu trong sshmôi trường đó . Vì vậy, dù cách nào cũng tương tự như vậy nếu bạn sử dụng ssh -X remotetrước thì bạn có thể kiểm tra xem bạn có kiểm tra hay không echo $DISPLAYđể đảm bảo rằng nó $DISPLAYđược đặt đúng trên máy tính từ xa sau một ssh -X.
Alexis Wilke
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.