स्थानीय मशीन पर एप्लिकेशन चलाएं और रिमोट डिस्प्ले पर GUI दिखाएं


35

क्या मेरे स्थानीय डेस्कटॉप पर एप्लिकेशन चलाना संभव है लेकिन मेरे लैपटॉप (रिमोट एक्स) पर जीयूआई प्रदर्शित करें?

मैं सोच रहा था कि 2 अलग-अलग लैन से जुड़ी मशीनों का उपयोग करके दोहरे-मॉनिटर सेटअप का अनुकरण करना संभव है या नहीं।

मैंने तालमेल स्थापित किया है और मैं अपने लैपटॉप को डेस्कटॉप कीबोर्ड / माउस के साथ आसानी से नियंत्रित कर सकता हूं, लेकिन मैं केवल डेस्कटॉप पर कुछ चलाना और लैपटॉप स्क्रीन पर जीयूआई प्रदर्शित करना चाहूंगा।

एक्स के साथ अपने सीमित अनुभव से, मुझे पता है कि मैं एक रिमोट मशीन पर एक कार्यक्रम चला सकता हूं और आउटपुट दिखाने के लिए पहले के प्रदर्शन का उपयोग कर सकता हूं, लेकिन दूसरे तरीके से नहीं।

किसी भी संकेत से बहुत मदद मिलेगी। धन्यवाद

उबंटू 12.10 पर पीएस रनिंग एक्सएफसीई 4.10

जवाबों:


39

वेरिएंट A - शूटिंग एक्स विंडोज एक और प्रदर्शन के लिए:

  1. इसे देखें, कि आपके लैपटॉप पर Xserver tcp कनेक्शन सुनना शुरू कर देता है। अफसोस की बात है कि ज्यादातर वितरण में डिफ़ॉल्ट रूप से X11- नेटवर्किंग अक्षम है। चूंकि Xserver आपके डिस्प्ले मैनेजर (gdm, lightdm) द्वारा शुरू किया गया है, इसलिए इसे वहां कॉन्फ़िगर करना होगा:

    आप जो भी प्रदर्शन प्रबंधक का उपयोग करते हैं, कुछ कॉन्फ़िगरेशन फ़ाइल / etc / में संभवतः जिम्मेदार XServer पैरामीटर होगा। grep -r 'nolisten tcp' /etc/अपने लैपटॉप पर चलाएं यह पता लगाने के लिए कि कौन सी कॉन्फ़िग फ़ाइल ज़िम्मेदार है और उस हिस्से को हटा दें जहाँ वह कहता है -nolisten tcp(पूरी लाइन नहीं, बस यह पैरामीटर)। अपने लैपटॉप पर X को पुनरारंभ करें।

    आपके लैपटॉप में अब tcp पोर्ट 6000 पर चलने वाला डिस्प्ले होना चाहिए ( nmap -p6000 Laptopअपने डेस्कटॉप पीसी पर चलने की कोशिश करें, यदि पोर्ट "ओपन" के रूप में रिपोर्ट किया गया है, तो आप इस पर आ गए)।

  2. अपने एक्स-डिस्प्ले को डेस्कटॉप कंप्यूटर पर उपलब्ध कराएं। X11 डिस्प्ले को एक्सेस देने के लिए एक प्रमाणीकरण तंत्र का उपयोग करता है। आपको डेस्कटॉप पीसी को लैपटॉप पर विंडोज को शूट करने की अनुमति देनी होगी। आम तौर पर एक प्रदर्शन कुकी का आदान-प्रदान करके।

    शुरुआत के लिए अपनी नोटबुक पर हाथों से इस चरण को निष्पादित करें। एक बार जब आप DISPLAYचर और सब कुछ के साथ अवधारणा प्राप्त कर लेते हैं, तो आप इसे ssh के माध्यम से कर सकते हैं।

    त्वरित और गंदे: आप xhost +desktops.computers.ip.addressडेस्कटॉप कंप्यूटर पर एक्स एक्सेस देने के लिए अपने लैपटॉप पर चला सकते हैं । ध्यान दें कि आपके लैपटॉप कंप्यूटर का प्रत्येक उपयोगकर्ता आपके लैपटॉप एक्स डिस्प्ले को इस तरह से उपयोग कर सकता है। ध्यान दें कि यह पर्याप्त है यानी आपके लैपटॉप डिस्प्ले पर एक कीगलर स्थापित करने के लिए। केवल परीक्षण के लिए इस विधि का उपयोग करें।

    सही और सुरक्षित: xauth extract cookie-file :0अपने डिस्प्ले एक्सेस को "कुकी-फाइल" तक पहुंचाने के लिए अपने लैपटॉप पर चलाएं । कुकी को अपने डेस्कटॉप मशीन में स्थानांतरित करें। भागो xauth merge cookie-file। या एक छोटे चरण में (अपने डेस्कटॉप से) ssh Laptop xauth extract - :0 |xauth merge -नोट: यदि आपका लैपटॉप और डेस्कटॉप एक घरेलू निर्देशिका साझा कर रहे हैं अर्थात nfs के माध्यम से आपको किसी भी क्रेडेंशियल का आदान-प्रदान करने की आवश्यकता नहीं है। क्रेडेंशियल डेटाबेस आपके होम डायर में .Xauthority फ़ाइल है, और इसे विभिन्न मशीनों के बीच साझा किया जा सकता है।

  3. प्रोग्राम को चलाएं: अपने डेस्कटॉप पीसी पर एक टर्मिनल में export DISPLAY=Your.Laptops.IP.Address:0, किसी भी एक्स प्रोग्राम को उसी टर्मिनल में चलाएं। यह नोटबुक डिस्प्ले पर दिखाई देना चाहिए।

वेरिएंट बी - एक मोड़ के साथ एसएसएच का उपयोग करना।

SSH दूरस्थ मशीन पर एक स्थानीय टीसीपी सॉकेट के लिए एक स्थानीय X11 सॉकेट (आमतौर पर एक यूनिक्स डोमेन सॉकेट) फॉरवर्डिन द्वारा X11 अग्रेषण को पूरा करता है, फिर डिस्प्ले कुकी पर बातचीत करता है, फिर रिमोट मशीन पर DISPLAY- पर्यावरण की स्थापना करता है। इस तरह से सभी X11 ट्रैफिक को ssh सुरंग के ऊपर एन्क्रिप्ट किया गया है। सामान्य उपयोग का मामला स्थानीय डिस्प्ले को रिमोट मशीन पर अग्रेषित करना है (जिसका अर्थ है दूरस्थ अनुप्रयोगों को स्थानीय रूप से x विंडो प्रदर्शित करने की अनुमति देना)।

Ssh का उपयोग करने का लाभ यह है कि, आपको अपने X- सर्वर को tcp सुनने की विधि में डालने की आवश्यकता नहीं है (क्योंकि यूनिक्स सॉकेट का उपयोग किया जाता है)। और ssh क्रेडेंशियल एक्सचेंज को संभालता है।

  1. अपने डेस्कटॉप कंप्यूटर से अपने लैपटॉप पर SSH (आपको अभी तक -X का उपयोग करने की आवश्यकता नहीं है)।
  2. दूरस्थ शेल में दर्ज करें export DISPLAY=:0यह आपके नोटबुक पर पहले से चल रहे प्रदर्शन को उपलब्ध कराता है जो आपको ssh के माध्यम से मिला है। यदि आप अभी कोई X कमांड चलाते हैं, तो यह पहले से ही आपकी नोटबुक स्क्रीन पर दिखाई देगा, लेकिन फिर भी अपने लैपटॉप पर चलाएं (सुरक्षित होने के लिए इसे आज़माएं)।
  3. इस शेल ssh से अपने डेस्कटॉप कंप्यूटर पर वापस, इस समय -X का उपयोग करें। अब आपके पास मशीन पर एक शेल है, जिस पर ssh सत्र की उत्पत्ति हुई थी लेकिन इस बार कार्य करने के लिए X. Run xeyes या xcalc के साथ इसका परीक्षण करें।
  4. echo $DISPLAYअब आपको अपने डेस्कटॉप कंप्यूटर पर आपके लैपटॉप एक्स डिस्प्ले को पदनाम, दिखाता है। यानी: 10 या: 11।
  5. अब आप टर्मिनल को छोटा कर सकते हैं। export DISPLAY=:10आपके डेस्कटॉप कंप्यूटर पर अब आपके द्वारा दर्ज किया गया (देखें कि आपको कौन सा डिस्प्ले नंबर मिला है), उसी शेल में आपके द्वारा चलाया गया प्रत्येक प्रोग्राम आपको नोटबुक स्क्रीन पर दिखाई देगा।

    यह वेरिएंट आसान लेकिन धीमा है, क्योंकि सभी X11 ट्रैफिक को SSH के माध्यम से आगे बढ़ाया जाता है।

वैरिएंट C - मूल थिंकलिएंट कॉन्सेप्ट:

आप अपने लैपटॉप का उपयोग अपने डेस्कटॉप कंप्यूटर पर पूरी तरह से चल रहे एक डेस्कटॉप सत्र को खोलने के लिए कर सकते हैं।

  1. XDMCP ब्रॉडकास्ट का जवाब देने के लिए अपने डेस्कटॉप पर डिस्प्ले मैनेजर को कॉन्फ़िगर करें। यह कैसे करना है यह आपके डिस्प्ले मैनेजर पर निर्भर करता है। कुछ प्रदर्शन प्रबंधक इसका बिल्कुल समर्थन नहीं करते हैं, अर्थात पतला। XDM, KDM, WDM, GDM इसका समर्थन करते हैं।

  2. अपने लैपटॉप पर एक एक्स-सर्वर शुरू करें, जो आपके डेस्कटॉप से ​​डिस्प्ले मैनेजर का अनुरोध करता है। या तो एक नेस्टेड एक्स: Xephyr :1 -query desktopया Xephyr :1 -broadcast अपने नोटबुक एक्स-सर्वर को बंद करके एक सिस्टम टर्मिनल पर दर्ज करेंsudo Xorg :0 -broadcast

    प्रदर्शन प्रबंधक इसे देखेगा, कि क्रेडेंशियल्स उत्पन्न होते हैं और एक्सचेंज किए जाते हैं और सब कुछ। बधाई हो, अब आपको अपने डेस्कटॉप कंप्यूटर द्वारा प्रदान की गई लॉगिन विंडो देखनी चाहिए।


2
Btw। यह सब अद्भुत X11-Functionality सिर्फ Ubuntu के Wayland पर स्विच होते ही काम करना बंद कर देगी। NAtive वेदरलैंड एप्लिकेशन को अब ssh के माध्यम से भी अग्रेषित नहीं किया जा सकता है।
पॉल हैनशेक

6
क्या यह काफी विडंबना नहीं है कि आपके एक्स-सर्वर को नियंत्रित करने के लिए कोई ग्राफिकल टूलचैन नहीं है? यदि आप वास्तव में GUI के साथ काम करना चाहते हैं तो आपको पहले कमांड लाइन पर हावी होना होगा।
पॉल हैनशेक

सामान्य संकेत: पहला प्रोग्राम जिसे आप अपने रिमोट डिस्प्ले पर शुरू करना चाहते हैं, एक एप्लिकेशन स्टार्टर है। यानी lxpanel या कुछ और। यह काफी कमांड लाइन का काम करता है।
पॉल हैनशेक

क्या यह अभी भी उबंटू 17 के + ... के लिए काम करता है या वायलैंड भविष्यवाणी पारित करने के लिए आया है?
Xen2050 3

19

आप अपने लक्ष्य को प्राप्त करने के लिए ssh X अग्रेषण का उपयोग कर सकते हैं। यदि आप एक ही सबनेट में हैं तो यह तेजी से छोड़ दिया जाता है।

अपने लैपटॉप और डेस्कटॉप पीसी पर ssh सर्वर और क्लाइंट स्थापित करें

sudo apt-get install ssh

डेस्कटॉप पीसी से कनेक्ट करने के लिए, लैपटॉप पर एक टर्मिनल खोलें और निम्न टाइप करें

ssh -X username@desktop_pc_ip

और आप टर्मिनल का उपयोग करके किसी भी सॉफ़्टवेयर को शुरू कर सकते हैं, उदाहरण के लिए फ़ायरफ़ॉक्स शुरू करना, बस firefoxटर्मिनल में टाइप करें।


2
यह सत्यापित करना न भूलें कि sshd config फाइल (आमतौर पर / etc / ssh / sshd_config) में X11Forwarding सेट करने के लिए हाँ भी है।
मैट्रिक्स मोल

यहां मेरा उपयोग मामला है: मैं अपने डेस्कटॉप पर हूं और मैं उदाहरण के लिए फ़ायरफ़ॉक्स खोल रहा हूं, लेकिन मैं चाहता हूं कि ब्राउज़र विंडो मेरे लैपटॉप डिस्प्ले पर खुले और अभी भी मेरे डेस्कटॉप पर चले। मैं कार्यक्षेत्र के समान कार्यक्षमता की तलाश कर रहा हूं, लेकिन एक दूरस्थ कार्यक्षेत्र (लैपटॉप) का उपयोग करने के लिए स्थानीय कार्यक्षेत्र (एक ही पीसी पर 4 स्क्रीन) के बजाय
व्लाद बामोस

2
इसके अलावा आप x2xपैकेज की कोशिश कर सकते हैं, आप अलग-अलग मशीन में एक कीबोर्ड और माउस का उपयोग कर सकते हैं। पूर्व:ssh -X user@host x2x -west -to :0
OHL

@iUngi मैं पहले से ही उस के लिए तालमेल का उपयोग कर रहा हूं, वैसे भी धन्यवाद
व्लाद बामोस

ध्यान रखें कि आपके डेस्कटॉप के एक्स सर्वर तक पहुंच खोलकर, आप रिमोट मशीन तक काफी व्यापक पहुंच प्रदान कर रहे हैं। यदि आपके सर्वर से छेड़छाड़ की गई थी, तो इसका उपयोग आपके डेस्कटॉप में भी किया जा सकता है। X11 अग्रेषण उपयोगी है, लेकिन इस बारे में सोचें कि आप क्या कर रहे हैं, और इसे डिफ़ॉल्ट रूप से चालू न करें।
mc0e

7

तैयारी

(आप केवल एक बार ऐसा करते हैं)

अपने डेस्कटॉप में SSH सर्वर स्थापित करें

sudo apt-get install ओपनश-सर्वर


अपने लैपटॉप से:

ssh -X उपयोगकर्ता नाम @ desktop_pc_ip

टर्मिनल में आपको जो कुछ भी मिलता है वह आपके डेस्कटॉप पर होगा लेकिन आपके लैपटॉप पर प्रदर्शित होगा। यदि आप अपने डेस्कटॉप पर बैठे हुए भी ऐसा ही करना चाहते हैं (और अपने लैपटॉप पर विंडो भेजते हैं) तो चलें।

आपके टर्मिनल पर आप चलते हैं

$ $ गूंज

यह आपको कुछ इस तरह दिखाएगा:

localhost:10.0

अपने डेस्कटॉप से:

एक टर्मिनल खोलें और चलाएं

DISPLAY=:10.0 firefox

यह firefoxआपके लैपटॉप पर एक विंडो भेजना चाहिए लेकिन आपके डेस्कटॉप पर चल रहा है। सुनिश्चित करें कि आपके द्वारा डाला गया नंबर (जैसे 10.0) echoपरिणाम में जैसा है


3

आप SSH और स्क्रीन के संयोजन का उपयोग कर रहे हैं और फिर अपनी मनचाही स्थिति प्राप्त कर सकते हैं।

अपने डेस्कटॉप पर, स्क्रीन स्थापित करें:

sudo apt-get install स्क्रीन

वहां से, एक नया स्क्रीन सत्र शुरू करें:

स्क्रीन

और इसमें फ़ायरफ़ॉक्स खोलें:

फ़ायरफ़ॉक्स

अपने डेस्कटॉप पर अपने इच्छित सभी फ़ायरफ़ॉक्स का उपयोग करें, फिर अपने लैपटॉप से ​​अपने कंप्यूटर में ssh करें:

ssh -X उपयोगकर्ता नाम @ hostname

आपके द्वारा चलाए जा रहे स्क्रीन सत्र को देखने के लिए निम्न कमांड टाइप करें:

स्क्रीन-हील्स

अपने स्क्रीन सत्र में लॉग इन करें (1234 नंबर स्क्रीन होगा जो आपको दिया गया है)

स्क्रीन -x 1234

तब आप अपने लैपटॉप पर फ़ायरफ़ॉक्स का उपयोग कर सकते हैं और अपने डेस्कटॉप पर टर्मिनल बंद कर सकते हैं।


कोशिश की है कि। टर्मिनल से स्क्रीन को खोला, डेस्कटॉप पर फ़ायरफ़ॉक्स शुरू किया, फिर लैपटॉप से ​​डेस्कटॉप में भेज दिया, स्क्रीन सत्र संलग्न किया, लेकिन मुझे लैपटॉप पर कोई विंडो नहीं मिलती है, बस स्क्रीन में चल रहे प्रोग्राम से आउटपुट।
व्लाद बामोस

आप इसे मिला रहे थे। रुको ... कम से कम तुम में से एक ने किया। अपने डेस्कटॉप कंप्यूटर पर स्क्रीन स्थापित करें, अपने नोटबुक का उपयोग अपने डेस्कटॉप पर करें ssh -X, स्क्रीन को ssh सत्र में प्रारंभ करें, इसे अलग करें और सत्र चालू रखें। फिर अपने डेस्कटॉप कंप्यूटर पर हाथों से स्क्रीन सत्र को फिर से चलाएँ और कुछ चलाएं। यह मेरे "SSH के लिए एक मोड़ के साथ" उत्तर के समान है। स्क्रीन का उपयोग करना इसे थोड़ा अधिक संयमित बनाता है।
बजे पॉल हेन्सश

3

Virtualgl एक अतिरिक्त (पृष्ठभूमि) डेस्कटॉप (TightVNC स्टाइल) बनाएगा जिसे आप टर्बो VNC क्लाइंट के माध्यम से एक्सेस कर सकते हैं । यह एक दूरस्थ डेस्कटॉप प्रकार के सौदे के रूप में कार्य करेगा -> लेकिन यह एक नेटवर्क पर सुचारू वीडियो चलाएगा।

अगर आप रिमोट कनेक्शन के लिए सीपीयू ओवरहेड को ऑफलोड करने का तरीका खोज रहे हैं , तो आप अपने लैपटॉप से ​​अपने कंप्यूटर से ऐप चला सकते हैं, तो वही होगा जो मैं करूंगा।

http://www.virtualgl.org/

आप उपर्युक्त के अनुसार SSH के माध्यम से डेस्कटॉप वातावरण का निर्यात भी कर सकते हैं।


धन्यवाद। उम्मीद तो दिखती है। मैं देख लूँगा और आपको पोस्ट करता रहूँगा।
व्लाद बामोस

हाँ, "TurboVNC" (इसके घटक VirtualGL moreso) एक दूरस्थ डेस्कटॉप प्रोग्राम के लिए मेरी खोज का परिणाम है जो मुझे वीडियो गेम और मूवी खेलने देगा। यह एक अतिरिक्त मॉनिटर के रूप में आसानी से कार्य करेगा।
टार्डिसग्यू

1

ऑनलाइन कुछ और खुदाई के बाद मैं DMX के पार आ गया

मुख पृष्ठ से

एक्सडीएमएक्स प्रॉक्सी एक्स सर्वर है जो विभिन्न मशीनों से जुड़े कई डिस्प्ले के लिए मल्टी-हेड समर्थन प्रदान करता है (जिनमें से प्रत्येक एक विशिष्ट एक्स सर्वर चला रहा है)। जब ज़िनरामा को एक्सडीएमएक्स के साथ प्रयोग किया जाता है, तो कई मशीनों पर कई डिस्प्ले उपयोगकर्ता को एकल एकीकृत स्क्रीन के रूप में प्रस्तुत किए जाते हैं।


1
यह एक बेहतर जवाब होगा यदि आप निर्देश दे सकते हैं कि कैसे स्थापित करें और कैसे उपयोग करें।
जीवाश्म

XmetaX समान कार्यक्षमता प्रदान करता है। क्या XDMx और XmetaX का कोई विकल्प है?
मारिउज़

1

हाँ यह संभव है। मैं स्थानीय कंप्यूटर पर स्थापित xclock के साथ दोनों लिनक्स कंप्यूटर ले रहा हूं। मैं स्थानीय रूप से xclock चलाने और दूरस्थ लिनक्स कंप्यूटर पर घड़ी दिखाने की कोशिश कर रहा हूं।

reboot the remote machine
Disable firewall
Disable SELINUX
Check $DISPLAY variable value by command
echo $DISPLAY
Let say its value is :1
run command
xhost +

Now on local computer
xclock -display remote_machine_IP_address:1
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.