Để chuyển tiếp X11 hoạt động trên ssh, bạn sẽ cần 3 thứ tại chỗ.
- Khách hàng của bạn phải được thiết lập để chuyển tiếp X11.
- Máy chủ của bạn phải được thiết lập để cho phép chuyển tiếp X11.
- Máy chủ của bạn phải có khả năng thiết lập xác thực X11.
Nếu bạn có cả số 1 và số 2 tại chỗ nhưng thiếu số 3, thì bạn sẽ kết thúc với một biến môi trường HIỂN THỊ trống.
Soup-to-nut, đây là cách để chuyển tiếp X11 hoạt động.
Trên máy chủ của bạn, đảm bảo / etc / ssh / sshd_config chứa:
X11Forwarding yes
X11DisplayOffset 10
Bạn có thể cần SIGHUP sshd để nó tiếp nhận những thay đổi này.
cat /var/run/sshd.pid | xargs kill -1
Trên máy chủ của bạn, đảm bảo bạn đã cài đặt xauth.
belden@skretting:~$ which xauth
/usr/bin/xauth
Nếu bạn chưa cài đặt xauth, bạn sẽ gặp phải vấn đề "biến môi trường HIỂN THỊ trống".
Trên máy khách của bạn, kết nối với máy chủ của bạn. Hãy chắc chắn nói với ssh để cho phép chuyển tiếp X11. tôi thích
belden@skretting:~$ ssh -X blyman@the-server
nhưng bạn có thể thích
belden@skretting:~$ ssh -o ForwardX11=yes blyman@the-server
hoặc bạn có thể thiết lập điều này trong ~ / .ssh / config của bạn.
Tôi đã chạy vào biến môi trường HIỂN THỊ trống này vào đầu ngày hôm nay khi vào một máy chủ mới mà tôi không quản trị. Theo dõi phần xauth mất tích là một niềm vui nhỏ. Đây là những gì tôi đã làm, và những gì bạn cũng có thể làm.
Trên máy trạm cục bộ của tôi, nơi tôi là quản trị viên, tôi đã xác minh rằng / etc / ssh / sshd_config đã được thiết lập để chuyển tiếp X11. Khi tôi ssh -X quay lại localhost, tôi sẽ cài đặt HIỂN THỊ chính xác.
Buộc HIỂN THỊ không được đặt quá khó. Tôi chỉ cần xem sshd và ssh đang làm gì để thiết lập chính xác. Đây là đầu ra đầy đủ của tất cả mọi thứ tôi đã làm trên đường đi.
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
Thay vì sử dụng sudo để buộc sao chép các tệp ssh_host_ {dsa, rsa} _key của tôi vào vị trí, tôi đã sử dụng ssh-keygen để tạo các tệp giả cho chính mình.
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.
Rửa và lặp lại với -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
Chỉnh sửa ~ / dummy-sshd / sshd_config để trỏ đến các tệp chính ssh_host mới.
# 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
Bật sshd trên một cổng mới ở chế độ không tách rời:
blyman@skretting:~$ sshd -p 50505 -f ~/dummy-sshd/sshd_config -d
sshd re-exec requires execution with an absolute path
Rất tiếc, tốt hơn là sửa đường dẫn đó:
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.
Bật một thiết bị đầu cuối mới và ssh vào localhost trên cổng 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
Nhìn vào ba dòng cuối cùng ở đó. Tôi tình cờ có bộ HIỂN THỊ và có hai dòng trông đẹp mắt từ / usr / bin / xauth.
Từ đó, trò chơi của trẻ em được chuyển sang / usr / bin / xauth sang /usr/bin/xauth.old, ngắt kết nối với ssh và dừng sshd, sau đó khởi chạy sshd và ssh trở lại localhost.
Khi / usr / bin / xauth biến mất, tôi không thấy HIỂN THỊ phản ánh trong môi trường của mình.
Không có gì tuyệt vời đang diễn ra ở đây. Chủ yếu là tôi đã may mắn khi chọn một cách tiếp cận lành mạnh để thử tái tạo điều này trên máy cục bộ của mình.