Um eine SSH Verbindung mit PHP zu erstellen, gibt es mehrere Möglichkeiten:
Die saubere Lösung: Verbinden mit PHP-SSH2
Dazu muss die das Package php-ssh2 installiert werden, siehe php.net.
$connection = ssh2_connect($host, $port); if(ssh2_auth_password($connection, $user, $password)){ $stream = ssh2_exec($connection, $command); stream_set_blocking($stream, false); $stream_out = ssh2_fetch_stream($stream, SSH2_STREAM_STDIO); $result = stream_get_contents($stream_out); }
Quick and dirty: Verbinden mit exec()
Einfach über die Console des Betriebsystems (sshpass sollte installiert werden, damit das Passwort mitangegeben werden kann).
$command = 'sshpass -p "' . $password . '" ssh -p '.$port.' ' . $user. '@'. $host. ' "' . $sshCommand.'" '; $result = exec($command);
Fingerprint umgehen bei wechselnden Ports
$command = 'sshpass -p "' . $password . '" ssh -p '.$port.' -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no ' . $user. '@'. $host. ' "' . $sshCommand.'" '; $result = exec($command);
In dem Beispiel wird mittels der Parameter
-o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no
die Fingerprint-Validierung umgangen, was man im Livebetrieb nicht machen sollten, bzw. man sollte sich den Fingerprint vorher auf der Console der Servers besorgen und dann benötigt man diese Parameter nicht.