ssh를 통해 X11 포워딩을 수행하려면 3 가지가 필요합니다.
- X11을 전달하도록 클라이언트를 설정해야합니다.
- X11 전달을 허용하도록 서버를 설정해야합니다.
- 서버는 X11 인증을 설정할 수 있어야합니다.
# 1과 # 2가 있지만 # 3이 없으면 빈 DISPLAY 환경 변수가 생깁니다.
Soup-to-nuts, X11 포워딩을 작동시키는 방법은 다음과 같습니다.
서버에서 / etc / ssh / sshd_config에 다음이 포함되어 있는지 확인하십시오.
X11Forwarding yes
X11DisplayOffset 10
sshd를 SIGHUP해야 할 수도 있으므로 이러한 변경 사항을 적용합니다.
cat /var/run/sshd.pid | xargs kill -1
서버에 xauth가 설치되어 있는지 확인하십시오.
belden@skretting:~$ which xauth
/usr/bin/xauth
xauth가 설치되어 있지 않으면 "빈 디스플레이 환경 변수"문제가 발생합니다.
클라이언트에서 서버에 연결하십시오. ssh에게 X11 전달을 허용하도록하십시오. 나는 선호한다
belden@skretting:~$ ssh -X blyman@the-server
하지만 너는 좋아할지도 모른다
belden@skretting:~$ ssh -o ForwardX11=yes blyman@the-server
또는 ~ / .ssh / config에서이를 설정할 수 있습니다.
오늘 관리하지 않는 새 서버에 ssh를 넣을 때이 빈 DISPLAY 환경 변수가 발생했습니다. 누락 된 xauth 부분을 추적하는 것은 약간 재미있었습니다. 여기 내가 한 일과 할 수있는 일이 있습니다.
관리자 인 로컬 워크 스테이션에서 / etc / ssh / sshd_config가 X11을 전달하도록 설정되어 있는지 확인했습니다. localhost로 다시 ssh -X를 넣으면 DISPLAY가 올바르게 설정됩니다.
DISPLAY를 설정 해제하는 것이 그리 어렵지 않았습니다. 나는 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
올바른 새 ssh_host 키 파일을 가리 키도록 ~ / dummy-sshd / sshd_config를 편집하십시오.
# 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.
새 터미널을 열고 포트 50505의 localhost에 ssh를 입력하십시오.
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가 반영되지 않았습니다.
여기에는 화려한 일이 없습니다. 주로 로컬 컴퓨터에서이를 재현하기 위해 제정신의 접근 방식을 선택하는 데 운이 좋았습니다.