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; }