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"를 설정해야 합니다.
- 그런 다음 데스크톱에서 중간자(man-in-the-middle)로 원격 터널을 가져오고 중간자(man-in-the-middle)에서 TCP 포트 x를 열고 vnc를 로컬로 엽니다.
- 그런 다음 노트북에서 중간자까지의 로컬 터널은 vnc 포트를 localhost로 열고 이를 x로 터널링합니다.
- 그런 다음 localhost:vnc에 연결하면 로컬 터널을 통해 메시지 가로채기(man-in-the-middle)로 연결되고 원격 터널을 통해 노트북 vnc로 연결됩니다.
작동이 완료되면 게이트웨이 포트에 대한 보다 안전한 설정에 대해 자세히 알아보세요.