سؤال كيف أقوم بإصلاح خطأ "لا يمكن فتح العرض" عند فتح برنامج X بعد تمكين ssh'ing مع إعادة توجيه X11؟


بعد إطلاق تطبيق X11 (XQuartz 2.3.6، xorg-server 1.4.2-apple56) على جهاز Mac الخاص بي (OS X 10.6.8) ، فتح جهاز في X11 وتشغيل xhost +، وبعد ذلك ssh -Y إلى بلدي أوبونتو 10.04 VM (يعمل على VMware الانصهار). عندما أركض gedit .bashrc (على سبيل المثال) ، أحصل على:

(gedit:9510): Gtk-WARNING **: cannot open display: 

set | grep DISPLAY يعيد شيئا.

ولكن إذا أنا ssh -Y إلى جهاز Ubuntu 11.04 ، gedit .bashrc يعمل. echo $DISPLAY بإرجاع "localhost: 10.0".

حاولت export DISPLAY=localhost:10.0 في حين sshed في بلدي VM ثم تعمل gedit .bashrc، لكني حصلت على:

(gedit:9625): Gtk-WARNING **: cannot open display: localhost:10.0

ما الذي يمكن أن يكون مختلفًا في تكوين جهازي Ubuntu اللذين يفسران سبب عمل أحدهما والآخر لا يعمل؟

تحديث: كما اقترح من قبل Zoredache في التعليق أدناه ، ركضت sudo apt-get install xbase-clients، لكنني مستمر في الحصول على نفس المشكلة.


87
2017-07-13 18:13


الأصل


هل يحتوي صندوق أوبونتو 10.04 على الأدوات المناسبة لتثبيت X11؟ تثبيت xbase- العملاء ، إذا لم يتم تثبيت بالفعل. - Zoredache
لقد قمت بتثبيته ولكن لا يزال لديك نفس المشكلة. (أنظر فوق.) - Daryl Spitzer
نعم فعلا. فقط للتأكد من ذلك ، قمت بإعادة تشغيل VM (وأعيد توصيلها من خلال SSH بعد ذلك). - Daryl Spitzer
ربما حاول تمرير خيار -vv إلى ssh عند الاتصال ، هذا يطبع رسائل debbose مطبقة ، سترى عدة تعليقات حول إعادة توجيه X11 أثناء الاتصال. - Zoredache
في حالتي كانت مجرد مسألة ترقية الإصدار XQuartz من MacOS - Waruna Ranasinghe


الأجوبة:


تحقق من sshd_config الخادم (عادةً /etc/ssh/sshd_config) ، وتأكد من تمكين الخيار X11Forwarding مع الخط

X11Forwarding yes

إذا لم يتم تحديد X11Forwarding ، فسيكون الإعداد الافتراضي هو عدم وجود أجهزة Debian المتوفرة لدي لفحصها.


33
2017-07-13 18:54



اكتشفت بعد إعداد Ubuntu VM آخر ، أنني بحاجة إلى تثبيت xbase-clients وتمكين X11Forwarding. قم بتحديث إجابتك لتشمل كلاهما وسوف أقبلها. - Daryl Spitzer
مثير للإعجاب. على الأقل على التثبيت الجديد 10.04 الذي قمت به هذا الصباح تم تمكين X11Forwarding بشكل افتراضي. يجب أن يعبث شباب Ubuntu مع الافتراضات مرة أخرى. - Zoredache
DerfK ، في نظام بلدي "X11 إحالة نعم" كان هناك بالفعل ما زلت أتلقى خطأ كما ، (gedit: 8381): Gtk-WARNING **: لا يمكن فتح الشاشة:في حالات كهذه - A J
في دبيان ، قد يتعين عليك تثبيت حزمة xauth ، ثم تسجيل الدخول مرة أخرى. - comte


من عند + xhost: كيفية إصلاح "لا يمكن فتح العرض" خطأ أثناء بدء تشغيل واجهة المستخدم الرسومية على خادم عن بعد:

إجابة: يمكنك إصلاح الخطأ "لا يمكن فتح العرض" باتباع الإجراء xhost المذكورة في هذه المقالة.

السماح للعملاء بالاتصال من أي مضيف باستخدام xhost +

تنفيذ الأمر التالي لتعطيل التحكم في الوصول ، التي   يمكنك السماح للعملاء بالاتصال من أي مضيف.

$ xhost +

تعطيل التحكم في الوصول ، يمكن للعملاء الاتصال من أي مضيف

تمكين إعادة توجيه X11

أثناء استخدام ssh ، استخدم الخيار -X لتمكين إعادة توجيه X11.

$ ssh username@hostname -X

تمكين إعادة توجيه X11 الموثوق بها ، باستخدام الخيار -Y ،

$ ssh username@hostname -Y

افتح تطبيقات واجهة المستخدم الرسومية في ذلك المضيف

بعد فتح اتصال ssh بالمضيف البعيد كما هو موضح أعلاه ،   يمكنك فتح أي تطبيق واجهة المستخدم الرسومية التي ستفتحها دون أي مشكلة.

إذا استمر ظهور الخطأ "لا يمكن فتح العرض" ، فعيِّن DISPLAY   متغير كما هو موضح أدناه.

$ export DISPLAY='IP:0.0'

ملاحظة: IP هو عنوان IP لمحطة العمل المحلية حيث تريد واجهة المستخدم الرسومية   تطبيق ليتم عرضها.


49
2018-02-21 08:47



+1 للملاحظة ذلك IP = هو IP لمحطة العمل المحلية حيث تريد الحصول على واجهة المستخدم الرسومية - PCoder
بالنسبة لأولئك الذين لديهم مشكلات مشابهة في OS X ، تأكد أيضًا من تثبيت XQuartz ، وإلا لن يساعد أي من هذه الإصلاحات. (يوضح سؤال OP انه لديه XQuartz ، لذلك هذا هو أكثر ملاحظة جانبية لأولئك الذين لديهم مشاكل مماثلة كما كنت) - Dolan Antenucci
لاحظ أن تشغيل xhost + غير آمن للغاية ويجب عدم استخدامه! وكما ذكر ستيفان روجن ، يمكن للمهاجم من المضيف الاتصال بـ XSession الخاص بك ، أو قراءة كل ما تكتبه ، أو حتى تغيير الشاشة التي تراها. - jirislav


لقد واجهت هذه المشكلة عند تسجيل الدخول إلى جهاز Ubuntu VM من نظام التشغيل Mac OS X أيضًا - لا يبدو أنه يحب 'localhost' في متغير العرض لسبب ما. لذا ، اضبط IP يدويًا ، كما يقترح harrymc:

export DISPLAY="127.0.0.1:10.0"

ثم يجب أن تكون برامج X11 على ما يرام. لا يبدو أنه من الضروري أن نقول لنظام التشغيل أن localhost و 127.0.0.1 متساويين ، لكنه يعمل على الأقل.


17
2018-06-29 20:44



هذا العمل بالنسبة لي. أي فكرة لماذا لم يعمل localhost؟ - Alex
BINGO! لقد تعثرت من هذه المشكلة لبعض الوقت ... أنا متصلا من قبل SSH ولم أستطع تشغيل برامج Gtk (سهل X11 ، مثل "xeyes" ، عملت مع ذلك). كان العرض صحيحًا. في الواقع ، لم يكن قرار "المضيف المحلي"! إذا قمت بتعيين يدوي DISPLAY = 127.0.0.1: 10.0 ، أو DISPLAY = :: 1: 10.0 فإنه يعمل. يبدو أن تحرير / etc / hosts ليس له أي تأثير ؛ ويتم تكوين DNS بشكل صحيح (تقرير "تقرير localhost" correlty على حد سواء 127.0.0.1 و :: 1) لذا ، يبدو أنه خطأ في أي حل DNS لاتصالات X11 في Gtk (gtk؟ gdk؟ glib؟ other؟). - Pablo Saratxaga
على تثبيت Debian لـ Black Bone Bone Black ، لم يتم تعيين / etc / host للقراءة من قبل أي شخص سوى الجذر. هذا سبب الأعراض المذكورة هنا. صنع / الخ / المضيفين مقروء من قبل الجميع ، وأنها عملت بشكل جيد. - Daniel


كان لدي هذه المشكلة مع خادم CentOS KVM الخاص بي ، كنت في عداد المفقودين في برنامج "xauth".


13
2017-10-22 07:59



هذا ساعدني على تركيب ديبيان الحد الأدنى ، شكرا جزيلا لك! - binOr


إذا كان لديك هذه المشكلة بعد فترة من الزمن عند تشغيل مع -X وسيطة. أو فقط ForwardX11 في / etc / ssh / ssh_config ، ثم شغّل $ ssh username@hostname -Yللتمكين موثوقة X11 إعادة التوجيهلا تعرف السبب الدقيق لكني أخمنه -X بعض الميزات تنتهي بعد بعض الوقت ، وربما لزيادة الأمن.

إليك ما وجدته على الإنترنت:

إذا كنت تستخدم remshemach ssh -X يتم التعامل مع الآلة البعيدة   عميل غير موثوق به. لذلك يرسل العميل المحلي الخاص بك أمرًا إلى جهاز التحكم عن بُعد   الجهاز ويتلقى الإخراج الرسومية. إذا كان الأمر ينتهك   بعض إعدادات الأمان ستتلقى خطأً بدلاً من ذلك.

ولكن إذا كنت تستخدم ssh -Y remotemachine يتم التعامل مع الجهاز البعيد   عميل موثوق به. هذا الخيار الأخير يمكن أن يفتح مشاكل الأمان. لان   يمكن للعميل الرسومية الأخرى (X11) تشخيص البيانات من الجهاز البعيد   (قم بعمل لقطات للشاشة ، وقم بالقيام بتدوينات المفاتيح وغيرها من الأشياء السيئة) ، بل وحتى   ممكن لتغيير هذه البيانات.

إذا كنت تريد معرفة المزيد عن تلك الأشياء أقترح قراءة   Xsecurity manpage أو X Extension extension spec. علاوة على ذلك أنت   يمكن التحقق من الخيارات ForwardX11 و ForwardX11Trusted في الخاص بك   / الخ / سه / ssh_config.

مصادر:


9
2017-10-17 08:06





عند تشغيل UXTERM أو XTERM إصدار فقط

export $DISPLAY 

المتغير سيكون هناك. ثم قم بتعيينه وقم بتصديره.


4
2017-07-10 21:26





مجرد اختبار على جهاز ماكنتوش ، قد تكون أنظمة أخرى موافق:

  1. السماح للعملاء بالاتصال من أي مضيف باستخدام xhost +

    $ xhost +

  2. يجب أن يكون لديك بيئة تدعم عرض X11

    [نظام Mac] تثبيت X11 لنظام التشغيل Mac https://www.xquartz.org/

  3. يجب عليك السماح ssh-server الخاص بك إلى الأمام عرض x11

    تحديث /etc/ssh/sshd_config وحدد X11Forwarding yes، ثم قم بإعادة تشغيل خادم ssh الخاص بك

  4. يجب عليك السماح جلسة ssh الخاص بك إلى الأمام عرض x11 مع -X معامل

    $ ssh -X user @ ip

  5. كيف يتم فتح X11 في PyCharm؟
    • افتح جلسة ssh التي تدعم عرض X11 (تذكر الاحتفاظ بهذه الجلسة)
    • يركض echo $DISPLAY في تلك الجلسة سه
    • جلس DISPLAY متغير البيئة لـ PyCharm الخاص بك

4
2017-08-30 11:36



لماذا هذا مختلف أو لماذا يفضل على أي من الإجابة الأخرى؟ يرجى توضيح ما إذا كنت تستطيع مع بسيطة تصحيح. يمكنك أن تفعل ذلك!! - Pimp Juice IT
@ ماكدونالدز شكر ، مع تحديث المزيد من التفاصيل. - Color


كما أتيحت لي هذه المشكلة مع Solaris 10 ووجدت أن المستمع لم يتم إعداده.

svccfg –s /application/x11/x11-server listprop options/tcp_listen
svccfg –s /application/x11/x11-server setprop  options/tcp_listen = true

2
2018-03-18 22:52