Как я могу использовать файлы pem в функциях php ssh2 - PullRequest
2 голосов
/ 27 сентября 2010

Мне нужно подключиться к некоторым экземплярам Amazon EC2 через функции php ssh2, чтобы получить некоторую информацию и отобразить ее в моем бэк-офисе.

Есть ли способ в функциях ssh2 сделать то же самое, что и я при подключении черезкомандная строка ssh?

ssh -i path_to_file/key.pem host01-ec2

Спасибо

Ответы [ 3 ]

2 голосов
/ 27 сентября 2010

Вы можете использовать phpseclib, чистую реализацию PHP SSH , чтобы сделать это достаточно легко:

<?php
include('Crypt/RSA.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('pwd');
echo $ssh->exec('ls -la');
?>

phpseclib поддерживает довольно много различных форматов ключей:

http://www.frostjedi.com/phpbb/viewtopic.php?f=46&t=15226

Тот факт, что для ssh2_auth_pubkey_file () требуется как открытый, так и закрытый ключ, глуп, поскольку в 99% случаев закрытый ключ содержит в себе открытый ключ.Но что угодно - это не то, что они спросили меня, лол.

2 голосов
/ 27 сентября 2010

Вы можете использовать openssl_pkey_get_public для извлечения закрытых / закрытых ключей, а затем использовать ssh2_auth_pubkey_file для авторизации.

1 голос
/ 28 ноября 2011

вот как вы можете получить открытый ключ из закрытого ключа

$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);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...