การส่งต่อ X11 ผ่าน SSH หากการกำหนดค่าเซิร์ฟเวอร์ไม่อนุญาต


10

พิจารณาสถานการณ์ที่ฉันเข้าสู่ระบบผ่าน SSH จากเครื่อง A ไปยังเครื่อง B ฉันมี X เซสชันบนเครื่อง A และฉันต้องการเรียกใช้โปรแกรม X บน B

ssh -X Bทำให้งานนี้โปร่งใส แต่จะเกิดอะไรขึ้นถ้าการกำหนดค่าเซิร์ฟเวอร์ขาดหายX11Forwarding yesไปฉันไม่ได้รับอนุญาตรูทบนเซิร์ฟเวอร์และผู้ดูแลระบบเซิร์ฟเวอร์ไม่สนใจอะไร

เห็นได้ชัดว่าเป็นไปได้ที่จะส่งต่อการเชื่อมต่อ X11 เนื่องจากฉันสามารถถ่ายโอนสิ่งที่ฉันต้องการผ่านช่อง SSH ในความเป็นจริงถ้าเซิร์ฟเวอร์ X ภายในเครื่องอนุญาตการเชื่อมต่อ TCP ก็ง่ายเหมือนssh -R 6010:localhost:6000(จะถูกปรับสำหรับหมายเลขที่แสดง) กรณีทั่วไปที่เซิร์ฟเวอร์ X ภายในเครื่องอนุญาตการเชื่อมต่อซ็อกเก็ตได้เท่านั้น ฉันจะส่งต่อ X ได้อย่างสะดวกและปลอดภัยโดยมีข้อกำหนดขั้นต่ำของการติดตั้ง (โดยเฉพาะใน B) อย่างไร

คำตอบ:


2

คำตอบของ @Demi นั้นดี แต่ฉันคิดว่าการกรอกมันน่าจะช่วยได้มาก

  • ท้องถิ่น - เครื่องท้องถิ่นที่ให้บริการ Xserver
  • remote - เครื่องรีโมตที่ให้บริการแอ็พพลิเคชันซึ่งขับเคลื่อนข้อมูลไปยัง Xserver

รีโมต/etc/ssh/sshd_config:

X11Forwarding no
X11DisplayOffset 10
X11UseLocalhost yes

ระยะไกล~/.Xauthorityว่างเปล่าหรือไม่มีอยู่

ในท้องถิ่น:

Xephyr -ac -screen 1280x800 -br -reset   :2 &
DISPLAY=:2 ssh  -fR 6010:/tmp/.X11-unix/X2  user@remote "DISPLAY=:10 xeyes"

ในการทดสอบ Local กำลังใช้งาน Ubuntu 18.05 ทางไกลกำลังเรียกใช้ Debian Jesse


6

โพรโทคอล X11 พูดเมื่อพูดคุยกับพอร์ต tcp แตกต่างกันเมื่อพูดคุยกับซ็อกเก็ตหรือไม่?

บางทีคุณอาจรวมการใช้งานที่แนะนำของคุณเองssh -R 6010:localhost:6000เพื่อนำข้อมูล X11 เข้ามาในการส่งต่อพอร์ตจากนั้นเชื่อมสะพาน gab ท้องถิ่นระหว่างพอร์ต tcp และฟังซ็อกเก็ต X11 ด้วย nc เช่น:

nc -l -p 6000 > /tmp/.X11-unix/X0

ใช่นั่นคือความคิด แต่ฉันหวังว่าจะได้คำตอบว่า“ ใส่สิ่งนี้ใน.ssh/configฝั่งไคลเอ็นต์ของคุณและใน.profileฝั่งเซิร์ฟเวอร์ของคุณแล้วเรียกใช้ssh B
Gilles 'หยุดความชั่วร้าย' ใน

1
มีคำตอบที่ "ง่าย ๆ ในการตั้งค่าของคุณ" ปัญหาคือคุณกำหนดกฎนั้นในคุณสมบัติคำถามของคุณเพราะตัวเลือกที่คุณต้องการจะอยู่ในด้าน sshd_config ของสิ่งต่าง ๆ บน B. คุณกำลังพยายามแก้ไขบล็อกที่ใส่เข้าไป สถานที่ที่จะทำให้มันยากที่จะเปิดปัญหาด้านความปลอดภัยโดยไม่ได้ตั้งใจ
Caleb

3
ฉันกำหนดเป้าหมายกรณี (ในประสบการณ์ของฉันบ่อยมาก) ซึ่งผู้ดูแลระบบไม่สนใจและเพิ่งตั้งค่าเริ่มต้นไว้ การส่งต่อ X11 ไม่ได้ถูกห้ามตามนโยบายมันเป็นเพียงความไม่สะดวกโดยการไม่แยแสระบบ อย่างไรก็ตามการส่งต่อ X11 อนุญาตให้เซิร์ฟเวอร์โจมตีลูกค้าดังนั้นการห้ามฝั่งเซิร์ฟเวอร์นั้นไม่สมเหตุสมผล
Gilles 'ดังนั้น - หยุดความชั่วร้าย'

@Gilles ฉันยอมรับว่าค่าเริ่มต้นไม่ได้ป้องกันสิ่งที่มีประโยชน์จริงๆ ดังนั้นเราควรล็อบบี้เพื่อให้การเปลี่ยนแปลงเริ่มต้นขึ้นหรือไม่
Caleb

สำหรับผม/tmp/.X11-unix/X0เป็นซ็อกเก็ตยูนิกซ์โดเมนไม่ FIFO ใด ๆ ENXIO: No such deviceดังนั้นปลายเปลี่ยนเส้นทางพยายามด้วย
Samveen

2
  1. หมุนเซิร์ฟเวอร์ X เพิ่มเติมโดยใช้ Xephyr เพื่อความปลอดภัย - ป้องกันระบบจากระยะไกลไม่ให้โจมตีคุณ

  2. ใช้ SSH เพื่อส่งต่อซ็อกเก็ตระยะไกลไปยังซ็อกเก็ต Xephyr SSH รองรับการส่งต่อซ็อกเก็ต Unix ด้วย

  3. ตั้งค่าตัวแปรสภาพแวดล้อมบนเซิร์ฟเวอร์ระยะไกลอย่างถูกต้อง

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