1. ホーム
  2. ssh

[解決済み] ファイアウォール内のサーバーにSSH接続する

2022-03-11 14:31:37

質問

私は現在、すべての着信接続を拒否するファイアウォールの背後にあるサーバーにSSH接続する方法を見つけ出そうとしています。サーバーはSSH接続が可能なので、ファイアウォールの向こうのサーバーから私のワークステーションにSSHトンネルを作り、私のワークステーションがそれを通してサーバーにコマンドを送り返すことができるようにする方法はないでしょうか?

トンネリングやリバーストンネリングを検討しましたが、これらはポートフォワーディングのソリューションのようで、ファイアウォールがすべてのポートでの接続を拒否するため、うまくいきません。

理想的には、これをRubyで(Net::SSH gemを使用して)行いたいのですが、その場合、新しい接続を開く代わりに、次のようにします。

Net::SSH.start('host', 'user', :password => "password")

どうにかして既存のトンネルにバインドすることができました。

ありがとうございます。

解決方法は?

サーバーをコントロールできれば、これはかなり簡単なことです。私はコマンドライン版を提供しますが、あなたはそれを好きなフレームワークに取り入れることができます。

server$ ssh -R 9091:localhost:22 client.example.egg

client$ ssh -p 9091 localhost

サーバは、まずクライアントとの接続を確立し、ポート9091(今作ったもの)で "R"emote 側(つまりクライアント)のリッスンを開始し、それらの接続を次のように転送します。 localhost:22 つまり、自分自身のsshサーバへ。

クライアントは、自分のローカルポート9091に接続するだけで、透過的にサーバーのsshサーバーに転送されます。

これは通常、公開鍵のチェック (および固定のセキュリティ!) に大打撃を与えることになります。 localhost:9091 と同じです。 server:22 . クライアントがPuttyの場合、資格情報を適切に検索できるように、"real"サーバ名をどこかに指定するオプションがあります。