VNCのポートをここの家にルーティングするつもりです。 1台のホストを飛び越えて、実際の作業マシンに移動する必要があります。
sittinghere
は私のローカルホームマシンになりますhopper
は、必要な中間ホップによってoverthere
はリモート作業マシンになりますこれを実行して、自分の作業マシンにSSHで接続することができます。
ssh -t hopper "ssh -t overthere"
ポート転送を使用して、overthere
のリモートポート5900をsittinghere
のローカルポート5900に転送したいのですが。ただし、hopper
のポートに公開でバインドせずにそれを実行できるようにしたいのですが、そのマシン上の誰もが私のVNC接続に接続できるためです。
hopper
で誰もアクセスできないようにして、そのポートをローカルマシンに安全に転送する方法はありますか?
これを実現するために、SSH ~/.ssh/config
ハックを使用することになりました。
Host hopper
User naftuli
ForwardAgent yes
Host overthere
User naftuli
ForwardAgent yes
ProxyCommand ssh -q hopper nc overthere 22
これは、sittinghere
からssh overthere
に接続しようとすると、hopper
に接続し、overthere
のポート22へのSSH接続をプロキシすることです(つまり、overthere
のSSH)。
これにはいくつかの素晴らしい副作用があります:
ssh -L 5900:localhost:5900 overthere "x11vnc -display :0 -localhost"
すべてが素晴らしく機能し、私の知る限り、5900はhopper
で開かれず、overthere
からsittinghere
に直接転送されるだけです。
SSHのネイティブ機能を使用してポートを転送します。 sittinghere
から実行:
ssh -v -N -L 5900:overthere:5900 user@hopper
VNCクライアントにlocalhost:5900
を指定すると、hopper
で確立されたSSH接続を介してトラフィックがoverthere:5900
にトンネリングされます
sittinghere
からoverthere
のSSHポートにhopper
を介してポートを転送できます。次に、そのポートを使用して、overthere
からsittinghere
に直接到達できます。この2番目のSSHセッションでは、hopper
が暗号化されたSSHセッションのみを認識している間、VNCまたは他の任意のポートを転送できます。
最初のSSHセッション:
ssh -f -N -L 7022:overthere:22 hopper
この構成をoverthere
の~/.ssh/config
に追加して、SSHクライアントにsittinghere
に到達する方法を伝えます。
Host overthere
HostName hopper
Port 7022
HostKeyAlias overthere
2番目のSSHセッション:
ssh -f -N -L 5900:localhost:5900 overthere
または、VNCポートトンネルを使用しない通常のインタラクティブなSSHセッション:
ssh overthere
~/.ssh/config
に行を追加したくない場合でも、コマンドラインからoverthere
に接続する方法を伝えることができます。
ssh -p 7022 hopper
...しかしHostKeyAlias
がないと、SSHはoverthere
のキーフィンガープリントを正しく検証しません。
すべてのコマンドラインはsittinghere
から実行されます。
ちなみに、おそらくssh
の-t
オプションを使用する必要はないと思います。
まず、作業員と自宅のPCの間にトンネルを作りながらホッパーを接続します。
ssh -f ismail@hopper -L 2222:overthere:22 -N
次に、vncトンネルでssh roを上書きします
ssh -p 2222 -f ismail@localhost -L 5900:localhost:5900
これでvncに接続できます。ちなみにローカルホストをリッスンするようにvncの設定を変更してください
コマンドラインからVNCクライアントvncviewer
を使用している場合は、-via
スイッチを使用して、他のホストのVNCサーバーに接続する前にuser@Host
をトンネリングするように指示できます。
$ vncviewer -via user@Host localhost:0
vinagre
を使用して、GUI経由でSSHトンネル経由で接続することもできます。これを行うには、vinagre
の接続ダイアログを使用して、次のように接続を設定します。
これにより、接続が確立され、SSHトンネルホストを介してトンネリングされます。
次のコマンドも完全に機能するはずです
ssh -f -N -J hopper overthere -L 5900:localhost:5900
カスタマイズされたポート(postgres-server
スイッチ)で-p
上のPostgreSQLサーバーに接続するための追加のパラメーターと、カスタマイズされたユーザー名を使用してテストされました。
ssh -f -N -J user1@jumphost -p 2222 user2@postgres-server -L 5432:localhost:5432
ご覧のとおり、ソリューションはシンプルで、sshの構成変更や中間ステップは必要ありません。