ssh กลับข้อความ“ คำขอส่งต่อ X11 ล้มเหลวในช่องที่ 1”


33

เมื่อฉันเข้าสู่เซิร์ฟเวอร์ระยะไกลที่ไม่ได้ใช้สภาพแวดล้อมเดสก์ทอป X11 ชนิดใดฉันได้รับข้อความต่อไปนี้

$ ssh user@server
X11 forwarding request failed

$ ssh user@server ls
X11 forwarding request failed on channel 1
file1
file2
...

ฉันจะกำจัดข้อความเหล่านี้ได้อย่างไร

คำตอบ:


38

ข้อความเหล่านี้สามารถตัดออกได้ 1 ใน 3 วิธีโดยใช้เพียงแค่ตัวเลือก SSH คุณสามารถส่งข้อความถึงได้เสมอ/dev/nullแต่วิธีการเหล่านี้พยายามที่จะจัดการกับข้อความผ่านการกำหนดค่าแทนที่จะเป็นเพียงการดักจับและการทุ่มตลาด

วิธีที่ # 1 - ติดตั้ง xauth

เซิร์ฟเวอร์ที่คุณกำลังส่งเสียงเตือนนั้นบ่นว่าไม่สามารถสร้างรายการใน.Xauthorityไฟล์ของผู้ใช้เนื่องจากxauthไม่ได้ติดตั้ง ดังนั้นคุณสามารถติดตั้งลงบนเซิร์ฟเวอร์แต่ละเครื่องเพื่อกำจัดข้อความที่น่ารำคาญนี้

ใน Fedora 19 คุณติดตั้งxauthดังนี้:

$ sudo yum install xorg-x11-xauth

หากคุณพยายามsshเข้าสู่เซิร์ฟเวอร์คุณจะเห็นข้อความว่ามีการสร้างรายการใน.Xauthorityไฟล์ของผู้ใช้

$ ssh root@server
/usr/bin/xauth:  creating new authority file /root/.Xauthority
$

การเข้าสู่ระบบครั้งต่อไปจะไม่แสดงข้อความนี้อีกต่อไป

วิธีที่ # 2 - ปิดการใช้งานผ่าน ForwardX11

คุณสามารถสั่งให้sshไคลเอ็นต์ไม่พยายามเปิดใช้งานการส่งต่อ X11 โดยการรวมพารามิเตอร์ SSH ForwardX11

$ ssh -o ForwardX11=no root@server

คุณสามารถทำสิ่งเดียวกันได้ด้วย-xสวิตช์:

$ ssh -x root@server

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

วิธีที่ # 3 - ปิดการใช้งานผ่าน sshd_config

นี้มักจะเริ่มต้น แต่ในกรณีที่มันไม่ได้คุณสามารถตั้งค่าของคุณsshdเซิร์ฟเวอร์เพื่อให้ X11Forwarding /etc/ssh/sshd_configปิดใน

X11Forwarding no

จาก 3 วิธีที่ฉันมักใช้ # 2 เพราะฉันมักจะต้องการX11Forwardingเซิร์ฟเวอร์ส่วนใหญ่ แต่ก็ไม่ต้องการเห็นX11....คำเตือน

$ HOME / .ssh / config

ส่วนใหญ่ข้อความเหล่านี้จะไม่ปรากฏขึ้น พวกเขามักจะปรากฏเมื่อคุณมีรายการต่อไปนี้ใน$HOME/.ssh/configไฟล์ของคุณที่ด้านบน

ServerAliveInterval 15
ForwardX11 yes
ForwardAgent yes
ForwardX11Trusted yes

GatewayPorts yes

ดังนั้นนี่คือการตั้งค่านี้ซึ่งท้ายที่สุดแล้วผลักดันการสร้างX11..ข้อความเหล่านั้นดังนั้นวิธี # 2 น่าจะเหมาะสมที่สุดหากคุณต้องการใช้งานForwardX11 yesโดยค่าเริ่มต้น แต่เลือกปิดใช้งานสำหรับการเชื่อมต่อบางอย่างจากsshมุมมองของลูกค้า .

ความปลอดภัย

โดยทั่วไปจะไม่แนะนำให้ทำงานด้วยForwardX11 yesตลอดเวลา ดังนั้นหากคุณต้องการที่จะใช้งานการเชื่อมต่อ SSH ของคุณในคฤหาสน์ที่ปลอดภัยที่สุดเท่าที่จะเป็นไปได้

  1. อย่ารวมForwardX11 yesไว้ใน$HOME/.ssh/configไฟล์ของคุณ
  2. ใช้ ForwardingX11 เฉพาะเมื่อคุณต้องการผ่าน ssh -X user@server
  3. หากคุณสามารถปิดการใช้งานX11Forwardingอย่างสมบูรณ์บนเซิร์ฟเวอร์จึงไม่ได้รับอนุญาต

อ้างอิง


คุณสามารถช่วยฉันด้วยunix.stackexchange.com/questions/470331/หรือไม่?
แลกเปลี่ยน

สำหรับบันทึกที่ฉันได้รับข้อความว่าเมื่อฉันได้รับการพยายามที่จะใช้ลูกค้า X บนเซิร์ฟเวอร์ระยะไกล พวกเขาจะไม่เปิดตัวเพราะไม่ได้ตั้งค่า $ DISPLAY ฉันจัดการเพื่อแก้ไขด้วยคำแนะนำแรกของคุณ: ติดตั้ง xauth
Tom Ellis

13

ในกรณีของฉันเพิ่มสตริงนี้เพื่อ/etc/ssh/sshd_configแก้ไขปัญหา:

X11UseLocalhost no

สิ่งนี้ใช้ได้สำหรับฉัน (เซิร์ฟเวอร์ติดตั้ง xauth ไว้แล้ว) ขอบคุณ
Paul Higgins

สิ่งนี้ดูเหมือนจะแก้ปัญหาของฉัน แต่ฉันไม่เข้าใจว่าทำไมซึ่งเกี่ยวข้องกับ ฉันมีสิ่งที่ควรเป็นเครื่อง Debian 7 สามเครื่องเหมือนกันซึ่งหนึ่งในนั้นก็หยุดรับlocahostการส่งต่อ X11 X11 การส่งต่อไปอีกสองรายการยังคงใช้ได้ ความคิดใดที่อาจมีการเปลี่ยนแปลง?
Kyle Strand

12

วิ่งข้ามสิ่งนี้ในวันนี้และทุบหัวของฉันซักพักหนึ่งจนกว่าฉันจะเจอการตั้งค่า ssh:

ถ้าเป็น RHEL 7 (centOS, OEL, ฯลฯ ) และปิดใช้งาน ipv6 แล้วก็ต้องการ:

AddressFamily inet

ตั้งค่าใน / etc / ssh / sshd_config


ถ้าเฉพาะข้อความแสดงข้อผิดพลาดที่เกี่ยวข้องกับสิ่งนี้ ...
Jack Wasey

คุณรู้ว่ามีอะไรตลก? ฉันวิ่งเข้าไปในนี้วันนี้และ googled พบบทความนี้และพบความคิดเห็นของตัวเองจากสี่ปีที่ผ่านมาและพูดว่า "โอ้ใช่แล้วนั่นคือปัญหา"
Systemspoet

2

อีกรูปแบบที่แตกต่างกันเล็กน้อยคือถ้าคุณต้องการหยุดดูข้อความนี้ (เช่นหยุดพยายามส่งต่อ X11) สำหรับเซิร์ฟเวอร์บางตัว แต่ยังคงใช้ค่าเริ่มต้นเป็น ForwardX11 ใช่สำหรับการเชื่อมต่ออื่น ๆ ทั้งหมด

สำหรับสถานการณ์นี้คุณสามารถปิดการใช้งานการส่งต่อ X11 สำหรับโฮสต์ที่เฉพาะเจาะจง (หรือช่วง) ใน ~ / .ssh / config ของคุณ บางสิ่งเช่นนี้

host 10.1.1.*
ForwardX11 no 

กิตติกรรมประกาศ: นี่เป็นการจัดแต่งเล็กน้อยสำหรับคำตอบที่มีอยู่ (และสมบูรณ์มาก) ที่มีอยู่ - เนื่องจากฉันไม่สามารถแสดงความคิดเห็น!


2

หากใช้ไคลเอนต์ในโหมด verbose ( ssh -v user@host) จะช่วยให้คุณ

debug1: Remote: No xauth program; cannot forward with spoofing.

แต่xauthถูกติดตั้งบนเซิร์ฟเวอร์แน่นอนแล้วอาจเป็นเพราะsshdค้นหาxauth ที่ปฏิบัติการได้ในตำแหน่งที่ไม่ถูกต้อง ( / usr / X11R6 / bin / xauthปกติ) หนึ่งสามารถแก้ไขได้โดยการตั้งค่า

XAuthLocation /usr/bin/xauth

ใน/ etc / sshd / sshd_config (หรืออะไรก็ตามที่เซิร์ฟเวอร์ของคุณถูกกำหนดค่าด้วย)


สิ่งนี้ใช้ได้กับฉันใน CentOS 7 นั่นเป็นข้อความแสดงข้อผิดพลาดที่ฉันเห็น
Brian Minton

นี่เป็นปัญหาของฉันพยายามเข้าสู่ Mac จากระยะไกล มีคาถาที่ถูกต้องคือ XAuthLocation / opt / X11 / bin / xauth
Leon Avery

1

การกำหนดค่าการส่งต่อ X11 บนพื้นฐานต่อโฮสต์

นอกเหนือจากคำตอบที่ยอดเยี่ยมทั้งหมดแล้วที่นี่คุณสามารถกำหนดค่าForwardX11บนพื้นฐานต่อโฮสต์ดังนั้นหากserverล้มเหลวเช่นนี้คุณสามารถเพิ่มรายการลงใน~/.ssh/configไฟล์ของคุณในแบบฟอร์มต่อไปนี้:

Host server server.domain.dom
    ForwardX11 no

คุณสามารถใช้รายการเช่นนี้เป็น alliases สำหรับการกำหนดค่าทั้งชุด

Host my.server
    HostName server.domain.dom
    User user
    Port 1234
    ForwardX11 no

นี้จะเป็นประโยชน์โดยเฉพาะอย่างยิ่งถ้าคุณได้ตั้งชื่อเซิร์ฟเวอร์เติมข้อความอัตโนมัติสำหรับ SSH และ SCP


1

ฉันเจอคำถามนี้หลังจากพบsshd-xauthข้อผิดพลาดเกือบหนึ่งทศวรรษ มีการรายงานวิธีแก้ไขปัญหาสองวิธีโดยวิธีแรกxauthคือวิธีที่สองในการจัดการข้อบกพร่อง


โซลูชันที่ 1 - บายพาส xauth

  • ท้องถิ่น - เครื่องท้องถิ่นที่ให้บริการ 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

ฉันยังโพสต์โซลูชันนี้เป็นคำตอบสำหรับคำถามอื่น


โซลูชันที่ 2 - แก้ไขข้อผิดพลาดsshd / xauth

โซลูชันนี้อยู่ใกล้กับโซลูชันของ @systempoet ด้านบนแม้ว่าเพียงอย่างเดียวนั้นไม่เพียงพอ

นอกเหนือจากการแก้ไข/etc/ssh/sshd_configบนรีโมตแล้ว:

AddressFamily inet

/etc/hosts บนรีโมตถูกแก้ไขด้วย:

::1     localhost ip6-localhost ip6-loopback

หากมีการแสดงความคิดเห็นทั้งข้อความแสดงข้อผิดพลาด

X11 forwarding request failed on channel 0

ปรากฏขึ้นหลังจากการssh -X ...โทร นอกจากนี้ยัง/var/log/auth.logพบข้อผิดพลาด:

sshd[...]: error: Failed to allocate internet-domain X11 display socket

ทดสอบเพื่อสร้างข้อบกพร่อง (ก่อนการแก้ไข):

เครื่องท้องถิ่น:

$ Xephyr -ac -screen 1280x800 -br -reset -terminate  :2 &
$ DISPLAY=:2 ssh -X  user@remote
X11 forwarding request failed on channel 0

0

จุดสำคัญหนึ่งที่ควรทราบหลังจากทำการเปลี่ยนแปลงการกำหนดค่าคือคุณจะต้องฆ่า sshd เพื่อให้รับการเปลี่ยนแปลง:

cat /var/run/sshd.pid | xargs kill -1

เป็นผู้ใช้รูท


-2
  1. ตั้งค่า 2 ตัวเลือกต่อไปนี้/etc/ssh/sshd_configในโฮสต์ RHEL ของคุณ

    X11Forwarding yes X11UseLocalhost no

  2. sudo /etc/init.d/sshd reload

  3. sudo yum install xauth
  4. ssh กลับไปยังโฮสต์ RHEL ด้วยสวิตช์ -X: ssh -X yourname@rhelbox
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.