נניח שאתם רוצים להפעיל תוכנה גרפית על מחשב לינוקס מרוחק, ככה שהחלון שלה יפתח על אותו מחשב מרוחק.
כניסה בSSH והפעלה של התוכנית תניב את השגיאה הבאה:
omry@home:~$ xeyes
Error: Can't open display:
הפתרון הוא פשוט, קובעים את משתנה הסביבה DISPLAY לפני הקריאה:
omry@home:~$ export DISPLAY=:0.0
omry@home:~$ xeyes
יש כמובן את המקרה האחר, שבו אתם רוצים שהחלון של התוכנה יפתח אצלכם.
זה מה שאני זוכר לגבי זה, אבל אולי משהו פרח מזכרוני:
המקרה הזו דורש התחברות באמצעות ssh -X, והפעלת שרת X מקומי (יש גם לחלונות, את זה של cygwin או של Hummingbird)
בנוסף, צריך להגדיר לשרת הSSH שאליו אתם מתחברים לאפשר קידום פרוטוקול X11 באמצעות השורה הבאה בקובץ /etc/ssh/sshd_config:
X11Forwarding yes
ואז להפעיל את התוכנה כרגיל (בלי לקבוע את DISPLAY קודם).
אז ככה,
במקרה שאתה רוצה שהאפליקציה תיפתח חלון על השרת המרוחק (שאליו אתה מתחבר), אתה צריך להשתמש בפקודה
export DISPLAY=:0.0
זה יעבוד עבור המסך הראשון, ו :1.0 עבור המסך השני, וכן הלאה. מאחורי הקלעים, מסך 0 זה שרת X המאזין בפורט 6000, מסך 1 מאזין בפורט 6001 וכן הלאה. לא בכל שרת זה יעבוד (למעשה אם זה עובד לך ואתה לא מחובר במסך שעליו נפתח החלון זוהי בעיית אבטחה). ייתכן ותצטרך לעבוד בשיטה שנקראת MIT-MAGIC-COOKIE, ליצור token אבטחה באמצעות xauth ולהשתמש בו… קרא את המדריך. אין לזה שום קשר ל-ssh.
במידה ואתה רוצה לפתוח אפליקציה על המסך שלך ממחשב מרוחק, אתה יכול להשתמש ב-
ssh -X
אני חושב שבברירת המחדל של שרתי ssh הם מעבירים X בצורה כזו. אם תסתכל על משתנה DISPLAY תראה שהוא מכוון למסך 10 או 11 או משהו כזה – SSH יוצר מסך וירטואלי מקומי עם כל ההרשאות ומתעל את המסך למסך המקומי שלך דרך החיבור המאובטח. לכן פקודה כמו
ssh -X user@host xlogo
תרוץ על המחשב המרוחק host ותציג את התוצאות על המסך המקומי.
— אריק
והאם מה שכתבתי לא נכון?
אוקיי, בדקתי (מה שלא יכלתי לעשות קודם כי כאמור בין השורות לא הייתי מול המחשב) – ואתה צודק.
עדכנתי בפוסט.
סתם לידע כללי, הרבה נוהגים להשתמש ב-+ xhost כדי לאשר בצורה גורפת הרשאות למסך של ה- X Server.
זה גם מאפשר לאנשים באותה המידה לצלם את המסך שלכם מרחוק, אם הפורט לא חסום ע"י פיירוול.
כן, אורן, אתה צודק. זה גם מאפשר לכל אחד לראות בדיוק אילו מקשים אתה מקיש על המקלדת ולראות את הסיסמאות שלך מרחוק. לא מומלץ להריץ פקודה זו כלל. לפרטים נוספים:
http://www.acm.vt.edu/~jmaxwell/programs/xspy/xspy.html
אלטרנטיבה יותר בטוחה היא להשתמש ב-SSH (הכי בטוח) או להשתמש בפרוטוקול שנקרא כמו שציינתי MIT-MAGIC COOKIE:
http://www.xs4all.nl/~zweije/xauth-6.html#ss6.2
מקווה שעזרתי.
— אריק