Esempio n. 1
0
 protected function getSSH()
 {
     $output = $this->runtimeTask->getOutput();
     $input = $this->runtimeTask->getInput();
     $ssh = new \Net_SSH2($this->node->getHostOrDefault(), $this->node->getPortOrDefault());
     // set up key
     $key = new \Crypt_RSA();
     if ($this->node->useAgent()) {
         // use ssh-agent
         if (class_exists('System_SSH_Agent', true) == false) {
             require_once 'System/SSH_Agent.php';
         }
         $key = new \System_SSH_Agent();
     } else {
         // use ssh key file
         if ($this->node->isUsedWithPassphrase()) {
             // use passphrase
             $key->setPassword($this->node->getPassphrase());
         }
         if (!$key->loadKey($this->node->getKeyContents())) {
             throw new \RuntimeException('Unable to load SSH key file: ' . $this->node->getKeyOrDefault());
         }
     }
     // login
     if (!$ssh->login($this->node->getUsernameOrDefault(), $key)) {
         $err = error_get_last();
         $emessage = isset($err['message']) ? $err['message'] : "";
         throw new \RuntimeException('Unable to login ' . $this->node->getName() . ". " . $emessage);
     }
     return $ssh;
 }