Due to a lack of complete examples, here's a simple SSH2 class for connecting to a server, authenticating with public key authentication, verifying the server's fingerprint, issuing commands and reading their STDOUT and properly disconnecting. Note: You may need to make sure you commands produce output so the response can be pulled. Some people suggest that the command is not executed until you pull the response back.
public functionconnect() {
if (!($this->connection=ssh2_connect($this->ssh_host,$this->ssh_port))) {
throw newException('Cannot connect to server');
}$fingerprint=ssh2_fingerprint($this->connection,SSH2_FINGERPRINT_MD5|SSH2_FINGERPRINT_HEX);
if (strcmp($this->ssh_server_fp,$fingerprint) !==0) {
throw newException('Unable to verify server identity!');
}
if (!ssh2_auth_pubkey_file($this->connection,$this->ssh_auth_user,$this->ssh_auth_pub,$this->ssh_auth_priv,$this->ssh_auth_pass)) {
throw newException('Autentication rejected by server');
}
}
public functionexec($cmd) {
if (!($stream=ssh2_exec($this->connection,$cmd))) {
throw newException('SSH command failed');
}stream_set_blocking($stream,true);$data="";
while ($buf=fread($stream,4096)) {$data.=$buf;
}fclose($stream);
return$data;
}
public functiondisconnect() {$this->exec('echo "EXITING" && exit;');$this->connection=null;
}
public function__destruct() {$this->disconnect();
}
}?>
[EDIT BY danbrown AT php DOT net: Contains two bugfixes suggested by 'AlainC' in user note #109185 (removed) on 26-JUN-2012.]