Untuk mendapatkan penerusan X11 bekerja lebih dari ssh, Anda perlu 3 hal di tempat.
- Klien Anda harus diatur untuk meneruskan X11.
- Server Anda harus diatur untuk memungkinkan penerusan X11.
- Server Anda harus dapat mengatur otentikasi X11.
Jika Anda memiliki # 1 dan # 2 di tempat tetapi tidak ada # 3, maka Anda akan berakhir dengan variabel lingkungan DISPLAY yang kosong.
Sup-ke-kacang, inilah cara agar penerusan X11 berfungsi.
Di server Anda, pastikan / etc / ssh / sshd_config berisi:
X11Forwarding yes
X11DisplayOffset 10
Anda mungkin perlu SIGHUP sshd sehingga mengambil perubahan ini.
cat /var/run/sshd.pid | xargs kill -1
Di server Anda, pastikan Anda telah menginstal xauth.
belden@skretting:~$ which xauth
/usr/bin/xauth
Jika Anda belum menginstal xauth, Anda akan mengalami masalah "kosong DISPLAY environment variable".
Di klien Anda, sambungkan ke server Anda. Pastikan untuk memberitahu ssh untuk mengizinkan penerusan X11. aku lebih memilih
belden@skretting:~$ ssh -X blyman@the-server
tapi kamu mungkin suka
belden@skretting:~$ ssh -o ForwardX11=yes blyman@the-server
atau Anda dapat mengatur ini di ~ / .ssh / config Anda.
Saya berlari ke variabel lingkungan DISPLAY kosong ini sebelumnya hari ini ketika ssh'ing ke server baru yang saya tidak kelola. Melacak bagian xauth yang hilang cukup menyenangkan. Inilah yang saya lakukan, dan apa yang dapat Anda lakukan juga.
Di workstation lokal saya, di mana saya seorang administrator, saya memverifikasi bahwa / etc / ssh / sshd_config telah diatur untuk meneruskan X11. Ketika saya ssh -X kembali ke localhost, saya mendapatkan DISPLAY saya diatur dengan benar.
Memaksa DISPLAY untuk tidak disetel tidak terlalu sulit. Saya hanya perlu melihat apa yang sshd dan ssh lakukan untuk mengaturnya dengan benar. Inilah hasil lengkap dari semua yang saya lakukan di sepanjang jalan.
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
Alih-alih menggunakan sudo untuk memaksa menyalin file ssh_host_ {dsa, rsa} _key saya ke tempatnya, saya menggunakan ssh-keygen untuk membuat yang dummy untuk saya sendiri.
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.
Bilas-dan-ulangi dengan -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
Edit ~ / dummy-sshd / sshd_config untuk menunjuk ke file kunci ssh_host baru yang benar.
# 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
Jalankan sshd pada port baru dalam mode non-detach:
blyman@skretting:~$ sshd -p 50505 -f ~/dummy-sshd/sshd_config -d
sshd re-exec requires execution with an absolute path
Aduh, lebih baik perbaiki jalur itu:
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.
Pop terminal baru dan ssh in ke localhost di port 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
Lihatlah tiga baris terakhir di sana. Saya kebetulan memiliki DISPLAY yang ditetapkan, dan memiliki dua baris yang tampak bagus dari / usr / bin / xauth.
Dari sana adalah permainan anak-anak untuk memindahkan / usr / bin / xauth ke /usr/bin/xauth.old saya, lepaskan sambungan dari ssh dan hentikan sshd, kemudian jalankan sshd dan ssh kembali ke localhost.
Ketika / usr / bin / xauth hilang, saya tidak melihat DISPLAY tercermin di lingkungan saya.
Tidak ada yang brilian terjadi di sini. Sebagian besar saya beruntung dalam memilih pendekatan yang waras untuk mencoba mereproduksi ini di mesin lokal saya.