質問

私は現在、すべての着信接続を拒否するファイアウォールの背後にあるサーバーにSSHを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」エモートエンド(つまりクライアント)でリスニングを開始し、それらの接続をに転送します。 localhost:22, 、つまり、それ自体のSSHサーバーに。

クライアントは、サーバーのSSHサーバーに透過的に転送される独自のローカルポート9091に接続する必要があります。

これは通常、クライアントのSSHクライアントがそれを知らないため、通常の公開キーのチェック(およびアドヘントセキュリティ!)に大混乱をもたらします。 localhost:9091 と同じです server:22. 。クライアントがパテの場合、資格情報を適切に調べることができるように、「実際の」サーバー名をどこかに提供するオプションがあります。

他のヒント

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

ただし、ファイアウォールはトンネルをブロックしてはなりませんが、トンネルの管理方法は正確に異なります。使用してセットアップされたポートフォードトンネル SSHのトンネル機能 ファイアウォールを覆します。ただし、リモートネットワークの管理者とのトラブルにもかかる場合があります。

そのため、最終的には、トンネルを必要とせずにファイアウォールルールをリラックスさせるために、または少なくともトンネルを許可するために、ネットワーク管理者と話をする必要があります。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top