ssh
3つのサーバー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 serverC
viaを介して到達できます。serverA
serverB
答え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が必要なためです。