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.