ในการทำให้ X11 ส่งต่อทำงานกับ ssh คุณต้องมี 3 สิ่ง
- ลูกค้าของคุณจะต้องตั้งค่าเพื่อส่งต่อ X11
- เซิร์ฟเวอร์ของคุณจะต้องตั้งค่าให้อนุญาตการส่งต่อ X11
- เซิร์ฟเวอร์ของคุณต้องสามารถตั้งค่าการตรวจสอบความถูกต้อง X11
หากคุณมีทั้ง # 1 และ # 2 แต่ไม่มี # 3 อยู่คุณจะพบกับตัวแปรสภาพแวดล้อม DISPLAY ที่ว่างเปล่า
Soup-to-nuts นี่คือวิธีการส่งต่อ X11 ที่ทำงาน
บนเซิร์ฟเวอร์ของคุณตรวจสอบให้แน่ใจว่า / etc / ssh / sshd_config มี:
X11Forwarding yes
X11DisplayOffset 10
คุณอาจต้อง SIGHUP sshd เพื่อรับการเปลี่ยนแปลงเหล่านี้
cat /var/run/sshd.pid | xargs kill -1
บนเซิร์ฟเวอร์ของคุณตรวจสอบให้แน่ใจว่าคุณได้ติดตั้ง xauth
belden@skretting:~$ which xauth
/usr/bin/xauth
หากคุณไม่ได้ติดตั้ง xauth คุณจะพบปัญหา "ตัวแปรสภาพแวดล้อม DISPLAY ว่างเปล่า"
บนไคลเอนต์ของคุณเชื่อมต่อกับเซิร์ฟเวอร์ของคุณ โปรดบอกให้ ssh อนุญาตให้ส่งต่อ X11 ได้ ฉันชอบ
belden@skretting:~$ ssh -X blyman@the-server
แต่คุณอาจชอบ
belden@skretting:~$ ssh -o ForwardX11=yes blyman@the-server
หรือคุณสามารถตั้งค่านี้ใน ~ / .ssh / config ของคุณ
ฉันกำลังทำงานในตัวแปรสภาพแวดล้อม DISPLAY ที่ว่างเปล่าก่อนหน้านี้ในวันนี้เมื่อกำลังเข้าสู่เซิร์ฟเวอร์ใหม่ที่ฉันไม่ได้ดูแล การติดตามส่วน xauth ที่หายไปเป็นเรื่องสนุก นี่คือสิ่งที่ฉันทำและสิ่งที่คุณสามารถทำได้เช่นกัน
บนเวิร์กสเตชันในพื้นที่ของฉันซึ่งฉันเป็นผู้ดูแลระบบฉันตรวจสอบว่า / etc / ssh / sshd_config ตั้งค่าเพื่อส่งต่อ X11 เมื่อฉันกลับไปที่ localhost ฉันจะตั้งค่า DISPLAY ของฉันให้ถูกต้อง
การบังคับให้ DISPLAY รับการ unset นั้นไม่ยากเกินไป ฉันแค่ต้องดูว่า sshd และ ssh กำลังทำอะไรเพื่อให้มันถูกต้อง นี่คือผลลัพธ์เต็มของทุกสิ่งที่ฉันทำระหว่างทาง
blyman@skretting:~$ mkdir ~/dummy-sshd
blyman@skretting:~$ cp -r /etc/ssh/* ~/dummy-sshd/
cp: cannot open `/etc/ssh/ssh_host_dsa_key' for reading: Permission denied
cp: cannot open `/etc/ssh/ssh_host_rsa_key' for reading: Permission denied
แทนที่จะใช้ sudo เพื่อบังคับให้คัดลอกไฟล์ ssh_host_ {dsa, rsa} _key ของฉันฉันใช้ ssh-keygen เพื่อสร้างไฟล์จำลองด้วยตัวเอง
blyman@skretting:~$ ssh-keygen -t rsa -f ~/dummy-sshd/ssh_host_rsa_key
Generating public/private rsa key pair.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/blyman/dummy-sshd/ssh_host_rsa_key.
Your public key has been saved in /home/blyman/dummy-sshd/ssh_host_rsa_key.pub.
ล้างและยกเลิกด้วย -t dsa:
blyman@skretting:~$ ssh-keygen -t dsa -f ~/dummy-sshd/ssh_host_dsa_key
# I bet you can visually copy-paste the above output down here
แก้ไข ~ / dummy-sshd / sshd_config เพื่อชี้ไปยังไฟล์คีย์ ssh_host ใหม่ที่ถูกต้อง
# before
blyman@skretting:~$ grep ssh_host /home/blyman/dummy-sshd/sshd_config
HostKey /etc/ssh/ssh_host_rsa_key
HostKey /etc/ssh/ssh_host_dsa_key
# after
blyman@skretting:~$ grep ssh_host /home/blyman/dummy-sshd/sshd_config
HostKey /home/blyman/dummy-sshd/ssh_host_rsa_key
HostKey /home/blyman/dummy-sshd/ssh_host_dsa_key
เปิดไฟ sshd บนพอร์ตใหม่ในโหมดที่ไม่แยกออก:
blyman@skretting:~$ sshd -p 50505 -f ~/dummy-sshd/sshd_config -d
sshd re-exec requires execution with an absolute path
อ๊ะดีกว่าแก้ไขเส้นทางนั้น:
blyman@skretting:~$ /usr/sbin/sshd -p 50505 -f ~/dummy-sshd/sshd_config -d
debug1: sshd version OpenSSH_5.5p1 Debian-4ubuntu6
debug1: read PEM private key done: type RSA
debug1: Checking blacklist file /usr/share/ssh/blacklist.RSA-2048
debug1: Checking blacklist file /etc/ssh/blacklist.RSA-2048
debug1: private host key: #0 type 1 RSA
debug1: read PEM private key done: type DSA
debug1: Checking blacklist file /usr/share/ssh/blacklist.DSA-1024
debug1: Checking blacklist file /etc/ssh/blacklist.DSA-1024
debug1: private host key: #1 type 2 DSA
debug1: setgroups() failed: Operation not permitted
debug1: rexec_argv[0]='/usr/sbin/sshd'
debug1: rexec_argv[1]='-p'
debug1: rexec_argv[2]='50505'
debug1: rexec_argv[3]='-f'
debug1: rexec_argv[4]='/home/blyman/dummy-sshd/sshd_config'
debug1: rexec_argv[5]='-d'
Set /proc/self/oom_adj from 0 to -17
debug1: Bind to port 50505 on 0.0.0.0.
Server listening on 0.0.0.0 port 50505.
debug1: Bind to port 50505 on ::.
Server listening on :: port 50505.
เปิดเทอร์มินัลใหม่และ ssh ใน localhost บนพอร์ต 50505:
blyman@skretting:~$ ssh -p 50505 localhost
The authenticity of host '[localhost]:50505 ([::1]:50505)' can't be established.
RSA key fingerprint is 81:36:a5:ff:a3:5a:45:a6:90:d3:cc:54:6b:52:d0:61.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '[localhost]:50505' (RSA) to the list of known hosts.
Linux skretting 2.6.35-32-generic #67-Ubuntu SMP Mon Mar 5 19:39:49 UTC 2012 x86_64 GNU/Linux
Ubuntu 10.10
Welcome to Ubuntu!
* Documentation: https://help.ubuntu.com/
1 package can be updated.
0 updates are security updates.
Last login: Thu Aug 16 15:41:58 2012 from 10.0.65.153
Environment:
LANG=en_US.UTF-8
USER=blyman
LOGNAME=blyman
HOME=/home/blyman
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games
MAIL=/var/mail/blyman
SHELL=/bin/bash
SSH_CLIENT=::1 43599 50505
SSH_CONNECTION=::1 43599 ::1 50505
SSH_TTY=/dev/pts/16
TERM=xterm
DISPLAY=localhost:10.0
Running /usr/bin/xauth remove unix:10.0
/usr/bin/xauth add unix:10.0 MIT-MAGIC-COOKIE-1 79aa9275ced418dd445d9798b115d393
ดูสามบรรทัดสุดท้ายที่นั่น ฉันบังเอิญได้ตั้งค่า DISPLAY และมีสองบรรทัดที่ดูดีจาก / usr / bin / xauth
จากที่นั่นคือการเล่นของเด็ก ๆ เพื่อย้าย / usr / bin / xauth ของฉันไปที่ /usr/bin/xauth.old ปลดการเชื่อมต่อจาก ssh และหยุด sshd จากนั้นเปิด sshd และ ssh กลับไปที่ localhost
เมื่อ / usr / bin / xauth หายไปฉันไม่เห็น DISPLAY สะท้อนในสภาพแวดล้อมของฉัน
ไม่มีอะไรยอดเยี่ยมเกิดขึ้นที่นี่ ส่วนใหญ่ฉันโชคดีที่เลือกวิธีที่มีสติเพื่อลองทำสิ่งนี้บนเครื่องท้องถิ่นของฉัน