PHP SSH2 и Amazon EC2 .pem - PullRequest
       11

PHP SSH2 и Amazon EC2 .pem

1 голос
/ 09 августа 2011

Я искал способ использовать PHP SSH2 для создания своего рода терминала. Чтобы подключиться к Amazon в обычном терминале, вы должны использовать что-то вроде ssh -i path_to/key.pem ec2.ip-555-xxx.com. В PHP, с другой стороны, SSH2 имеет функцию ssh2_auth_pubkey_file . Но здесь мы натолкнулись на небольшую стену, поскольку Amazon предоставляет мне только 1 файл закрытого ключа (.pem), а функция имеет аргументы как для закрытого, так и для открытого ключей. В конечном итоге я хотел бы, чтобы клиент загружал файл .pem на сервер и мог подключаться к локальному или удаленному серверу SSH с PHP SSH2 на Amazon с помощью этого файла .pem.

Ответы [ 3 ]

1 голос
/ 11 августа 2011

Лично я бы порекомендовал phpseclib, чистую реализацию PHP SSH2 :

<?php
include('Net/SSH2.php');

$key = new Crypt_RSA();
//$key->setPassword('whatever');
$key->loadKey(file_get_contents('privatekey'));

$ssh = new Net_SSH2('www.domain.tld');
if (!$ssh->login('username', $key)) {
    exit('Login Failed');
}

echo $ssh->exec('ls -la');
?>
1 голос
/ 28 ноября 2011

Так вы получаете закрытый и открытый ключи из .pem в php

$eKey = file_get_contents('/pathto/key.pem');
$key_private = openssl_get_privatekey($eKey);
$keyDet=openssl_pkey_get_details($key_private);
$key_public = openssl_pkey_get_public(array($keyDet['key'],""));
$keyPDet=openssl_pkey_get_details($key_public);
1 голос
/ 09 августа 2011

.pem - это сертификат сервера для веб-сервера apache, он не имеет ничего общего с ssh. Смотри: https://serverfault.com/questions/9708/what-is-a-pem-file-and-how-does-it-differ-from-other-openssl-generated-key-file-f

Кажется, это также может быть комбинированный файл с открытым и закрытым ключами. В любом случае он не будет работать напрямую с ssh, вам нужно будет преобразовать его в обычные файлы.

В любом случае, он у вас задом наперед - амазонка не даст вам закрытый ключ, а наоборот - вы отдаете амазонке открытый ключ. Вы генерируете пару секретный / открытый ключ локально, а затем загружаете открытый ключ в файлы .ssh / authorize_keys.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...