簡體   English   中英

PHP SSH2和Amazon EC2 .pem

[英]PHP SSH2 and Amazon EC2 .pem's

我一直在尋找一種使用PHP的SSH2創建終端的方法。 要在普通終端中連接到Amazon,您可以使用ssh -i path_to/key.pem ec2.ip-555-xxx.com 另一方面,在PHP中,SSH2具有功能ssh2_auth_pubkey_file 但是這里有些麻煩,因為Amazon僅向我提供了1個私鑰(.pem)文件,並且該函數同時具有私鑰和公鑰的參數。 最終,我希望客戶端將.pem文件上傳到服務器,並能夠使用該.pem文件通過Amazon上的PHP SSH2連接到本地或遠程SSH服務器。

.pem是apache Web服務器的服務器證書,與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文件中。

就個人而言,我建議使用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');
?>

這是您從php中的.pem獲取私鑰和​​公鑰的方法

$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);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM