Windows 10에서 Ubuntu bash를 실행하여 ssh -X 원격 서버에서 GUI 환경을 확보하세요.

Windows 10에서 Ubuntu bash를 실행하여 ssh -X  원격 서버에서 GUI 환경을 확보하세요.

Ubuntu를 실행하는 컴퓨터가 있고 Fedora 14 컴퓨터에서 SSH를 통해 연결하고 있습니다. 그래픽 프로그램을 원격으로 실행할 수 있도록 X를 Ubuntu 시스템에서 Fedora로 다시 전달하고 싶습니다. 두 시스템 모두 LAN에 있습니다.

SSH에 X11 전달을 활성화하는 옵션이 있다는 것을 알고 있지만 -X몇 가지 단계가 누락된 것 같습니다.

SSH를 통해 Ubuntu 시스템에서 Fedora로 X를 전달하는 데 필요한 단계는 무엇입니까?

답변1

X11 전달은 클라이언트 측과 서버 측 모두에서 활성화되어야 합니다.

우수한고객, (대문자 X) 옵션을 사용하면 X11 전달이 활성화됩니다. 다음을 사용하여 이를 기본값(모든 연결 또는 특정 연결에 대해)으로 설정할 -X수 있습니다.sshForwardX11 yes~/.ssh/config.

우수한서비스 터미널, X11Forwarding yes에 지정해야 합니다./etc/ssh/sshd_config. 기본 설정은 전달 없음(일부 배포에서는 기본적으로 설정됨 /etc/ssh/sshd_config)이며 사용자는 이 설정을 재정의할 수 없습니다. 구성을 변경하는 경우, 예를 들어 service ssh reload시스템이 systemd를 사용하는 경우 서버에 구성을 다시 로드하도록 지시해야 합니다 .

xauth프로그램은 서버측에 설치되어야 합니다. X11 프로그램이 있다면 xauth아마도 거기 있을 것입니다. xauth비표준 위치에 설치하는 경우는 드물지만 전화를 통해 수행할 수 있습니다.~/.ssh/rc(서버에서!).

서버에서는 환경 변수를 설정할 필요가 없습니다. 자동으로 적절한 값으로 설정됩니다 DISPLAY. XAUTHORITYssh를 실행했지만 DISPLAY설정되지 않은 경우 ssh가 X11 연결을 전달하지 않는다는 의미입니다.

Requesting X11 forwardingssh가 X11을 전달하고 있는지 확인하려면 포함 라인의 출력을 확인하세요 ssh -v -X. 알아채다서버가 응답하지 않습니다어느 쪽이든 잠재적인 공격자로부터 세부 정보를 숨기는 것이 보안 예방 조치입니다.

답변2

SSH를 통해 X11 전달을 수행하려면 다음 세 가지 작업을 수행해야 합니다.

  1. 클라이언트는 X11을 전달하도록 설정되어야 합니다.
  2. X11 전달을 허용하도록 서버를 설정해야 합니다.
  3. 서버에서 X11 인증을 설정할 수 있어야 합니다.

DISPLAY#1과 #2가 있지만 #3이 누락된 경우 빈 환경 변수가 생성됩니다 .

구체적으로 X11 전달을 작동시키는 방법은 다음과 같습니다.

  1. 서버에 다음을 /etc/ssh/sshd_config포함해야 합니다.

    X11Forwarding yes
    X11DisplayOffset 10
    

    sshd이러한 변경 사항을 적용하려면 SIGHUP이 필요할 수 있습니다 .

    cat /var/run/sshd.pid | xargs kill -1
    
  2. 서버에 xauth설치되어 있는지 확인하세요.

    belden@skretting:~$ which xauth
    /usr/bin/xauth
    

    xauth설치 하지 않으면 empty DISPLAY environment variable문제가 발생합니다.

  3. 클라이언트에서 서버에 연결합니다. X11 전달을 허용하도록 ssh에 지시하십시오. 나는 선호한다

    belden@skretting:~$ ssh -X blyman@the-server
    

하지만 당신은 좋아할 수도 있습니다

    belden@skretting:~$ ssh -o ForwardX11=yes blyman@the-server

또는 에 추가할 수 있습니다 ~/.ssh/config.


DISPLAY오늘 오전에 제가 관리하지 않는 새 서버에 SSH로 접속할 때 이 빈 환경 변수를 만났습니다. 부족한 xauth부분을 찾아보는 재미가 쏠쏠합니다. 이것이 내가 하는 일이고 당신도 할 수 있습니다.

내가 관리자로 있는 로컬 워크스테이션에서 /etc/ssh/sshd_configX11을 전달하도록 설정되어 있는지 확인했습니다. ssh -Xlocalhost로 돌아가면 설정 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}_keyssh-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.

새 터미널을 팝업하고 localhost포트 에 SSH를 연결합니다 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거기서부터는 my를 옆으로 옮기고 /usr/bin/xauth.old연결을 끊고 ssh중지한 sshd다음 시작 sshd하고 localhost로 돌아가는 ssh간단한 문제였습니다 .

그것이 사라지면 내 환경에 반영되는 것을 /usr/bin/xauth볼 수 없습니다 .DISPLAY


여기서는 흥미로운 일이 일어나지 않습니다. 대부분의 경우 나는 로컬 컴퓨터에서 이를 재현하기 위한 합리적인 접근 방식을 선택하는 행운을 누렸습니다.

답변3

확실하게 하다:

  • xauth서버에 설치 되어 있습니다 (참조: xauth info/ xauth list).
  • 서버의 /etc/ssh/sshd_config파일에는 다음 줄이 포함되어 있습니다.

    X11Forwarding yes
    X11DisplayOffset 10
    X11UseLocalhost no
    
  • 클라이언트측 ~/.ssh/config파일에는 다음 줄이 포함되어 있습니다.

    Host *
      ForwardAgent yes
      ForwardX11 yes
    
  • 클라이언트 측에는 X 서버(예: macOS: XQuartz, Windows: Xming)를 설치했습니다.


그런 다음 X11 전달에 SSH를 사용합니다.-X당신 의ssh다음과 같은 명령

ssh -v -X user@host

DISPLAY그런 다음 귀하의 것이 맞는지 확인하십시오아니요삭제자:

echo $DISPLAY

그렇다면 -vssh()의 자세한 매개변수를 사용하고 경고가 있는지 확인하십시오.

debug1: No xauth program.
Warning: untrusted X11 forwarding setup failed: xauth key data not generated

당신이 가지고 있다면신뢰할 수 없는 X11그러면 위 그림과 같이-Y표시 하려고대신(호스트를 신뢰하는 경우):

ssh -v -Y user@host

바라보다:-X를 ssh에 사용할 때 "경고: 신뢰할 수 없는 X11 전달 설정 실패: xauth 키 데이터가 생성되지 않음"은 무엇을 의미합니까?


당신이 가지고 있다면경고: xauth 데이터가 없습니다.Xauthority, 다음과 같은 새 파일을 생성해 볼 수 있습니다 .

xauth generate :0 . trusted
xauth list

바라보다:새로운 .Xauthority 파일 생성/재구축


위와 다른 경고가 표시되는 경우 추가 단서를 따르십시오.


답변4

Windows 10에서 Ubuntu bash를 실행하여 ssh -X 원격 서버에서 GUI 환경을 확보하세요.

  • 첫 번째

아래의 모든 것을 설치하십시오. Windows에서는 Xming터미널에 install sudo apt install을 사용하세요 ssh xauth xorg.

sudo apt install ssh xauth xorg
  • 두번째

ssh_config파일이 포함된 폴더 로 이동하세요 /etc/ssh. 내 파일은 .

  • 제삼

ssh_config관리자로 편집합니다( 사용 sudo). 내부적으로 ssh_config행의 해시가 제거되고 해당 매개변수가 로 설정됩니다.#ForwardAgentForwardX11ForwardX11Trustedyes

# /etc/ssh/ssh_config

Host *
    ForwardAgent yes
    ForwardX11 yes
    ForwardX11Trusted yes
  • 앞으로

파일에서 이전 및 ssh_config이전 해시를 제거하고 파일 끝에 새 줄을 추가하여 xauth 파일 위치를 선언합니다. xauth 파일 경로를 직접 작성해야 합니다.#Port 22Protocol 2XauthLocation /usr/bin/xauth

# /etc/ssh/ssh_config

#   IdentifyFile ...
    Port 22
    Protocol 2
#   Cipher 3des
#   ...
#   ...
    ...
    ...
    GSSAPIDelegateCredentials no
    XauthLocation /usr/bin/xauth
  • 다섯

ssh_config이제 파일 편집을 마쳤으므로 편집기를 종료할 때 파일을 저장합니다. 이제 폴더로 이동 ~하거나 파일 에 $HOME추가 하고 저장하세요.export DISPLAY=localhost:0.bashrc

# ~/.bashrc
...
...
export DISPLAY=localhost:0
  • 마지막

이제 거의 끝났습니다. Bash 쉘을 다시 시작하고 Xming프로그램을 열고 사용하십시오 ssh -X yourusername@yourhost. 그런 다음 GUI 환경을 즐기십시오.

ssh -X yourusername@yourhost

Windows의 Ubuntu 하위 시스템에도 문제가 있습니다. 링크는 다음과 같습니다.

https://gist.github.com/DestinyOne/f236f71b9cdecd349507dfe90ebae776

관련 정보