두 단계 대신 한 단계로 역방향 SSH 터널링 사용(-X 사용)

두 단계 대신 한 단계로 역방향 SSH 터널링 사용(-X 사용)

세 개의 호스트가 있다고 가정해 보겠습니다.

  • miki- 내 컴퓨터가 NAT 뒤에 있습니다.
  • vps0- 내 VPS
  • mum- 다른 NAT 뒤에 있는 어머니의 컴퓨터.

임무는 내 컴퓨터에서 엄마에게 연결하고 X11을 계속 전달하는 것입니다. 지금까지 나는 다음과 같이 역방향 터널링을 사용하고 있습니다.

# on mum's computer (at crontab on reboot):
autossh -fN -M 3986 -R 1993:localhost:22 login@vps0

# when I want to connect to mum's computer
miki$ ssh login@vps0
vps0$ ssh localhost -p 1993

위 방법에는 X11 전달(-X 매개변수)을 사용할 수 없다는 단점이 있습니다. - 원격으로 창을 열 수 없습니다.

엄마 컴퓨터에 직접 연결해서 X11 포워딩을 유지하는 게 가능한지 궁금합니다.

추신. 나는 주제에 답을 심었습니다.중간자 서버를 통한 SSH 터널링 - 키 쌍을 사용하여 한 단계로 연결하는 방법은 무엇입니까?. 불행하게도 이 솔루션을 사용하면 X11 전달이 작동하지 않습니다.

답변1

ProxyCommand이 솔루션이 X11 전달에 작동하지 않는 이유는 무엇입니까 ? X11 포워딩을 통해 엄마 컴퓨터에 직접 접속하려면 다음과 같은 구성을 사용하시면 될 것 같습니다.

Host mum
ProxyCommand ssh -q -W localhost:1993 login@vps0
ForwardX11 yes

답변2

X11 전달이 무엇인지 이해한다면 @yaegashi의 답변에 설명된 것만큼 간단하지 않다는 것을 알게 될 것입니다. X11 전달은 SSH 아래에 일반 터미널 트래픽처럼 연결할 수 없는 또 다른 계층을 생성합니다. 하지만 포트 전달을 사용하면 이 작업을 수행할 수 있습니다.

기반블로그 게시물, 이는 쉘 스크립트에 하드코딩된 대로 실행됩니다. 을 사용하여 동일한 작업을 시도했습니다 ssh_config. 원래 스크립트에 역터널링의 복잡성을 추가하기만 하면 됩니다.

sshx () {
    # create the tunnel from vps0 to your host
    sudo ssh -Nn vps0 -L 3991:vps0:1993 &
    sleep 1s
    PID=$!
    # connect to localhost on forwrded port
    ssh localhost -XYC -p3991
    sudo kill $PID
}

나는 그것이 당신에게 유용하기를 바랍니다

관련 정보