Collegati a un database mysql tramite SSH tramite PHP

Ho già scritto un file php che si collega al database mysql localmente. Ora, voglio connettermi a un database remoto tramite SSH. Attualmente la function di connessione per il mio database è la seguente in PHP:

$this->db = new mysqli(_SERVR_URL, _SERVR_USER , _SERVR_PASS, _SERVR_DB); if ($this->db->connect_errno) { echo "Failed to connect to MySQL: (" . $this->db->connect_errno . ") " . $this->db->connect_error; } else{ //echo "Successfully connected!! <BR><BR>"; } 

Voglio solo cambiare la function di connessione (sopra) in modo che il resto del codice funzioni ancora. Ho installato correttamente il phpseclib e non sono interessato ad installare le estensioni ssh di php perché non funzionavano dopo quasi 5 ore di lavoro. Il phpseclib funziona, e penso che questo perché quando lo uso lo richiede non muore.

Tuttavia, quando provo a iniziare a lavorare con la roba ssh, viene generato un errore del server:

 $ssh = new Net_SSH1(myURL); 

Il modo in cui io di solito SSH nel mio server è con un file .pem. Posso avere qualche consiglio su:

  1. Perché il codice corrente potrebbe generare un errore?
  2. Se questo è ansible.
  3. Come scriveresti il ​​codice di connessione con il file .pem.

Penso che tu non abbia fortuna con questo. Puoi usare l'estensione ssh nel tuo codice PHP, o se hai accesso al server, potresti provare a creare un tunnel ssh sulla row di command.

Probabilmente hai bisogno di permessi speciali per farlo, però. Sembra anche che tu non abbia accesso SSH a questo account di hosting.

duplicato risposto da @jpm

Impostazione del tunneling pubblicato da @ Ólafur Waage su Connetti a un server MySQL su SSH in PHP

E questo per il tunneling di @Sosy

 shell_exec(“ssh -f -L 3307:127.0.0.1:3306 [email protected] sleep 60 >> logfile”); $db = mysqli_connect('127.0.0.1′, 'sqluser', 'sqlpassword', 'rjmadmin', 3307); 

L'estensione mysql attualmente non support questo. Modificare l'estensione, di per sé, potrebbe non essere così difficile, ma a quel punto dovrebbe essere un'estensione PECL personalizzata, nel migliore dei casi. L'idea è stata discussa sulla mailing list di PHP Internals qualche tempo fa:

http://comments.gmane.org/gmane.comp.php.devel/79520