SSHによるSSHトンネルの設定

SSHによるSSHトンネルの設定

LinuxデスクトップのVirtualBoxでWindows 10仮想マシンが実行される状況が発生しました。この仮想マシン(現在はこの仮想マシンのみ)は、リモートオフィスのVPNトンネルを確立できます。

私は現在、小さなラズベリーパイを持っています。現在、ローカルネットワークにあり、LinuxデスクトップからSSHに定期的に接続し、SSHに接続すると、PiからLinuxデスクトップGitリポジトリに戻すこともできます。私のWindowsコンピュータでgit bashを使ってsshでpiに接続することもできます。

これは、Linuxとpiの両方がsshdを実行しますが、Windowsはそうではありません。

まもなくこのリモートオフィスにpiを移動する予定で、この場所とLinuxデスクトップでpiとsshを送受信できる環境を設定したいと思います。

だから私の考えは、Windowsクライアントを使用してSSHトンネルを確立することです。実験的にはまだ私のWindowsコンピュータのローカル環境にあります。

ssh -L 9001:pi:22 pi@pi(この例では、piはpiのローカルユーザーでもあります。)私はこれがポート9001からpiのsshdサーバーにトラフィックを転送すると仮定します。

その後、Linuxデスクトップではssh -l pi -p 9001 winpiにSSHでアクセスできると期待しています。

しかし、ちょうど止まっています。

私は何が間違っていましたか?

答え1

Windowsボックスで正常にssh -l pi -p 9001 win実行できますか?試してみてはどうですかssh -l pi -p 9001 127.0.0.1

後者を実行できますが、Linuxシステムでは同じことができない場合は、ポート9001でローカルにのみリッスンしていることが問題かもしれません。 sshのマニュアルページ、特に-L [bind_address:]port:host:hostport公開側でポート9001をリッスンするには、次のようにトンネルを設定できますssh -L *:9001:pi:22 pi@pi

答え2

私が正しく理解したら、ホストBで実行されているSSHデーモンを介してホストAからホストCにSSHをしたいですか?

.ssh/configこれは、ホストAのファイルで少しトリックを使用して行うことができます。

Host hostc
   HostName hostb
   ProxyCommand ssh username@hostc nc %h %p 2>/dev/null

.ssh/configホストAでこのスタンザを使用すると、ssh hostcホストBから接続をプロキシできます。

ホストAがWindowsシステムの場合、cygwinのopenSSHクライアントはこれを実行できます。 PuTTYなどでこれを複製する方法はわかりません。

関連情報