仲介サーバーを介してSSHを使用する方法

仲介サーバーを介してSSHを使用する方法

ssh3つのサーバーA、B、C. AからBへ、CからBへのパスワード(キー)がない場合は、中間サーバーBを介してAからCに接続する方法は?インタビュー中にこの質問に触れました。これを行う方法を知っている人はいますか?

答え1

あなたはサーバーAにいます:

ssh user@serverB ssh user@serverC 

または、プロキシコマンドを使用できます(詳細についてはここを参照してください)。プロキシとジャンプホスト) 次のようになります。

次のデータを使用して、以下の設定~/.sshファイルを作成します。server A

Host serverC
        HostName serverC
        User user
        ProxyCommand ssh -l user serverB -W %h:%p

その後、ユーザーはssh serverCviaを介して到達できます。serverAserverB

答え2

元の質問はあまり意味がありませんでした。しかし、私は彼らがプライベートネットワークのサーバーAとCに(お互いを「見る」ことができないように)要求し、Bは見ることができるようにしたいと思います。この場合、答えは次のようになります。リモートポート転送。たとえば、

CからB-> Cにトンネルを作成します。

C$ ssh -R 2222:localhost:22 B

次に、次のようにAからCに接続します。

A$ ssh A ssh -p 2222 localhost

または、よりエレガントな方法で使用してくださいssh_config。公開鍵認証が設定されていない場合は、サーバーC(Bのlocalhost:2222)に接続するためにパスワードを入力する必要がありますが、問題はありません。

答え3

@coffeMug最初の解決策を試しましたが、B-> Cのパスワードが少ない場合にのみ機能しませんか?私の例では、A-> BとC-> Bにパスワードがありません。but not B-> C.

おそらく、おそらくCはAを許可しますが、Aと直接通信することはできず、ネットワーク通信には中間サーバーBのみが必要な設定を持っています。これが本当なら。サーバーBのiptablesは、natテーブルを使用していくつかの操作を実行できます。

申し訳ありません。助けになろうとしています...だから試してみてください。他のすべてのケースでは、パスワードを求めることが唯一の可能性です。 sshを使用するにはパスワードなしでB-> Cが必要なためです。

関連情報