ホームページ  >  記事  >  データベース  >  C# コードが SSH 経由でリモート MySQL データベースに接続できないのはなぜですか?また、それを修正するにはどうすればよいですか?

C# コードが SSH 経由でリモート MySQL データベースに接続できないのはなぜですか?また、それを修正するにはどうすればよいですか?

Patricia Arquette
Patricia Arquetteオリジナル
2024-10-30 02:42:28781ブラウズ

Why does my C# code fail to connect to a remote MySQL database via SSH, and how can I fix it?

SSH.NET ライブラリ経由で .NET から MySQL に接続

SSH 接続経由でリモート MySQL データベースにアクセスする Web アプリケーションを構築するには、 Renci.SshNet.dll や mysql-connector-net-6.9.7 などのライブラリ。この記事では、これらのライブラリを使用して MySQL に接続する際の課題を克服する方法について説明します。

問題:

提供された C# コードがリモート上の MySQL データベースからデータを取得できない

解決策:

問題は、MySQL 接続文字列のサーバーとポートの設定が正しく使用されていないことにあります。修正バージョンは次のとおりです:

<code class="csharp">MySqlConnectionStringBuilder connBuilder = new MySqlConnectionStringBuilder();
connBuilder.AllowBatch = true;
connBuilder.Server = "portal.RemoteServer.edu";
**// Change the Port to 22 (SSH connection port)**
connBuilder.Port = 22;
connBuilder.UserID = "LocalHostUserID";
connBuilder.Password = "LocalHostPassword";
connBuilder.Database = "DatabaseName";

// SSH connection details
var auth = new PasswordAuthenticationMethod("RemoteServerUsername", "RemoteServerPassword");
ConnectionInfo conInfo = new ConnectionInfo("portal.RemoteServer.edu", "RemoteServerUsername", auth);

using (SshClient client = new SshClient(conInfo))
{
    // ... (rest of the code remains the same)
}</code>

サーバーを SSH 接続アドレスに設定し、ポートを 22 に変更すると、SSH 経由で接続が確立され、後続のデータベース操作が成功します。

追加メモ:

修正されたコードでは、127.0.0.1 の 3306 (MySQL ポート) と 127.0.0.1:22 の間のポート転送に ForwardedPortLocal オブジェクトが使用されます。これにより、ローカル MySQL クライアントはポート 22 の SSH トンネル経由でリモート MySQL データベースに接続できるようになります。

提供されるソリューションは、MySQL サーバーがリモート ホストのポート 3306 でリッスンしていることを前提としています。 MySQL サーバーが別のポートでリッスンする場合は、それに応じてコードを必ず調整してください。

以上がC# コードが SSH 経由でリモート MySQL データベースに接続できないのはなぜですか?また、それを修正するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。