TeamViewer를 대체하기위한 SSH 역방향 터널을 통한 원격 데스크톱


14

SSH (역) 터널을 통해 랩톱에서 데스크톱으로 원격 데스크톱 세션을 열고 싶습니다. 간단해야합니까 (적어도 가능해야합니다) 맞습니까? 지금까지 팀 뷰어를 사용하여 원격 데스크톱에 로그인했습니다. 팀 뷰어없이 비슷한 결과를 얻고 싶습니다.

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

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

모든 머신은 리눅스 (주로 Kubuntu 12.04 또는 OpenSuse 12.3)를 실행하고 있습니다. nat 라우터에서 포트를 변경하거나 구성을 변경할 수 없습니다.

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

middleman<--nat<--desktop

... 어떻게 설정되어 있습니까?

autossh -M 5234 -N -f -R 1234:localhost:22 user@middleman.com

이 다리에 관하여 :

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 user@middleman.com

해당 연결이 설정된 상태에서

x11vnc -autoport 5901 

포트 5901에 연결되어 있는지 확인합니다.

laptop ---> nat ---> middleman <-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 명령 줄에 있어야하는지 추측하고 있습니다. 설정과 관련하여 몇 가지 잠재적 인 문제를 볼 수 있지만 모든 것이 어떻게 작동하는지 파악할 수 없었습니다.

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


1
참고 : "여기" 또는 "this" 링크를 사용하지 마십시오 . 질문 제목 또는 링크하는 웹 페이지와 같이 링크에 의미있는 이름을 제공하십시오.
Marco

전에이 질문을하지 않았습니까? unix.stackexchange.com/questions/82255/…
slm

@ slm-내 질문에있는 링크 중 일부를 참조하십시오. 그들은 내 관련 질문 중 일부입니다. 나는 여전히 해결책을 찾으려고 노력하고 있으며 각 질문은 저에게 더 가까이 다가 가고 있습니다.
MountainX

이것은 엄청나게 복잡한 것처럼 보입니다. 방화벽에서 포트가 열려있는 동일한 네트워크의 컴퓨터에 SSH를 연결하여 Windows 8 컴퓨터의 원격 데스크톱을 사용합니다.
Tim

@Tim은 역방향 SSH 터널이며 desktopNAT 라우터 뒤에 있고 NAT 라우터 뒤에 있기 때문에 필요 laptop합니다.
MountainX

답변:


3

당신은 nc를하지 않고 두 번째 단계를 수행 할 수 있습니까? 즉, -L과 -R만으로 VNC를 수행하십시오. 문제는 netcat 세션이 이미 열린 세션에 다시 연결되어 있다는 것입니다. 따라서 VNC 작업을 수행 할 때는 netcat을 사용하지 마십시오.


1

ProxyCommand 대신 중개인 sshd.conf에 대해 "gatewayports yes"를 설정해야합니다.

  1. 그런 다음 원격 터널을 데스크탑에서 중개인으로 가져 가서 중개인에서 tcp 포트 x를 열고 로컬에서 vnc를여십시오.
  2. 그런 다음 랩톱에서 중개인으로 로컬 터널을 가져 와서 로컬 호스트로 vnc 포트를 열고 x로 터널링하십시오.
  3. 그런 다음 localhost : vnc에 연결하면 로컬 터널을 통해 중개인으로, 원격 터널은 랩탑 vnc로 이동합니다.

작동시킨 후보다 안전한 게이트웨이 포트 설정에 대해 자세히 알아보십시오.

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