public function __toString() { $parts = ['ssh']; if ($this->privateKey) { $parts[] = '-i ' . $this->privateKey->getPrivateKeyFile(); } if (!is_null($this->jumpHost)) { if ($output = Registry::get('output')) { /* @var $output OutputInterface */ $output->writeln("[Using jump host: " . $this->jumpHost->getDefaultUsername() . '@' . $this->jumpHost->getPublicIpAddress() . "]"); } $proxyCommand = new Command($this->jumpHost->getSshConnection(), 'nc %h %p'); $parts[] = '-o ProxyCommand="' . $proxyCommand->__toString() . '"'; } if ($this->multiplex) { $connection = "~/mux_{$this->username}@{$this->host}:22"; self::$multiplexedConnections[$connection] = "{$connection} {$this->host}"; $parts[] = "-o ControlPersist=yes -o ControlMaster=auto -S {$connection}"; } $parts[] = '-o ConnectTimeout=5'; //$parts[] = '-o LogLevel=QUIET'; $parts[] = '-o StrictHostKeyChecking=no'; // $parts[] = '-t'; // Force pseudo-tty allocation. $parts[] = "{$this->username}@{$this->host}"; return implode(' ', $parts); }
public function getPrivateKey() { $keyName = $this->getKeyName(); if (empty($keyName)) { return null; // throw new \Exception('No KeyName found'); } return PrivateKey::get('keys/' . $keyName . '.pem'); }
protected function execute(InputInterface $input, OutputInterface $output) { $key = $input->getArgument('key'); $identity = new \AwsInspector\Ssh\Identity(\AwsInspector\Ssh\PrivateKey::get($key), true); $identity->loadIdentity(); }
/** * @test */ public function withPrivateKey() { $connection = new Connection('TestUsername', '1.2.3.4', PrivateKey::get(FIXTURE_ROOT . 'foo.pem')); $this->assertEquals('ssh -i ' . FIXTURE_ROOT . 'foo.pem -o ConnectTimeout=5 -o LogLevel=ERROR -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null TestUsername@1.2.3.4', $connection->__toString()); }