7
votes

Générer une paire de clés SSH PHP

Je veux générer SSH KeyPair de PHP peut-on quelqu'un s'il vous plaît guider s'il vous plaît comment faire? J'ai essayé le shell_exec mais le shell pose des questions afin que la commande ne fonctionne pas. Je souhaite spécifier le nom de fichier et le chemin dans lequel mettre les clés après génération.


0 commentaires

5 Réponses :



12
votes

1 commentaires

Cela a parfaitement fonctionné. J'ai augmenté le privé_key_bits à 4096 cependant.



11
votes

J'utiliserais Phpseclib, une implémentation pure PHP RSA :

ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAAAgQCqGKukO1De7zhZj6+H0qtjTkVxwTCpvKe4eCZ0FPqri0cb2JZfXJ/DgYSF6vUpwmJG8wVQZKjeGcjDOL5UlsuusFncCzWBQ7RKNUSesmQRMSGkVb1/3j+skZ6UtW+5u09lHNsj6tQ51s1SPrCBkedbNf0Tp0GbMJDyR4e9T04ZZw== phpseclib-generated-key

-----BEGIN RSA PRIVATE KEY-----
MIICXAIBAAKBgQCqGKukO1De7zhZj6+H0qtjTkVxwTCpvKe4eCZ0FPqri0cb2JZfXJ/DgYSF6vUp
wmJG8wVQZKjeGcjDOL5UlsuusFncCzWBQ7RKNUSesmQRMSGkVb1/3j+skZ6UtW+5u09lHNsj6tQ5
1s1SPrCBkedbNf0Tp0GbMJDyR4e9T04ZZwIDAQABAoGAFijko56+qGyN8M0RVyaRAXz++xTqHBLh
3tx4VgMtrQ+WEgCjhoTwo23KMBAuJGSYnRmoBZM3lMfTKevIkAidPExvYCdm5dYq3XToLkkLv5L2
pIIVOFMDG+KESnAFV7l2c+cnzRMW0+b6f8mR1CJzZuxVLL6Q02fvLi55/mbSYxECQQDeAw6fiIQX
GukBI4eMZZt4nscy2o12KyYner3VpoeE+Np2q+Z3pvAMd/aNzQ/W9WaI+NRfcxUJrmfPwIGm63il
AkEAxCL5HQb2bQr4ByorcMWm/hEP2MZzROV73yF41hPsRC9m66KrheO9HPTJuo3/9s5p+sqGxOlF
L0NDt4SkosjgGwJAFklyR1uZ/wPJjj611cdBcztlPdqoxssQGnh85BzCj/u3WqBpE2vjvyyvyI5k
X6zk7S0ljKtt2jny2+00VsBerQJBAJGC1Mg5Oydo5NwD6BiROrPxGo2bpTbu/fhrT8ebHkTz2epl
U9VQQSQzY1oZMVX8i1m5WUTLPz2yLJIBQVdXqhMCQBGoiuSoSjafUhV7i1cEGpb88h5NBYZzWXGZ
37sJ5QsW+sJyoNde3xH8vdXhzU7eT82D6X/scw9RZz+/6rCJ4p0=
-----END RSA PRIVATE KEY-----


0 commentaires

8
votes

Quelqu'un a-t-il essayé ceci? XXX

C'est fonctionné pour moi


1 commentaires

Excellent, cela a fonctionné pour moi pour surmonter le "Entrer le fichier dans lequel enregistrer la clé de la clé", merci.



1
votes

Ce code utilise uniquement php openssl code > fonctions.

Il génère des touches dans un format PEM portable, approprié pour une utilisation avec la plupart des logiciels 3ème partie. P>

<?php

function generateRsaKeyPair(array $config = []): array
{
  $config = array_merge([
    'digest_alg' => 'sha512',
    'private_key_bits' => 2048,
    'private_key_type' => OPENSSL_KEYTYPE_RSA,
  ], $config);

  // Create the keypair
  $key = openssl_pkey_new($config);
  if (!$key) {
    throw new RuntimeException('Unable to generate RSA key pair');
  }

  // Get private key
  openssl_pkey_export($key, $private);
  if (!$private) {
    throw new RuntimeException('Unable to extract private key');
  }

  // Get public key
  $public = openssl_pkey_get_details($key)['key'] ?? null;
  if (!$public) {
    throw new RuntimeException('Unable to extract public key');
  }

  // Free key from memory
  openssl_pkey_free($key);

  // Return both keys
  return compact('public', 'private');
}


1 commentaires

J'essaie d'utiliser les fonctions OpenSSL intégrées pour générer un keyPair ED25519, mais il n'est pas pris en charge en ce moment ou?