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. P>
5 Réponses :
Vérifiez le manuel de ssh-keygen code> pour savoir comment l'exécuter sans aucune invite. p>
Il semble que l'option -q est-elle silencieuse le SSH-KeyGen, mais comment puis-je spécifier le nom de fichier et le répertoire ??
Du lien fourni par Thiefmaster: "SSH-Keygen -C [-P PassPhrase] [-C Commentaire] [-F KeyFile]" ou utilisez proc_open () pour gérer les E / S interactifs
Vous avez travaillé ... avec cette commande ssh-keygen -f / chemin / à / vers / fichier -n ''
Ceci est basé sur Conversion d'une openssl Clé publique RSA générée au format OpenSSH (PHP) . Merci Shevron .
Cela a parfaitement fonctionné. J'ai augmenté le privé_key_bits à 4096 cependant.
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-----
Quelqu'un a-t-il essayé ceci? C'est fonctionné pour moi p> p>
Excellent, cela a fonctionné pour moi pour surmonter le "Entrer le fichier dans lequel enregistrer la clé de la clé", merci.
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'); }
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?