ฉันจะเปิดหน้าต่าง firefox ระยะไกลผ่าน SSH ได้อย่างไร


56

เมื่อฉัน SSH ไปยังกล่องระยะไกล

$ ssh -X remotebox

จากนั้นเริ่ม Firefox ในกล่องระยะไกล

remotebox$ firefox

และฉันมี Firefox ทำงานบนเครื่องท้องถิ่นของฉันหน้าต่าง Firefox ท้องถิ่นจะเปิดขึ้น ไม่มีกระบวนการ Firefox ทำงานบนกล่องระยะไกล

หาก firefox ไม่ทำงานบนเครื่องท้องถิ่นของฉันหน้าต่าง firefox ระยะไกลจะเปิดขึ้น

ทำไมมันเปิดหน้าต่าง Firefox ท้องถิ่น? ฉันจะป้องกันได้อย่างไร


นี่คือข้อมูลเพิ่มเติมเกี่ยวกับระบบท้องถิ่นของฉัน

Linux lesmana-laptop 2.6.32-24-generic #42-Ubuntu SMP Fri Aug 20 14:24:04 UTC 2010 i686 GNU/Linux

No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 10.04.1 LTS
Release:    10.04
Codename:   lucid

DISPLAY=:0.0

Mozilla Firefox 3.6.8, Copyright (c) 1998 - 2010 mozilla.org

ข้อมูลของ remotebox

Linux dxray 2.6.22.19-0.4-default #1 SMP 2009-08-14 02:09:16 +0200 x86_64 x86_64 x86_64 GNU/Linux

LSB Version:    core-2.0-noarch:core-3.0-noarch:core-2.0-x86_64:core-3.0-x86_64:desktop-3.1-amd64:desktop-3.1-noarch:graphics-2.0-amd64:graphics-2.0-noarch:graphics-3.1-amd64:graphics-3.1-noarch
Distributor ID: SUSE LINUX
Description:    openSUSE 10.3 (X86-64)
Release:    10.3
Codename:   n/a

DISPLAY=localhost:15.0

Mozilla Firefox 3.0.14, Copyright (c) 1998 - 2009 mozilla.org

คำสั่งต่อไปนี้เริ่มเซสชัน firefox ระยะไกลด้วยหน้าต่าง firefox ระยะไกล

remotebox$ firefox -no-remote

คำสั่งต่อไปนี้สร้างการหน่วงเวลาสั้น ๆ จากนั้นกลับสู่พรอมต์และหน้าต่าง firefox ในเครื่องจะปรากฏขึ้น ไม่มีกระบวนการของ Firefox ที่ทำงานบนรีโมตบ็อกซ์

remotebox$ firefox

ข้อมูลของ remotebox2

Linux marvin 2.6.31-22-generic #60-Ubuntu SMP Thu May 27 00:22:23 UTC 2010 i686 GNU/Linux

No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 9.10
Release:    9.10
Codename:   karmic

DISPLAY=localhost:11.0

Mozilla Firefox 3.6.8, Copyright (c) 1998 - 2010 mozilla.org

คำสั่งต่อไปนี้ใน remotebox2 เริ่มเซสชัน firefox ระยะไกลตามที่คาดไว้

remotebox2$ firefox

ฉันไม่ทราบว่าทำไม firefox บน remotebox2 เริ่มเซสชันระยะไกลแทนเซสชันท้องถิ่น


เราสามารถรับเนื้อหาของ$DISPLAYตัวแปรทั้งในเครื่องโลคอลและรีโมทได้หรือไม่?
aperson

@aperson คำถามที่อัปเดต
lesmana

ขอบคุณ$DISPLAYดูเหมือนจะไม่เป็นปัญหา ssh ดูเหมือนจะตั้งค่าอย่างถูกต้อง
aperson

คำตอบ:


46

นอกเหนือจากfirefox -no-remote พารามิเตอร์อื่นคือการfirefox -no-xshmเปิดเผยเทคนิคที่ใช้ในการทำงาน

หน่วยความจำที่แชร์ X11 เป็นเทคนิคการสื่อสารระหว่างกระบวนการซึ่งสามารถใช้งานได้โดยแอปพลิเคชันทั้งหมดที่เชื่อมต่อกับเซสชันเซิร์ฟเวอร์ x ที่กำหนด สามารถใช้เพื่อทำการลากและวางและการโต้ตอบเดสก์ท็อปชนิดอื่น

สามารถใช้ (และเป็น) เพื่อใช้แอปพลิเคชัน "เปิดครั้งเดียว" เพื่อลดการปล่อย (หรือจำนวนหน้าต่าง)

เนื่องจากโปรโตคอล X11 เป็นเครือข่ายที่โปร่งใส "หน่วยความจำที่ใช้ร่วมกัน" จึงถูกขยายไปยังไคลเอนต์ X11 ระยะไกลด้วย


มีวิธีใดบ้างที่ฉันจะทำให้ x ไม่ทำเช่นนี้? ฉันกำลังมองหาการตั้งค่าการตั้งค่าวิดีโอเกม / ไวน์เพื่อการแจกจ่ายที่ง่าย แต่สิ่งนี้ทำให้ฉันปวดหัวเพราะจะทำให้เกิดพฤติกรรมที่ไม่ระบุขึ้นอยู่กับสิ่งที่ผู้ใช้ของคอนเทนเนอร์ได้ติดตั้งและใช้งาน ฉันใช้โซลูชันนี้เพื่อทำการส่งต่อ x: stackoverflow.com/a/25168483และต้องการให้แน่ใจว่าคอนเทนเนอร์ไม่แชร์หน่วยความจำกับโฮสต์
สารสาร

มันใช้ไม่ได้สำหรับฉัน
Bob Ebert

ลองใช้คำแนะนำที่ต่ำกว่า: ส่งออก MOZ_NO_REMOTE = 1
Kieveli

15

ลอง firefox -no-remote


สิ่งนี้ทำงานในการเปิดหน้าต่าง firefox ระยะไกล แต่ฉันยังไม่เข้าใจว่าทำไมคำสั่งระยะไกลสามารถเปิดหน้าต่าง firefox ภายในเครื่องให้เปิด
lesmana

@lesmana อาจเกิดจากการส่งต่อ x11 - หากมีการตั้งค่าในsshd_configคุณอาจมีสถานการณ์ที่มีการดำเนินการและถูกส่งผ่านกลับ
Marco Ceppi

10

โปรดทราบว่าฉันขุดโดมเพราะนี่เป็นการบักฉันและคุณก็สามารถเพิ่ม:

MOZ_NO_REMOTE=1
export MOZ_NO_REMOTE

ในโปรไฟล์ของคุณ


4

คุณสามารถลองสิ่งนี้ได้เมื่อคุณเชื่อมต่อกับเครื่อง ( ssh user@host; note: ไม่มีตัวเลือก -X) ให้พิมพ์คำสั่ง follow ก่อน

export DISPLAY=:0 

สิ่งนี้จะเปลี่ยนการแสดงเริ่มต้นเป็นของหน้าจอเดสก์ท็อปปัจจุบัน จากนั้นก็พิมพ์

firefox

เพื่อให้ Firefox วางไข่บนหน้าต่างเดสก์ท็อป ตรวจสอบให้แน่ใจว่าคุณได้ลงชื่อเข้าใช้เดสก์ท็อปโดยที่ (ไม่มีการเข้าสู่ระบบ) คุณจะได้รับข้อผิดพลาดดังต่อไปนี้

firefox: cannot connect to X server :0

วิธีนี้จะใช้ได้กับเดสก์ท็อปที่ล็อคด้วย โปรดตรวจสอบให้แน่ใจว่าคุณได้เข้าสู่ระบบบนเดสก์ท็อปและ ssh เชลล์ด้วยชื่อผู้ใช้เดียวกัน

เมื่อมีการประชุมสก์ท็อปหลายแต่ละเซสชั่นจะถูกระบุด้วยตัวเลขที่แตกต่างกัน:0, :1, :2ฯลฯ


นั่นเป็นคำตอบเดียวที่เหมาะกับฉัน
answerSeeker

2

ไม่มีวิธีแก้ปัญหาอื่นที่ใช้งานได้สำหรับฉันดังนั้นนี่จึงเป็นการค้นหาเว็บไซต์อื่นเล็กน้อย

คุณต้องเรียกใช้ Firefox ในกระบวนการแยกแบบเดียวกับที่คุณทำหากคุณทำทุกอย่างบนเครื่องท้องถิ่น ใช้ตัวจัดการโปรไฟล์เพื่อสร้างโปรไฟล์ใหม่ดังนี้

export MOZ_NO_REMOTE=1
firefox -ProfileManager

เพื่อให้สิ่งต่าง ๆ สอดคล้องกันฉันตัดสินใจตั้งชื่อโปรไฟล์ใหม่แต่ละโปรไฟล์บนเครื่องภายนอกเหมือนกับชื่อโฮสต์


1

เรียกดูจากระยะไกลง่าย

หากคุณต้องการท่องเว็บในประเทศราวกับว่าคุณกำลังนั่งอยู่หน้ากล่องระยะไกล:

$ ssh -X username@remote.example.com

จากนั้นเรียกใช้ Firefox ภายในเซสชันเทอร์มินัลระยะไกล :

$ firefox https://test-ipv6.com/

สังเกตการใช้-Xแฟล็กในsshคำสั่ง คุณสามารถทำทั้งสองขั้นตอนได้ในครั้งเดียวดังที่แสดงด้านล่าง:

$ ssh -X username@remote.example.com firefox http://test-ipv6.com/

การทันเนล IP ระยะไกล: พอร์ต

หากคุณมีแอปพลิเคชันที่ทำงานจากระยะไกลซึ่งทำให้เว็บส่วนหน้าบางส่วนคุณจะสนใจที่จะเปิดเผย IP ระยะไกล: พอร์ตราวกับว่ามันเป็น IP ท้องถิ่น: พอร์ต ในกรณีนี้-Lตัวเลือกจะกำหนดความสอดคล้องระหว่างlocalhost:localportและremotehost:remoteportดังที่แสดงในคำสั่งหลอกด้านล่าง:

ssh -L localhost:localport:remotehost:remoteport remoteuser@remotehost

ตัวอย่างเช่น:

$ ssh -L 127.0.0.1:18080:internal.example.com:8080 username@router.example.com

จากนั้นเรียกใช้ Firefox ในเครื่อง :

$ firefox http://127.0.0.1:18080

ในตัวอย่างข้างต้นคุณจะเชื่อมต่อผ่าน SSH บนและคุณมีความสนใจในหน้าเว็บที่สัมผัสusername@router.example.com internal.example.com:8080นี้ระยะไกล IP: 127.0.0.1:18080พอร์ตจะได้สัมผัสในประเทศที่


0

ฉันจะเพิ่มสิ่งที่ทำงานให้ฉัน การใช้งานfirefox -no-remoteล้มเหลวโดยมีข้อผิดพลาดตามปกติ

Error: GDK_BACKEND does not match available displays

อย่างไรก็ตามการทำงานดังต่อไปนี้:

ssh -Y user@host
firefox -no-remote

-Yตัวเลือกที่ช่วยให้เชื่อถือได้ส่ง X11 การส่งต่อ X11 ที่เชื่อถือได้จะไม่ถูกควบคุมโดยส่วนขยาย X11 SECURITY คุณสามารถลองเพิ่ม-Cตัวเลือกในsshคำสั่งเพื่อเปิดใช้งานการบีบอัดได้

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.