SSH 역방향 터널을 통해 TeamViewer의 원격 데스크톱 대체

SSH 역방향 터널을 통해 TeamViewer의 원격 데스크톱 대체

SSH(역방향) 터널을 통해 노트북에서 데스크톱으로 원격 데스크톱 세션을 열고 싶습니다. 이것은 간단해야 합니다(또는 적어도 실행 가능해야 합니다). 그렇죠? 지금까지는 Team Viewer를 사용하여 원격 데스크톱에 로그인했습니다. Team Viewer 없이도 비슷한 결과를 얻을 수 있기를 바랍니다.

내 SSH 터널은 다음과 같습니다.

laptop--->nat--->middleman<--nat<--desktop

모든 컴퓨터는 Linux(주로 Kubuntu 12.04 또는 OpenSuse 12.3)를 실행합니다. NAT 라우터에서 포트를 변경하거나 구성을 변경할 수 없습니다.

내 문제의 핵심인 VNC/원격 데스크톱 문제를 해결하려면 이를 이해하는 것이 필요해 보이기 때문에 SSH 터널에 대해 설명하겠습니다. 이 다리에 관하여:

middleman<--nat<--desktop

...다음과 같이 설정되었습니다.

autossh -M 5234 -N -f -R 1234:localhost:22 [email protected]

이 다리에 관하여:

laptop--->nat--->middleman

다음과 같이 중개인에 연결할 수 있습니다.

me@laptop:~$ ssh -i ~/.ssh/id_rsa admin@middleman  

하지만 실제로 해야 할 일은 중개자 없이 데스크톱에 직접 연결하는 것입니다. 이를 위해 중개자에서 netcat("nc")을 사용합니다. 기반으로이것nc가 필요한 것 같습니다. 그래서 ProxyCommand와 nc를 사용하도록 랩톱에서 SSH 구성 파일을 편집합니다.

me@laptop:~/.ssh$ nano config

내용은 다음과 같습니다:

Host family_desktops
  ProxyCommand ssh middleman_fqdn nc localhost %p
  User admin
  PasswordAuthentication no
  IdentityFile ~/.ssh/my_id_rsa

middleman_fqdn"middleman.com"은 어디에 있나요?

그런 다음 한 단계만으로 "데스크톱"에 연결합니다.

me@laptop:~$ ssh family_desktops -p 1234

(도움말을 바탕으로 이 작업을 수행했습니다.여기그리고여기그리고 내가 물었던 다른 관련 질문들. 나는 이 주제에 관해 몇 주 동안 씨름해 왔기 때문에 많은 질문을 가지고 있습니다. )

이 SSH 연결을 통해 내 컴퓨터에 완벽하게 작동하고 태그가 지정된 셸이 생겼습니다 desktop. 완벽한.

이제 이 SSH 터널을 통해 VNC(또는 TeamViewer와 같은)와 같은 원격 데스크톱 솔루션이 필요합니다. 어떻게?

지금까지 시도한 내용은 다음과 같습니다.

중개인<--nat<--데스크탑

autossh -M 5235 -N -f -R 1235:localhost:5901 [email protected]

연결을 설정한 후:

x11vnc -autoport 5901 

나는 그것이 포트 5901에 연결되어 있는지 지켜보고 확인했고 실제로 연결되었습니다.

노트북--->nat--->중개자<--nat<--데스크탑

노트북 ~/.ssh/config:

Host family_desktops
  ProxyCommand ssh -NL 5901:localhost:1235 middleman.com nc localhost 1235
  User admin
  PasswordAuthentication no
  IdentityFile ~/.ssh/my_id_rsa

터널 설정:

me@laptop:~$ sudo ssh family_desktops

VNC 클라이언트:

connect to localhost:5901

이렇게 하면 "서버를 찾을 수 없습니다" 오류가 발생합니다.

ProxyCommand의 다양한 변형을 시도했지만 아무 것도 작동하지 않았습니다. 분명히 ProxyCommand에 어떤 매개변수가 있어야 하고 어떤 매개변수가 ssh 명령줄에 있어야 하는지 추측하고 있습니다. 내 설정에 몇 가지 잠재적인 문제가 있음을 알 수 있지만 모든 것을 작동시키는 방법을 알 수는 없습니다.

PS 언급한 대로 이에 대해 몇 가지 질문이 있습니다. 그 중 일부는 나를 해결책에 더 가까이 다가가게 했고 현재 문제의 기초를 형성했습니다. 이 주제에 대한 이전의 다른 질문은 제가 무지하고 올바른 형식으로 질문할 수 없음을 보여줍니다. 이 시점에서 현재 질문은 내 문제가 무엇인지, 내가 원하는 솔루션이 무엇인지 설명할 수 있는 최선의 능력을 나타내지만, 다른 질문 중 일부도 여전히 열려 있습니다.이것은이것은 관련이 있습니다.

답변1

nc 없이 2단계를 시도해 볼 수 있나요? 즉, VNC를 실행하려면 -L 및 -R만 사용하십시오. 문제는 귀하의 netcat 세션이 이미 열려 있는 세션에 다시 연결된다는 것입니다. 따라서 VNC 작업을 수행할 때 netcat을 사용하지 마십시오.

답변2

ProxyCommand가 아닌 중개자 sshd.conf에 대해 "gatewayports yes"를 설정해야 합니다.

  1. 그런 다음 데스크톱에서 중간자(man-in-the-middle)로 원격 터널을 가져오고 중간자(man-in-the-middle)에서 TCP 포트 x를 열고 vnc를 로컬로 엽니다.
  2. 그런 다음 노트북에서 중간자까지의 로컬 터널은 vnc 포트를 localhost로 열고 이를 x로 터널링합니다.
  3. 그런 다음 localhost:vnc에 연결하면 로컬 터널을 통해 메시지 가로채기(man-in-the-middle)로 연결되고 원격 터널을 통해 노트북 vnc로 연결됩니다.

작동이 완료되면 게이트웨이 포트에 대한 보다 안전한 설정에 대해 자세히 알아보세요.

관련 정보