リモートホストBにSSH接続しようとしていますが、ネットワークアクセス制御によって制御できるのは、ホストA経由のみです。どうすればよいですか。
ホストAへのトンネルを作成しようとしましたssh-f -N -D 2222 user @ hostA
その後、ローカルからトンネルポートを指定して新しいssh接続を作成し、それらの接続をトンネルしますが、これを機能させることができません。ssh -L 2222:hostB:22 hostA
関係するホスト:ローカルホストA(ローカルイントラネット)ホストB(インターネット)
トラフィックの流れ:ローカル> HostA> HostB
どんなポインタでもスーパーハンドになるでしょう。
このためにダイナミックポートフォワードを使用するという考えは機能しません。論理的に考えてみてください。ローカルマシンからhostAを経由してhostBのポート22に転送するローカルポートを開く必要があります。これを実現するには、いくつかの方法があります。まず、エレガントでない手動の方法:
まず、トンネルを設定します。
$ ssh -L2222:hostB:22 user@hostA
次に、hostBに接続します。
$ ssh -p 2222 user@localhost
推奨されるオプションは、sshクライアントのProxyCommand
ディレクティブを使用することです。これにより、これを自動化できます。このようなものを~/.ssh/config
に追加します。
Host hostB
Hostname hostB
ProxyCommand ssh user@hostA nc %h %p 2> /dev/null
これを行った後、これを行うことができます:
$ ssh hostB
...そしてsshクライアントがあなたのためにすべての面倒を見てくれます。