Tôi đang cố gắng chạy gedit
từ thiết bị đầu cuối SSH trên Windows, được kết nối với phiên bản Amazon EC2 chạy Ubuntu 12.04 Server và tôi gặp lỗi này:
Cannot open display:
Làm thế nào để tôi sửa nó?
Tôi đang cố gắng chạy gedit
từ thiết bị đầu cuối SSH trên Windows, được kết nối với phiên bản Amazon EC2 chạy Ubuntu 12.04 Server và tôi gặp lỗi này:
Cannot open display:
Làm thế nào để tôi sửa nó?
Câu trả lời:
Vì bạn đang sử dụng Windows về phía mình, bạn sẽ cần một máy khách SSH chạy máy chủ X cục bộ trên Windows để chạy các ứng dụng đồ họa từ máy chủ từ xa trên màn hình của bạn.
Từ kinh nghiệm, tôi muốn giới thiệu MobaXTerm miễn phí có chức năng này tích hợp. Vui lòng tải xuống và dùng thử:
Nếu bạn gặp bất kỳ lỗi nào, đó là vì đôi khi hình ảnh máy chủ tối thiểu có thể không được thiết lập để cho phép chuyển tiếp X vào nó. Trong trường hợp đó, xin vui lòng bình luận và tôi sẽ giúp bạn giải quyết nó; Tôi đã thực hiện điều này với rất nhiều VPS tối thiểu chạy Ubuntu / Debian.
Vì vậy, bạn đang kết nối từ máy tính gia đình của bạn (hãy gọi nó là máy của bạn ) đến một máy chủ (hãy gọi nó là máy chủ ) thông qua ssh ? Bạn muốn bắt đầu một chương trình với một cửa sổ đồ họa trên máy chủ thông qua máy của bạn? Nếu đó là chính xác hơn bằng mọi cách đọc trên.
Hãy gọi chương trình để bắt đầu gedit
nhưng quá trình này giống nhau cho tất cả. Tùy thuộc vào nơi bạn muốn xem cửa sổ đồ họa bỏ qua tiêu đề bên phải.
Nếu bạn muốn xem và sử dụng cửa sổ của gedit trên máy từ xa của mình nhưng bắt đầu vào máy chủ, bạn sẽ muốn phiên shell của mình trông như thế này:
user@remote-machine:~$ ssh -X user@server
Last login: Tue Aug 14 13:47:04 2012 from clientXX
*******************************************************************************
M O T D (Message Of The Day)
*******************************************************************************
user@server:~$ gedit .bash_aliases
** (gedit:7851): WARNING **: Could not load theme icon gtk-home: Icon 'gtk-home' not present in theme
(gedit:7851): Gtk-WARNING **: Attempting to store changes
Đừng bận tâm đến các cảnh báo, chúng là bình thường - cửa sổ gedit sẽ bật lên trên màn hình của máy từ xa giống như trên máy chủ. Mẹo nhỏ là sử dụng "-X" -option như trong ssh -X
đó cho phép tạo đường hầm X và đặt DISPLAY
biến đúng.
Điều này giả định rằng bạn đang sử dụng máy khách SSH hỗ trợ X11 và máy chủ của bạn có máy chủ X đang chạy (một số không cần GUI không chạy máy chủ X). Đặc biệt trên windows, đây có thể là một vấn đề vì hầu hết các chương trình thiết bị đầu cuối của windows không có X. Như izx đã nói, MobaXTerm là một trong nhiều máy khách SSH cho các cửa sổ có X-Server.
Tuy nhiên, đối với máy chủ thiếu X11, bạn phải cài đặt nó.
Bạn cũng có thể bắt đầu một phiên bản trên màn hình máy chủ của mình bằng cách gọi gedit như thế này:
ssh user@server
DISPLAY=:0.0 gedit
Bạn phải thay thế giá trị phù hợp thay vì :0.0
để có được nó trên màn hình X bên phải (chỉ quan trọng nếu nhiều màn hình được kết nối với máy chủ của bạn hoặc nếu nó có phần kỳ dị trong cấu hình của nó).
Ở đây, kịch bản phổ biến nhất cho việc không hoạt động sẽ là nếu Máy chủ thiếu X11-Server nhưng không có màn hình kết nối với nó hoặc không có giao diện người dùng đồ họa và bạn sẽ không đọc được điều này: D.
Tôi không phải chuyên gia về điều này, nhưng cách tôi nghĩ rằng nó hoạt động được, mà mỗi màn hình vật lý, tức là mỗi màn hình kết nối với một máy tính cá nhân được một số chạy theo hình thức 0.0
, 1.0
, 2.0
, ...
Số này được gán bởi X-Window-System hay còn gọi là X11. Đó là một lớp để cung cấp một mạng và giao diện đồ họa cơ bản mà Unity, Gnome, KDE và những thứ tương tự có thể xây dựng dựa trên.
Bạn có thể xem có bao nhiêu màn hình của một máy nhất định và số lượng đang sử dụng bằng cách chạy for x in /tmp/.X11-unix/X*; do echo ":${x##*X}"; done
trên máy đang được đề cập. * Sau đó, mỗi máy tính được cấu hình để làm cho màn hình của nó khả dụng và chạy máy chủ X có tên máy chủ. Bạn có thể sử dụng màn hình máy chủ từ bất kỳ máy nào trong cùng một mạng bằng cách đặt DISPLAY
biến của mình cho phù hợp DISPLAY=hostname:0.0
. Ssh làm điều này cho bạn một cách hợp lý nếu bạn cung cấp -X
tùy chọn.
* Lưu ý: Tôi cho rằng có một cách tốt hơn so với vòng lặp for này.
Sử dụng một trình soạn thảo văn bản shell. vi
, vim
, nano
Và emacs
là phổ biến nhất và ít nhất một trong số họ sẽ được cài đặt và hoạt động. Trong số đó nano
là dễ nhất và tự giải thích nhất.
for
vòng lặp một chút..tôi sẽ chỉ hiển thị địa chỉ hiển thị, vd :0
:0.0
. Vui lòng quay trở lại nếu bạn nghĩ rằng đó không phải là điều bạn muốn ..
Về cơ bản, bạn có một thiết bị đầu cuối thông qua SSH và Gedit là một chương trình GUI. câu trả lời của con-f-use sẽ khiến nó hoạt động từ phiên máy khách GUI của Linux.
Tùy chọn khác sẽ là sử dụng trình soạn thảo không phải GUI như nano, Vi hoặc nhiều trình soạn thảo khác.