কেন আমার এক্স 11 ফরওয়ার্ডিংয়ের প্রচেষ্টা "সংযুক্ত /tmp/.X11-unix/X0: এ জাতীয় কোনও ফাইল বা ডিরেক্টরি নেই" দিয়ে ব্যর্থ হয়?


33

আমার লোকাল মেশিনে, আমি চালাচ্ছি:

ssh -X me@remotemachine.com

(সম্পূর্ণতার জন্য, আমি অভিন্ন ফলাফলের সাথে নীচে সমস্ত ব্যবহার করে পরীক্ষা করেছি)

যেমনটি প্রত্যাশা করা হয়েছে, এটি রিমোটম্যাচাইন ডট কমকে অ্যাক্সেস করে এবং সমস্ত কিছু ভালভাবে উপস্থিত হয়। আমি যদি তবে এক্সক্যাল্ক চালানোর চেষ্টা করি তবে আমি পেয়েছি:

 connect /tmp/.X11-unix/X0: No such file or directory
 Error: Can't open display: localhost:10.0

কিন্তু,

$ ls -la /tmp/.X11-unix/
total 36
drwxrwxrwt 2 root root  4096 2012-11-23 09:29 .
drwxrwxrwt 8 root root 32768 2012-11-29 08:22 ..
srwxrwxrwx 1 root root     0 2012-11-23 09:29 X0

সুতরাং কেবলমাত্র /tmp/.X11-unix/X0 বিদ্যমান নয়, এর সর্বজনীন আর / ডাব্লু / এক্স অনুমতি রয়েছে!

আমি আগে ইস্যু ছাড়াই এক্স-ফরওয়ার্ডিং ব্যবহার করেছি, যদিও কিছু সময় না ...

সার্ভারে uname -a রেফারেন্সের জন্য:

Linux machinename 2.6.32-25-generic #45-Ubuntu SMP Sat Oct 16 19:52:42 UTC 2010 x86_64 GNU/Linux

সাফল্য ছাড়াই এখন কয়েক ঘন্টা ওয়েবে অনুসন্ধান করা হয়েছে। একই সমস্যার অন্যান্য উল্লেখ রয়েছে, তবে কোনও সমাধান নেই।


দ্রষ্টব্য যে এটি স্থানীয় মেশিনে থাকা ফাইলটি আপনার এখানে পরীক্ষা করতে হবে, এটি দূরবর্তী নয়। আমি strace -fo /tmp/trace ssh....এটি ইউনিক্স ডোমেন সকেটের সাথে সংযোগ স্থাপনের চেষ্টা করে কিনা তা পরীক্ষা করে ব্যবহার করব ।
স্টাফেন চেজেলাস

আহ! এটা হতে পারে। আশ্চর্যের বিষয় হল, যদিও আমার স্থানীয় মেশিনে একটি /tmp/.X11-unix/ ডিরেক্টরি নেই।
জন ডাউসেট

উত্তর:


24

যদি আপনার একটি এক্স সার্ভার চালু থাকে এবং DISPLAYপরিবেশের পরিবর্তনশীল সেট করা থাকে :0, যা অ্যাপ্লিকেশনগুলিকে ইউনিক্স ডোমেন সকেট ব্যবহার করে এক্স সার্ভারের সাথে সংযোগ স্থাপন করতে বলে যা সাধারণত লিনাক্সে পাওয়া যায় /tmp/.X11-unix/X0(যদিও নীচে সাম্প্রতিক লিনাক্সের অ্যাবস্ট্রাক্ট নেমস্পেস সম্পর্কে দেখুন ) ।

আপনি মেশিনে SSH যখন remotemachine , sshdউপর remotemachine করতে সেট DISPLAY কে localhost:10(উদাহরণস্বরূপ), যা এই সময় মানে যে এক্স সংযোগ মেশিন স্থানীয় হোস্ট বন্দর 6010 থেকে বিভিন্ন TCP মাধ্যমে সম্পন্ন করা হবে না হয়। রিমোটম্যাচিনে এসএসডিডি সেখানে সংযোগের জন্য শোনায় এবং এসএসএস ক্লায়েন্টের কাছে যে কোনও সংযোগ আগমন করে। Ssh ক্লায়েন্ট তারপরে /tmp/.X11-unix/X0আপনার X সার্ভারের সাথে যোগাযোগের জন্য (স্থানীয় প্রান্তে, দূরবর্তী নয়) সাথে সংযোগ স্থাপনের চেষ্টা করে ।

এখন, সম্ভবত আপনার কোনও এক্স সার্ভার চলছে না (আপনি কি ম্যাকের উপরে আছেন?) অথবা ইউনিক্স ডোমেন সকেটটি /tmp/.X11- ইউনিক্সে খুঁজে পাওয়া যায়নি যার অর্থ ssh সংকলনে সঠিকভাবে কনফিগার করা হয়নি hasn't সময়।

ইউনিক্স সকেটের সঠিক পথটি কী তা নির্ধারণ করার জন্য, আপনি strace -e connect xlogoএকটি সাধারণ এক্স অ্যাপ্লিকেশন কী করে তা দেখতে আপনার স্থানীয় মেশিনে একটি (বা আপনার সিস্টেমের সমতুল্য) চেষ্টা করতে পারেন।

netstat -x | grep X একটি ক্লু দিতে পারে।

রেকর্ড, একটি Linux ডেবিয়ান উপর হুইজি মেশিন এখানে উপলব্ধকারী Xorg শোনা উভয় এর জন্য /tmp/.X11-unix/X0ফাইলসিস্টেম এবং /tmp/.X11-unix/X0উপর বিমূর্ত নামস্থান (সাধারণত লিখিত @/tmp/.X11-unix/X0)। থেকে strace, এক্স 11 অ্যাপ্লিকেশনগুলি এখন ডিফল্টরূপে এটি বিমূর্ত নেমস্পেসটি ব্যবহার করবে বলে মনে করে যা /tmp/.X11-unixঅপসারণের পরেও যদি এখনও তারা কাজ করে তবে sshসেই অ্যাবস্ট্রাক্ট নেমস্পেসটি ব্যবহার করে না explains


1
বা চেক lsof -p <PID of your local X server>যেখানে আপনি খুঁজে পেতে সক্ষম হওয়া উচিত /some/thing/Xnফাইল, nআপনার হচ্ছে DISPLAYসংখ্যা।
পিটার্ফ

ধন্যবাদ, এটি বেশ সহায়ক ছিল। কোনও এক্স সার্ভার চলমান থাকা সত্ত্বেও আমার /tmp/.X11-unix/X0 ফাইলটি মুছে ফেলা হয়েছে। একটি দ্রুত পুনরায় বুট করা সমস্যার সমাধান করেছে বলে মনে হচ্ছে। সম্ভবত কিছু আপডেটের কারণে আমি কিছুক্ষণ আগে করেছি।
জন ডুয়েস্ট

6
": ০.০" থেকে "লোকালহোস্ট: ০.০" তে ডিসপ্লে ভেরিয়েবল পরিবর্তন করা আমার পক্ষে কমপক্ষে সাইগউইন থেকে লিনাক্সের সাথে সংযোগ স্থাপনের কৌশলটি করেছে বলে মনে হচ্ছে।
m0j0

এফডাব্লুআইডাব্লু, আমাকে হোস্টের কাছ থেকে startxwin(পরে apt-cyg install xinit) চালাতে হয়েছিল cygwinকারণ আমি স্থানীয় উইন্ডোজকে রিমোট ইউনিক্সে সংযুক্ত করছি
জোনাথন

40

সাইগউইন এবং জিমিংয়ের সাথে আমারও একই সমস্যা ছিল, একটি দূরবর্তী লিনাক্স সার্ভারের সাথে সংযোগ স্থাপন করা।

আমার $ DISPLAY পরিবর্তনশীলটি কেবল সাইগউইনে "" 0.0 "ছিল এবং যদিও এটি স্থানীয়ভাবে কাজ করে, এটি রিমোট এসএসএস কমান্ডের সাথে কাজ করে না।

ভেরিয়েবলটিকে "লোকালহোস্ট: ০.০" তে পরিবর্তন করা সমস্যার সমাধান করেছে।

export DISPLAY=localhost:0.0

একবার আমি এটি করে ফেললে, আমার আদেশটি কাজ করেছিল:

ssh -Yf user@host gvim somefile.c

5
এমনকি লিনাক্সের জন্য উইন্ডোজ পরিষেবাদি ব্যবহার করা আমার পক্ষে সমস্যা ছিল।
lapo

1
আপনি কোন সার্ভারে export ...কমান্ডটি চালিয়েছেন? 1) স্থানীয় মেশিন 2) সার্ভার
আবাল্টার

1
@ বা্যাল্টার এটি স্থানীয় মেশিনে চালানোর জন্য আমার পক্ষে কাজ করেছে
ট্রালস্টন

3
সাইগউইন এসএসএস + ভিসিএক্সএসআরভিতে আমি 2 ঘন্টা ডিবাগিং ইস্যু ব্যয় করেছি কারণ আমি সেট করেছি DISPLAY=:0 ssh -Y $hostDISPLAY=localhost:0যাদুবিদ্যার সমাধান করা সমস্যাটিতে এটি পরিবর্তন করা ।
gavenkoa

1
দুর্দান্ত উত্তর, উইন্ডোতে উবুন্টু সাবসিস্টেমটি এখনও সহায়ক
টম সুইফটি

6

এটি লিনাক্সের জন্য উইন্ডোজ-সাবসিস্টেমের নির্দিষ্ট তথ্যের সাথে অন্যান্য উত্তরগুলির পরিপূরক হয়। দ্যগৃহীত উত্তর সঠিক হয়: আপনার DISPLAYপরিবর্তনশীল ভুল কনফিগার করা হয়েছে। এটি ঠিক পরিষ্কার নয়, তবে কেন কেবল উত্তরটি থেকেই কেস, তাই আমি এই উত্তরটি দিয়ে প্রতিকার করছি।

আপনি যদি লিনাক্সের জন্য সাইগউইন, বা উইন্ডোজ-সাবসিস্টেম চালাচ্ছেন এবং আপনার এক্স 11 সার্ভারটি উইন্ডোজ ভিত্তিক (যেমন VcXsrv, বাXMing ) হয় তবে আপনার এক্স 11 সার্ভারটি টিসিপি পোর্টে (যেমন 127.0.0.1টিসিপি পোর্টগুলিতে 6000-6010) শুনছেন এমনটি বেশি হয় likely ডিফল্ট ইউনিক্স ডোমেন সকেট ( /tmp/.X11-unix/X0)। ইউনিক্স সকেটগুলি এই মুহুর্তে উইন্ডোজটিতে এমনকি ডাব্লুএসএল-এর মধ্যেও ভাল সমর্থনযোগ্য নয়। লিনাক্সের মতো পরিবেশে প্রোগ্রাম এবং উইন্ডো হোস্টে সরাসরি চলমান প্রোগ্রামগুলির মধ্যে যোগাযোগ করা সাধারণত আইপি সকেটের চেয়ে সহজ।

আপনি যখন স্থানীয়ভাবে গ্রাফিকাল অ্যাপ্লিকেশনগুলি চালনা করেন (যেমন আপনার হোস্টের সাইগউইন বা ডাব্লুএসএল পরিবেশ থেকে) এবং আপনার DISPLAYভেরিয়েবলটি ডিফল্টতে সেট করা থাকে (যেমন,DISPLAY=:0.0 ) তে , অ্যাপ্লিকেশনগুলি প্রথমে ইউনিক্স সকেটের মাধ্যমে এক্স সার্ভারের সাথে সংযোগ স্থাপনের চেষ্টা করবে /tmp/.X11-unix/X0। এটি ব্যর্থ হবে, তবে বেশিরভাগ অ্যাপ্লিকেশনগুলি তখন একটি টিসিপি সংযোগে ফ্যালব্যাক হয়ে যায় localhost, যা আপনার এক্স সার্ভারটি ডিফল্টর সাথে কনফিগার করা আছে বলে ধরে নেওয়া যায় server

আপনি নিশ্চিত করে নিশ্চিত করতে পারেন যে এটি ঘটছে connect() আপনার গ্রাফিকাল অ্যাপ্লিকেশনটির কোনও রান থেকে স্ট্রেস লগগুলিতে কলগুলি সন্ধান । এগুলি সাধারণত অ্যাপ্লিকেশনটির মূল উইন্ডোটি প্রদর্শিত হওয়ার আগেই ঘটবে।

Ssh দূরবর্তী দিক থেকে কোনও সংযোগ পুনর্নির্দেশের সময় সেই ফলব্যাক আচরণটি ঘটবে না, সুতরাং আপনি সেই ত্রুটিটি পেয়ে যাচ্ছেন। sshdপ্রকৃতপক্ষে সংযোগটি স্থানীয় দিকে ফরোয়ার্ড করছে, তবে ইউএস সকেটের উপর দিয়ে সার্ভারে পৌঁছাতে ব্যর্থ হওয়ায় এসএসএস ক্লায়েন্টের স্থানীয় সংযোগটি শেষ হয়ে গেছে। আপনি তখন ENOENTত্রুটি পেয়ে যাচ্ছেন।

এই ধরনের ক্ষেত্রে, DISPLAYসিন্টেক্সের পরিবর্তে টিসিপি সিনট্যাক্স ব্যবহার করতে আপনার পরিবর্তনশীল পরিবর্তন করা :0.0সমস্যার সমাধান করতে পারে:

DISPLAY=127.0.0.1:0 ssh remote some-gui-application

উল্লিখিত অন্যান্য উত্তরের মতো আপনিও নিজের শেল প্রম্পট থেকে ইন্টারেক্টিভভাবে সেই পরিবর্তনশীলটি রফতানি করতে পারেন:

$ export DISPLAY=127.0.0.1:0
...
$ ssh remote some-gui-application

আপনার লগইন শেল প্রোফাইল ইনিশিয়ালাইজেশন স্ক্রিপ্টে (যেমন ~/.bash_profile) লাইনটি যুক্ত করে আপনি এই সেটিংটি আরও স্থায়ীভাবে সঞ্চয় করতে পারেন ।

দ্রষ্টব্য: কিছু শেলের লগইন এবং নন-লগইন সেশনের জন্য আলাদা সূচনা স্ক্রিপ্ট থাকে। উদাহরণস্বরূপ, বাশের সাহায্যে আপনি সেই লাইনটি লগইন-অন স্ক্রিপ্টে লিখতে পারেন ~/.bashrc, পরিবর্তে ~/.bash_profile। যদি আপনি তা করেন তবে ssh দ্বারা সেট করা কোনও কাস্টম মান ওভাররাইড না করার বিষয়ে সতর্ক হন। আপনি যদি প্রথমে ssh এর মাধ্যমে হোস্টে প্রত্যাশা করছিলেন এবং তারপরে অন্য কোনও হোস্টের কাছে প্রত্যাশী হন (তবে এটি আপনার এক্স 11 ফরোয়ার্ডকে বাসা বেঁধে দিবে) তবে এটিই ঘটবে।


3

যদি আপনার ডিসপ্লে হোস্টটি ম্যাকওএস হতে থাকে তবে নিশ্চিত হয়ে নিন যে আপনার এক্সকিয়ার্টজ চলছে।

এই ত্রুটি বার্তাটি আপনাকে জানিয়েছে যে ssh টানেলটি কাজ করছে, তবে এটি আপনার টানেলের পাশের এক্স সার্ভারের সাথে কীভাবে সংযুক্ত হবে তা নির্ধারণ করতে পারে না

পুরানো দিনগুলিতে, ম্যাক ওএস এক্স আপনার জন্য এক্সকুয়ার্টস শুরু করত, তবে আমরা টার্মিনালের ম্যাকোস সংস্করণে দৃশ্যত এই দুর্দান্ত বৈশিষ্ট্যটি ত্যাগ করেছি ।


ফলোআপ: এর Invalid MIT-MAGIC-COOKIE-1 keyxterm Xt error: Can't open display: localhost:10.0অর্থ "
এক্সকিয়ার্টজ

1

আমি ঠিক একই সমস্যা। বিভ্রান্তকর বিষয়টি হ'ল আপনি দূরবর্তী মেশিনে নো-ফাইল-ত্রুটি পান তবে বাস্তবে এই ফাইলটি স্থানীয় (ডিসপ্লে) মেশিনে অনুপস্থিত ।

কী হবে তা দেখার জন্য, আমি ডিসপ্লে মেশিনে অনুপস্থিত ফাইলটি (ফিফো, আসলে) ম্যানুয়ালি তৈরি করেছিলাম:

mkfifo /tmp/.X11-unix/X0

তারপরে আবার রিমোট মেশিনে প্রবেশ করে দেখুন এবং দেখুন, এক্স 11 জরিমানা সংযুক্ত।

আমি জানি না এটি প্রাসঙ্গিক কিনা বা না, তবে আমার ডিসপ্লে মেশিনটি লিনাক্স নয়, এটি উইন্ডোজ সহ সাইগউইন এবং ভিসিএক্সএসআরভি। (রিমোট মেশিনটি লিনাক্স)


4
/tmp/.X11-unix/X0একটি ইউনিক্স ডোমেন সকেট, কোনও ফিফো নয়
সামভিন

0

লিনাক্সের জন্য উইন্ডোজ সাবসিস্টেম ব্যবহার করে আমি এই সমস্যায় পড়েছি । সমস্যাটি হ'ল আমার কাছে ক্লায়েন্টটিতে একটি জিইউআই ইনস্টল হয়নি, কারণ এই ধারণাটি যেহেতু এটি একটি উইন্ডোজ মেশিন, তাই আমার একটি জিইআই আছে।

আপনার জিইউআই আছে কিনা তা পরীক্ষা করতে, xclockক্লায়েন্টকে এক্সিকিউট করুন। আপনি যদি ত্রুটিটি পান Error: Can't open display: :0তবে আপনার উইন্ডোজের জন্য একটি জিইউআই প্রোগ্রাম ইনস্টল করতে হবে। আমি ব্যবহৃত Xserver

একবার আপনি একটি জিইউআই ইনস্টল হয়ে গেলে, নিম্নলিখিত কমান্ডগুলি ব্যবহার করে দেখুন:

export DISPLAY=:0
xclock

যদি একটি ঘড়ি উঠে আসে, তবে সাফল্য!

এখন সার্ভারে ssh'ing চেষ্টা করুন, তারপরে চলছে xclock। আপনি কি এখনও ত্রুটি বার্তাগুলি সংযুক্ত পেয়েছেন /tmp/.X11-unix/X0: এ জাতীয় কোনও ফাইল বা ডিরেক্টরি ত্রুটি: প্রদর্শনটি খুলতে পারবেন না: লোকালহোস্ট: 10.0 ? এর কারণ সার্ভারটি জিইউআই প্রদর্শন করার জন্য নিজের সাথে সংযোগ স্থাপনের চেষ্টা করছে। পরিবর্তে, আপনি সার্ভারটি আপনার কম্পিউটারটি পেতে পারে এমন কোনও ঠিকানায় DISPLAY পরিবর্তনশীল সেটটি চান want সুতরাং এটি যদি ল্যানে থাকে তবে আপনি কেবলমাত্র আপনার কম্পিউটারের নাম লিখবেন। আপনি যদি ডাব্লুএইএন-তে কোনও সার্ভারের সাথে সংযোগ স্থাপন করছেন তবে আপনার রাউটারের বাহ্যিক আইপি নির্দিষ্ট করতে হবে এবং যথাযথ বন্দরটি ফরোয়ার্ড করা উচিত।

ল্যান: export DISPLAY=ComputerName:0
ওয়ান:export DISPLAY=257.257.257.257:0


"এক্স ফরওয়ার্ডিং" এর অর্থ "রিমোট মেশিনে চলমান অ্যাপ্লিকেশনগুলি (সার্ভার, আপনার ক্ষেত্রে) স্থানীয় মেশিনে (ক্লায়েন্ট, আপনার ক্ষেত্রে) থেকে এক্স প্রোটোকল টানেল", অবশ্যই অবশ্যই আপনাকে এক্স সার্ভার চালাতে হবে (এবং না স্থানীয় যন্ত্রে "যে কোনও জিইউআই প্রোগ্রাম") উইন্ডোজ নিজেই এক্স প্রোটোকল বুঝতে পারে না, যদিও "আপনার একটি জিইআইআই রয়েছে"।
dirkt

-2

যদি এটি ঠিকঠাক কাজ করে এবং কোনও যথাযথ কারণ ছাড়াই কাজ করা বন্ধ করে দেয় তবে সম্ভবত এটি ব্যাকগ্রাউন্ডে চালিত একটি অনিয়ন্ত্রিত এক্স উদাহরণ হতে পারে। টাস্ক ম্যানেজার ব্যবহার করে দয়া করে এটি বন্ধ করুন।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.