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:
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: