SSH 및 Netcat을 사용하여 전달


2

내 컴퓨터에서, 나는 노드를 연결해야합니다 A, B그리고 C, 도달 target:

localhost -> A -> B -> C -> target

기계 A가 거부 X11 Forwarding되도록 구성 되었으므로 통과하는 연결을 통해 그래픽 인터페이스를 열 수 없어야합니다 ssh A.

그러나, 설정 ~/.ssh/config파일, 그리고 추가 ProxyCommand하여 '들 netcat, 나는에서 그래픽 응용 프로그램을 열 수있었습니다 target간단하게 실행, ssh -XY target. 설정은 ~/.ssh/config다음과 같습니다.

Host A
    Hostname domainA
Host B
    Hostname domainB
    ProxyCommand ssh A nc %h %p
Host C
    Hostname domainC
    ProxyCommand ssh B nc %h %p
Host target
    Hostname domain-target
    ProxyCommand ssh C nc %h %p

연결 자체가 작동하고 있습니다. 그러나 나는 실제로 커튼 뒤에서 무슨 일이 일어나고 있는지 이해하지 못했습니다.

내가 실행할 때 ssh -XY target실제로 어떤 일이 발생하며 호스트 가 허용하지 않더라도 왜이 터널을 통해 GUI를 열 AX11 Forwarding있습니까?


나는 약간의 노력을 기울이는 것이 좋다는 것을 알고 있습니다. 그래서 여기에 내가 더 많이 도달하여 위의 실행을 이해하려고 노력합니다. 나는 교체 한 targetTARGET및 호스트 CHOST_C.

$ ssh -vXY TARGET
OpenSSH_6.2p2, OpenSSL 1.0.1e 11 Feb 2013
debug1: Reading configuration data /home/rubens/.ssh/config
debug1: /home/rubens/.ssh/config line 20: Applying options for TARGET
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: Executing proxy command: exec ssh HOST_C nc TARGET 22
debug1: permanently_drop_suid: 1000
debug1: identity file /home/rubens/.ssh/id_rsa type 1
debug1: identity file /home/rubens/.ssh/id_rsa-cert type -1
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_6.2
debug1: Remote protocol version 2.0,
    remote software version OpenSSH_5.9p1 Debian-5ubuntu1.1
debug1: match: OpenSSH_5.9p1 Debian-5ubuntu1.1 pat OpenSSH_5*
debug1: SSH2_MSG_KEXINIT sent
debug1: SSH2_MSG_KEXINIT received
debug1: kex: server->client aes128-ctr hmac-md5 none
debug1: kex: client->server aes128-ctr hmac-md5 none
debug1: sending SSH2_MSG_KEX_ECDH_INIT
debug1: expecting SSH2_MSG_KEX_ECDH_REPLY
debug1: Server host key: RSA (some numbers...)
debug1: Host 'TARGET' is known and matches the RSA host key.
debug1: Found key in /home/rubens/.ssh/known_hosts:51
debug1: ssh_rsa_verify: signature correct
debug1: SSH2_MSG_NEWKEYS sent
debug1: expecting SSH2_MSG_NEWKEYS
debug1: SSH2_MSG_NEWKEYS received
debug1: Roaming not allowed by server
debug1: SSH2_MSG_SERVICE_REQUEST sent
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug1: Authentications that can continue: publickey,password
debug1: Next authentication method: publickey
debug1: Offering RSA public key: /home/rubens/.ssh/id_rsa
debug1: Server accepts key: pkalg ssh-rsa blen 279
debug1: Authentication succeeded (publickey).
Authenticated to TARGET (via proxy).
debug1: channel 0: new [client-session]
debug1: Requesting no-more-sessions@openssh.com
debug1: Entering interactive session.
debug1: Requesting X11 forwarding with authentication spoofing.
Welcome to Ubuntu 12.04.2 LTS (GNU/Linux 3.2.0-48-generic x86_64)
...
rubens@TARGET:~
$ # prompt, and I'm able to open graphical apps, like gkrellm

연결은 먼저 호스트 C에서 발생하는 것으로 보이며 이전 연결이 발생해야합니다 (이전 재귀 스태킹 종속성 및 LIFO 순서로 해결).

A첫 번째 연결 수준 인 host 에서 X11Forward권한이 적용됩니까? 또는 ncmachine까지 연결 터널을 만들고 target나중에 사용하는 열린 소켓을 다음과 같이 반환합니다.

ssh -XY (open socket resulting from connections A->B->C->target)

그렇다면 연결할 수 X11Forwarding있습니까? 아니면 호스트 A설정에 문제가 있습니까?

답변:


2

호스트 A는 X11 연결을 전달하지 않고 호스트 C는 전달합니다. 호스트 C에 연결하고 로컬 시스템 (서버)에 표시되는 X11 응용 프로그램 (클라이언트)을 엽니 다. 연결은 중간 노드 A와 B를 통과하지만 로컬 호스트와 호스트 C 사이에 설정된 X 전달과는 관련이 없습니다.

참고 : -W해당 목적에 맞는 옵션 이있는 OpenSSH를 사용하므로 netcat이 필요하지 않습니다 .


+1 -W %h:%p대신 nc %h %p잘 작동합니다. 그러나을 사용하여 연결할 때 정확히 어떤 일이 발생하지 않았습니다 ssh -XY target. 중간 노드를 통해 연결이 열리고 실제로 소켓 포트가 반환 ssh (socket)됩니까? 또는 호스트에 연결을 A, B그리고 C, 연결하기 전에 target실제로 패킷의 스택 교환 부품없이, 바로 인증을 수행 (패킷에서 이동 localhost-> A-> B-> C-> target, 또는, 인증 후에, 막 localhost- " target) ?
Rubens

1
패킷은 각 중간 노드를 통과합니다.
Marco
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.