(PECL ssh2 >= 1.4.0)
ssh2_auth_pubkey — Authenticate using a public key in a variable
$session,$username,$pubkey,$privkey,$passphrase = ?Authenticate using a public key in a variable.
sessionusernamepubkeyssh-rsa AAAAB3NzaC1yc2EAAA....NX6sqSnHA8= rsa-key-20121110
privkey-----BEGIN RSA PRIVATE KEY-----
passphraseprivkey is encrypted (which it should
be), the passphrase must be provided.
Example #1 Authentication using a public key
<?php
$connection = ssh2_connect('shell.example.com', 22, array('hostkey'=>'ssh-rsa'));
$publicKey = file_get_contents('/home/username/.ssh/id_rsa.pub');
$privateKey = file_get_contents('/home/username/.ssh/id_rsa');
if (ssh2_auth_pubkey($connection, 'username',
$publicKey,
$privateKey, 'secret')) {
echo "Public Key Authentication Successful\n";
} else {
die('Public Key Authentication Failed');
}
?>Nota: The underlying libssh library doesn't support partial auths very cleanly. That is, if you need to supply both a public key and a password it will appear as if this function has failed. In this particular case a failure from this call may just mean that auth hasn't been completed yet. You would need to ignore this failure and continue on and call ssh2_auth_password() in order to complete authentication.