web-dev-qa-db-ja.com

TeamViewerを置き換えるSSH逆トンネルを介したリモートデスクトップ

SSH(リバース)トンネルを介して、ラップトップからデスクトップへのリモートデスクトップセッションを開きたい。それは簡単なはずです(または少なくとも実行可能です)。これまでは、Team Viewerを使用してリモートデスクトップにログインしてきました。 Team Viewerなしで同様の結果を達成したいと思います。

SSHトンネルは次のようになります。

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

すべてのマシンでLinux(ほとんどはKubuntu 12.04またはOpenSuse 12.3)を実行しています。 NATルーターのポートを変更したり、構成を変更したりできません。

私のSSHトンネルについて説明します。これは、私の質問の中心であるVNC /リモートデスクトップの問題を解決するために必要であると思われる理解です。この脚について:

middleman<--nat<--desktop

...ここにそれが確立される方法があります:

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

この脚について:

laptop--->nat--->middleman

以下のようにしてMiddlemanに接続できます。

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

ただし、実際に必要なのは、仲介者ではなくデスクトップに直接接続することです。これを行うには、middlemanでnetcat( "nc")を使用します。 this に基づいて、ncが必要であるようです。そこで、ラップトップでSSH構成ファイルを編集して、ProxyCommandとncを使用します。

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」のようなものです

次に、1つのステップで「デスクトップ」に接続します。

me@laptop:~$ ssh family_desktops -p 1234

(これは、ヘルプ herehere と私が尋ねた他の関連する質問に基づいて機能しました。私はこのトピックについて取り組んでいるので、何週間も。)

このSSH接続を使用して、desktopというラベルの付いた自分のコンピューター上の完全に機能するシェルに到達します。完璧です。

これで、このSSHトンネルを介したVNCのような(またはTeamViewerのような)リモートデスクトップソリューションが必要になります。どうやって?

これが私がこれまでに試したことです:

middleman <-nat <-desktop

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

接続が確立されている場合:

x11vnc -autoport 5901 

ポート5901に接続していることを確認します。

ラップトップ---> nat --->ミドルマン<-nat <-desktop

ラップトップ〜/ .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つあります 該当します。

14
MountainX

Ncを実行せずに2番目のステップを試すことはできますか?つまり、-Lと-RだけでVNCを実行します。問題は、あなたのnetcatセッションがすでに開いているセッションに接続し直していることだと思います。したがって、VNCを行う場合はnetcatを使用しないでください。

3
prateek61

ProxyCommandの代わりに、ミドルマンsshd.confに「gatewayports yes」を設定する必要があります。

  1. 次に、リモートトンネルをデスクトップからミドルマンに移動し、ローカルのミドルマンとvncでTCPポートxを開きます。
  2. 次に、ローカルトンネルをラップトップからミドルマンに移動し、ローカルホストへのvncポートを開いてxにトンネルします。
  3. 次にlocalhost:vncに接続すると、ローカルトンネルを介してミドルマンに、リモートトンネルを介してラップトップのvncに接続されます。

動作させたら、ゲートウェイポートのより安全な設定について詳しく学びます。

1
Limalski