host = $host; } if ($port != '') { $this->port = $port; } if ($use_pubkey_file != '') { $this->use_pubkey_file = $use_pubkey_file; } $methods = []; if ($this->use_pubkey_file) { // $methods['hostkey'] = 'ssh-rsa'; $methods = array( 'hostkey'=>'ssh-rsa,ssh-dss', // 'kex' => 'diffie-hellman-group-exchange-sha256', 'client_to_server' => array( 'crypt' => 'aes256-ctr,aes192-ctr,aes128-ctr,aes256-cbc,aes192-cbc,aes128-cbc,3des-cbc,blowfish-cbc', 'comp' => 'none'), 'server_to_client' => array( 'crypt' => 'aes256-ctr,aes192-ctr,aes128-ctr,aes256-cbc,aes192-cbc,aes128-cbc,3des-cbc,blowfish-cbc', 'comp' => 'none')); } // $this->con = ssh2_connect($this->host, $this->port); $this->con = ssh2_connect($this->host, $this->port, $methods); if (!$this->con) { $this->log .= "Connection failed !"; } } public function authKey($pubkey_filePath, $privkey_file_filePath) { if ($pubkey_filePath == '') { return; } if ($privkey_file_filePath == '') { return; } $rc = ssh2_auth_pubkey_file($this->con, $this->user, $pubkey_filePath, $privkey_file_filePath); return; } public function authPassword($user = '', $password = '') { if ($user != '') { $this->user = $user; } if ($password != '') { $this->password = $password; } if (!ssh2_auth_password($this->con, $this->user, $this->password)) { $this->log .= "Authorization failed !"; } } public function openShell($shell_type = '') { if ($shell_type != '') { $this->shell_type = $shell_type; } $this->shell = ssh2_shell($this->con, $this->shell_type); if (!$this->shell) { $this->log .= " Shell connection failed !"; } stream_set_blocking($this->shell, true); } public function writeShell($command = '') { fwrite($this->shell, $command . "\n"); } public function cmdExec() { $argc = func_num_args(); $argv = func_get_args(); $cmd = ''; for ($i = 0; $i < $argc; $i++) { if ($i != ($argc - 1)) { $cmd .= $argv[$i] . " && "; } else { $cmd .= $argv[$i]; } } echo $cmd; $stream = ssh2_exec($this->con, $cmd); stream_set_blocking($stream, true); return stream_get_contents($stream); } public function getLog() { return $this->log; } public function getResult() { $contents = ''; while (!feof($this->shell)) { $contents .= fgets($this->shell); } return $contents; } }