|
php.net | support | documentation | report a bug | advanced search | search howto | statistics | random bug | login |
[2010-09-09 16:20 UTC] ron at roncemer dot com
Description: ------------ Every other ssh client I've ever dealt with, only requires the private key to authenticate to a remote server with ssh2. Have a look at the ganymed Java SSH2 library, class name ch.ethz.ssh2.Connection, function signature "boolean authenticateWithPublicKey(java.lang.String user, java.io.File pemFile, java.lang.String password)". All that is needed is the private-key pem file in order to authenticate. I've been using this library for years in Java, and it works great. What is the reason for requiring both the public and private keys for authenticating, when in reality only the private key is required? The public key should be easily extracted from private key, and should be handled silently by PHP. Also, have a look at ganymed Connection class, function signature "boolean authenticateWithPublicKey(java.lang.String user, char[] pemPrivateKey, java.lang.String password)". This provides a way to pass in the private key as an array of char. In PHP, this would be really useful. You could store your private keys in a secured database and use it for all kinds of server authentication, automatic deployment, log file collection, automation. The absence of this functionality in PHP actually presents a security risk, because to get it to work, you'd actually have to write your private key to a temp file, then delete the temp file when done. Not as secure as reading it from a string which came from a secure database. PatchesPull RequestsHistoryAllCommentsChangesGit/SVN commits
|
|||||||||||||||||||||||||||||||||||||
Copyright © 2001-2025 The PHP GroupAll rights reserved. |
Last updated: Mon Oct 27 04:00:02 2025 UTC |
That'll be a much needed improvement! In the mean time, you can use phpseclib - a pure PHP SSH implementation - as a workaround. eg. <?php include('Net/SSH2.php'); include('Crypt/RSA.php'); $ssh = new Net_SSH2('www.domain.tld'); $key = new Crypt_RSA(); $key->loadKey(file_get_contents('privatekey')); if (!$ssh->login('username', $key)) { exit('Login Failed'); } echo $ssh->exec('pwd'); echo $ssh->exec('ls -la'); ?>