ssh
トンネルまたはリバーストンネルを行うためにエイリアスを使用していますが、どのように機能するのか理解できません。誰かがそれを非常に簡単な方法で説明する方法を知っていますか?
3つの主な用途は次のとおりです。
まず、ホームコンピューターを使用して、パスワードを使用せずにfoo.mycompany.com
にsshできます(foo
は職場のサーバーです)
1)foo.mycompany.com:8080
を自宅のコンピューターのlocalhost:3000
に移動する方法
2)自宅でhttp://bar.mycompany.com
にアクセスできないが、foo
はbar
にアクセスできる場合、ホームコンピューターがhttp://bar.mycompany.com
にアクセスできるようにする方法は?
3)自宅では、db.mycompany.com
でMySQL dbにアクセスできないが、foo
は、ssh
トンネルを使用してdb.mycompany.com
にアクセスできるようにする方法はできます。
非常に簡単な言葉で説明できますか?これら3つ以外にも、実際に他の一般的な用途はありますか?ありがとう。
1)自宅からfooに接続すると仮定すると、リバーストンネルが必要です(-R)
ssh -R 8080:localhost:3000 foo.mycompany.com
これにより、fooで実行されているプロセスがlocalhost:8080
に接続し、実際にポート3000で自宅のコンピューターと通信できるようになります。職場の他のコンピューターをfoo:8080に接続してポートで自宅のコンピューターにアクセスできるようにする場合3000、あなたが必要
ssh -R 0.0.0.0:8080:localhost:3000 foo.mycompany.com
ただし、これを機能させるには、fooのsshd_configにもこのオプションが必要です。
GatewayPorts yes
2)sshでhttpプロキシを作成する最良の方法は、靴下を使用することです。最初に接続する
ssh -D 8888 foo.company.com
次に、ブラウザ接続設定に移動してプロキシ接続を有効にし、socks4/5およびHost:localhost、ポート8888を選択します。次に、ブラウザのアドレスバーにhttp://bar.mycompany.com
と入力します。
3)ローカルポート転送(-L)が必要になりました。
ssh -L 3333:db.mycompany.com:3306 foo.mycompany.com
つまり、自宅のコンピューターからlocalhost:3333
で接続でき、すべてがdb.mycompany.com:3306
によって接続されたかのように、すべてがfoo.mycompany.com
に転送されます。ホストdbは接続しているクライアントとしてfooを見るため、fooから作業するときに使用するのと同じユーザー名とパスワードでログインする必要があります。
-gフラグを追加すると、ホームネットワークから他のコンピューターがコンピューターポート3333に接続し、実際にdb:3306にアクセスできるようになります。
SSHトンネリングは非常に簡単です。一方の端で待機ソケットを開きます。誰かがそのリッスンソケットに接続すると、相手側から構成済みの場所への対応する接続が開かれ、SSHリンクを介して2つの間ですべての情報が双方向に転送されます。
かなり古い質問ですが、このページで説明してくれるかどうかを確認してください。 :)
https://www.ssh.com/ssh/tunneling/
基本的に、SSHトンネルは、ある場所から別の場所に暗号化されたデータを渡す(トンネル)ために使用できるトンネルです。
また、一般的にトラフィックを(トンネル経由、ワームホールを経由して)他の場所にルーティングするために使用され、ファイアウォールを通過するトンネリングやトラフィックのリダイレクト(暗号化されたポート転送)などを可能にします。
あなたとあなたのサーバーの間にファイアウォールがあるとしましょう。サーバーは、内部ネットワーク上の別のサーバー(server2)にアクセスできます。
[client]--------||------[server]----[sever2]
server2でWebサーバーにアクセスしたいとしますが、明らかな理由でこれを直接行うことはできません。ファイアウォールでポート22(ssh)が開いているとしましょう。ですから、serverからserver2へのSSHトンネル(on server)を作成します。これは、ポート22の(発信?)トラフィックが、このトンネルを介してserver:22-> server2:8から送信されることを意味します。
[client]--------||------[server:22]======[sever2:80]
したがって、(私が理解しているように)server:22に接続する場合、この新しいSSHトンネルを使用して、ポート22のトラフィックをserver2:80
のWebサーバーにリダイレクトする必要があります。 (私が理解している限り、データはトンネル内でのみ暗号化されているため、server:80をSSLにする必要があるかどうか疑問に思う場合は、データの暗号化が解除されます)。
ある意味では、SSHを使用すること自体が、古いtelnet
通信用のSSHトンネルであると思います。ほとんどの場合、SSHトンネリングについて耳にするのは、多くのハッカーが使用する気の利いた小さな機能であるファイアウォール管理者にアクセスすることなく、人々が提供する(安全な)ポート転送機能を参照しているということですセキュリティを回避します。
より正当な理由で。ファイアウォールなどで制限されている場合、または2つのマシン間のトラフィックを保護したい場合(SSHプログラムのように)、特定のトラフィックを異なるポートで動作する内部サーバーに中継するのに最適な方法です。
お役に立てれば。
[〜#〜] edit [〜#〜]
UNIXでこれを見つけましたSO https://unix.stackexchange.com/questions/46235/how-does-reverse-ssh-tunneling-work 、lotsあなたが必要なものの非常に明確な(そして絵による)説明付きの答えの!
まず、SSHについて説明します。
[〜#〜] ssh [〜#〜]は、暗号化された接続を使用してリモートマシンを接続するのに役立つリモートログインシェルです。したがって、リモートホストへのssh接続を確立すると、ホスト間の接続は安全で暗号化されます。
SSHトンネリングは、SSHセキュア接続を介してトラフィックをルーティングします。
簡単な言葉で言うと、SSHトンネリングは、1つの接続が別の接続によってカプセル化されているだけです。これを利点として、SSHクライアントを使用してトンネルを作成します。
次のコマンドは、簡単なソックスプロキシを作成するのに役立ちます
ssh -D 8080 user@sshserverip