80

エイリアスを使用して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. 自宅だとMySQLのdbにアクセスできないのですdb.mycompany.comが、トンネルでもfooアクセスできるようにする方法を教えてください。db.mycompany.comssh

非常に簡単な言葉で説明できますか?これらの 3 つ以外に、実際に一般的な用途はありますか? ありがとう。

4

5 に答える 5

74

1) home から 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 プロキシを作成する最良の方法は、socks を使用することです。最初に接続する

ssh -D 8888 foo.company.com

次に、ブラウザの接続設定に移動してプロキシ接続を有効にし、socks4/5 とホスト: localhost、ポート 8888 を選択します。次にhttp://bar.mycompany.com、ブラウザのアドレス バーに入力するだけです。

3) ここで、ローカル ポート フォワード (-L) が必要になります。

ssh -L 3333:db.mycompany.com:3306 foo.mycompany.com

これは、自宅のコンピュータから に接続でき、接続が によって行われたかのようlocalhost:3333にすべてが に転送されることを意味します。ホスト db は接続しているクライアントとして foo を認識します。そのため、foo から作業するときと同じユーザー名とパスワードでログインする必要があります。db.mycompany.com:3306foo.mycompany.com

-g フラグを追加すると、ホーム ネットワークの他のコンピューターがコンピューター ポート 3333 に接続し、実際に db:3306 にアクセスできるようになります。

于 2011-03-12T10:46:30.903 に答える
7

SSH トンネリングは非常に単純です。一方の端でリッスン ソケットを開きます。誰かがそのリッスン ソケットに接続するたびに、もう一方の端から構成された場所への対応する接続​​を開き、SSH リンクを介して 2 つの間ですべての情報を双方向に転送します。

于 2011-03-12T09:20:38.963 に答える
-11

man ページ、特に -L、-R、および -D オプションを読んでください。誰かがこれを書き直し、おそらく間違いを導入することは役に立たないと思います。わからないことがあれば、もっと具体的な質問をすることもできます。

-D は、ssh トンネリングのもう 1 つの便利なアプリケーションである SOCKS プロキシを提供します。

于 2011-03-12T05:51:47.377 に答える