2012-01-10 4 views
14

現在、すべての着信接続を拒否するファイアウォールの背後にあるサーバーに対してSSHを実行する方法を試しています。サーバーはSSHできるので、ワークステーションにSSHトンネルを作成するためにファイアウォールの背後にサーバーを置く方法があるのだろうかと疑問に思っています。ファイアウォールの背後にあるサーバーへのSSH

私はトンネリング/逆トンネリングを調べましたが、これらはポート転送ソリューションと思われます。これは、ファイアウォールがすべてのポートのすべての接続を拒否するため動作しません。

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

私は何とか既存のトンネルにバインドすることができます:

理想的には、私の代わりのような新しい接続を開くのように、(ネット:: SSHの宝石を使用して)Rubyでこれを実行したいと思います。

ありがとうございます!

答えて

25

サーバーを制御できる場合は、これはかなり簡単です。私は、コマンドラインバージョンをあげると、あなたが好きなフレームワークにそれを働かせることができる:サーバーは、「R」エモートの端にリスニングを開始し、最初のクライアントへの接続を確立

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

client$ ssh -p 9091 localhost 

(すなわちクライアント)をポート9091(私が作ったもの)に置き換えて、それらの接続をlocalhost:22に転送します。すなわち、それ自体のsshサーバに転送します。

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

これは通常、あなたの公開鍵チェックに大混乱をもたらすだろう(そして付着保障!)、クライアントのsshクライアントがlocalhost:9091server:22と同じであることを知らないから。クライアントがパテであれば、資格情報を正しく検索できるように、「実際の」サーバー名をどこかに指定するオプションがあります。

+0

ローカルホストの数字にワイルドカードを付ける方法はありますか?私のIPアドレスが変わり、いつもサーバにsshできるようにしたい。私はすでにDNSリゾルバを設定しています – MichaelH

+0

@MichaelH:わかりません。ピアのIPアドレスが変更された場合、TCP接続を維持することはできません... –

+0

これを介してhttpをトンネルできますか? – Will

0

最初に接続しようとしているホストからトンネルを作成して(維持しない限り)、そのトンネルを介して接続することはできません。これがファイアウォールのポイントです。ネットワークへの不正アクセスを防止します。

しかし、ファイアウォールは、トンネルをどのように管理するかによって異なりますが、トンネルをブロックしてはいけません。 ssh's tunneling featuresを使用して設定されたポート転送トンネルは、ファイアウォールを破壊します。ただし、リモートネットワークの管理者に問題が発生する可能性もあります。

最終的には、ファイアウォールルールを緩和してトンネリングする必要がないか、少なくともトンネルの許可を得るためには、ネットワーク管理者に相談する必要があります。

関連する問題