SSHトンネルを介してPHPでリモートMSSQLサーバーに接続する
ファイアウォールで保護されたMSSQLサーバーが、インターネット上のUbuntuサーバーにデータを提供したいと考えています。
そこで、MS SQLサーバーからUbuntuサーバーへのSSHトンネルを確立し、Ubuntuに port 1433
トラフィックをMSSQLのport 1433<に送信するように依頼します。 /code>。
this Stack Overflowの回答によると、MSSQLサーバーでこれを行う必要があると思います。
ssh -R 1433:localhost:1433 ubuntu.example.com
これはWindowsマシンなので、PuTTYでこれを行いました:
ローカルネットワークで、PHPを使用してSQLサーバーに接続することをテストしましたが、機能します。
$server = '192.168.0.12';
$user = 'buttle';
$pass = '1234';
mssql_connect($server,$user,$pass);
ここで、「直接」接続の代わりにSSHトンネルを使用して同じ2台のマシンを接続してみます。だから私は$serverをこれに変更します:
$server = 'localhost,1433';
次に、SQLServerマシンからUbuntuマシンへのSSHトンネルをPuTTyで接続します。そして、おそらくこれは私が何をしているのかわからないので、私が間違っているところです。
UbuntuマシンでこのPHPエラーが発生します:
Warning: mssql_connect(): Unable to connect to server: localhost,1433
編集:
これも試してみました:
そしてこれ:
[![MSSQLサーバーで指定されたIPアドレスを持つリモートIPv4][5]] [5]
最後に、私はそれを解決しました。私の答えを見てください。
答え :
解決策:
PHPのmssql
関数を使用するためのすべてのオンラインチュートリアルは、Windows環境でPHPを実行していることを前提としています。どうやら、WindowsではIPとポート番号はコンマで区切られていますが、Linuxではコロンで区切られています。
// Linux running PHP
$server = 'localhost:1433';
// Windows running PHP
$server = 'localhost,1433';
いつものように、何時間もの問題は1バイトに要約されます。
同様の質問
私たちのウェブサイトで同様の質問で答えを見つけてください。