web-dev-qa-db-ja.com

別のホスト経由でリモートホストにSSH接続する

リモートホストBにSSH接続しようとしていますが、ネットワークアクセス制御によって制御できるのは、ホストA経由のみです。どうすればよいですか。

ホストAへのトンネルを作成しようとしましたssh-f -N -D 2222 user @ hostA

その後、ローカルからトンネルポートを指定して新しいssh接続を作成し、それらの接続をトンネルしますが、これを機能させることができません。ssh -L 2222:hostB:22 hostA

関係するホスト:ローカルホストA(ローカルイントラネット)ホストB(インターネット)

トラフィックの流れ:ローカル> HostA> HostB

どんなポインタでもスーパーハンドになるでしょう。

2
0rangutang

このためにダイナミックポートフォワードを使用するという考えは機能しません。論理的に考えてみてください。ローカルマシンから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クライアントがあなたのためにすべての面倒を見てくれます。

5
EEAA