1. ホーム
  2. mysql

[解決済み] このsshトンネルを閉じるには?[閉じる]

2022-05-16 17:40:01

質問

この記事にあるように、sshトンネルを開きました。 Zend_Db: SSHトンネル経由でMySQLデータベースに接続する方法は?

しかし、今、私は実際に何をしたのかわかりません。このコマンドはサーバー上で何か影響を与えますか? そして、このトンネルをどのように閉じればよいのでしょうか?なぜなら、今、私はローカルのmysqlを正しく使うことができないからです。

私は OSX Lion を使用しており、サーバーは Ubuntu 11.10 で動作しています。

どのように解決するのですか?

このコマンドを実行したと仮定します。 ssh -f [email protected] -L 3306:mysql-server.com:3306 -N を、リンク先の投稿にあるように実行しました。

コマンドの内訳です。

  1. ssh : かなり自明です。呼び出される ssh .
  2. -f : (以下より man ssh のページ)

    コマンドを実行する直前にバックグラウンドに移行するよう ssh に要求します。 これは、ssh がパスワードやパスフレーズを要求する場合に便利です。 パスワードやパスフレーズを要求されるが、ユーザはバックグラウンドで実行させたい場合に有効です。

    基本的には ssh をバックグラウンドに送ることで、接続を確立するためにパスワードを入力すると、シェルプロンプトを localhost にログインするのではなく remote-host .

  3. [email protected] : ログインしたいリモートサーバーを指定します。
  4. -L 3306:mysql-server.com:3306 : ここが面白いところです。 -L (から)。 man ssh のページ)。

    [bind_address:]ポート:ホスト:ホストポート ローカル (クライアント) ホスト上の与えられたポートを、リモート側の与えられたホストとポートに転送することを指定します。 リモート側の指定されたホストとポートに転送することを指定します。

    では -L 3306:mysql-server.com:3306 ローカル ポート 3306 から リモートポート 3306 ホスト上 mysql-server.com .

    に接続すると ローカル ポート 3306 に転送され、接続はセキュアなチャネルを介して mysql-server.com . このとき リモートホスト , mysql-server.com に接続し mysql-server.com ポートに 3306 .

  5. -N : コマンドを実行しない。これは、"just forwarding ports" (manページの引用)に便利です。

このコマンドはサーバー上で何か影響を与えますか?

はい、このコマンドは ローカルホスト mysql-server.com ポート上で 3306 .

このトンネルを閉じるには...

もし、あなたが -f を使ったことがあるなら、その ssh プロセスはバックグラウンドに向かいます。これを閉じるには、よりよい方法として ps aux | grep 3306 を実行し pidssh -f ... -L 3306:mysql-server.com:3306 -N であり、かつ kill <pid> . (あるいは kill -9 <pid> であったかは忘れました。 kill が動作するかは忘れました)。これには、以下のような美しい利点があります。 ではなく を殺すことで、他のすべての ssh 複数の接続がある場合、それらを再確立するのは少し......苦痛です。

... なぜなら、今私はローカルの MySQL を適切に使用することができないからです。

これは、あなたが効果的に "capture" を行ったからです。 ローカル mysql プロセスに接続しようとするトラフィックは、すべて リモート mysql のプロセスで使用されます。A より良い という解決策になります。 ローカルポート 3306 を使用しない をポートフォワードで使用しない。33060のような、使われていないものを使ってください。(高い番号は一般にあまり使われません。quot;2525->25" "8080->80" "33060->3306" のような組み合わせをポートフォワードすることがかなり一般的になっています。覚えるのが少し楽になります)。

ということは、もしあなたが ssh -f [email protected] -L 33060:mysql-server.com:3306 -N を使用した場合、Zend の connect-to-mysql 関数に対して localhost ポートに 33060 に接続します。 mysql-server.com に接続します。 3306 . への接続はまだ可能です。 localhost への接続は可能です。 3306 を使用するため、ローカルの mysql サーバを使用することができます。