我試圖訪問只能在本地訪問的遠程MySQL數據庫(本地主機)。在PHP中通過SSH2的PDO?
我的代碼看起來是這樣的:
$connection = ssh2_connect('IP to Server', 22);
if (ssh2_auth_password($connection, 'User', 'Password')) {
echo "Authentication Successful!\n";
} else {
die('Authentication Failed...');
}
$tunnel = ssh2_tunnel($connection, '127.0.0.1', 3306);
try {
$this->_connection = new PDO($dsn, $config['login'], $config['password'], $flags);
$this->connected = true;
if (! empty($config['settings'])) {
foreach ($config['settings'] as $key => $value) {
$this->_execute("SET $key=$value");
}
}
} catch (PDOException $e) {
throw new MissingConnectionException(array(
'class' => get_class($this),
'message' => $e->getMessage()
));
}
劇本是成功的,直到$隧道。 PDO連接失敗並顯示「連接被拒絕」。我認爲PDO試圖連接到MAMP? $ dsn變量看起來像「mysql:host = 127.0.0.1; port = 3306; dbname = mydb」。
如何告訴MAMP,127.0.0.1在通過SSH連接的遠程服務器上?
謝謝!
謝謝 - 我認爲更穩定的解決方案將是SSL連接。 只是爲了解:SSH解決方案是否像我認爲的那樣安全?或者只是很多工作和超載? – mittererr
從安全的角度來看:如果您的代碼泄漏,那麼您的SSH登錄證書將被硬編碼到其中。即使您正在使用公鑰認證,這也不是您正在尋找的內容,您應該這樣做。從實際的角度來看:如果你想加密你的數據庫流量,這就是SSL的用處。 – wittyweasel