ssh2_auth_pubkey_file Authenticate using a public key &reftitle.description; boolssh2_auth_pubkey_file resourcesession stringusername stringpubkeyfile stringprivkeyfile stringpassphrase Authenticate using a public key read from a file. &reftitle.parameters; session An SSH connection link identifier, obtained from a call to ssh2_connect. username pubkeyfile The public key file needs to be in OpenSSH's format. It should look something like: ssh-rsa AAAAB3NzaC1yc2EAAA....NX6sqSnHA8= rsa-key-20121110 privkeyfile passphrase If privkeyfile is encrypted (which it should be), the passphrase must be provided. &reftitle.returnvalues; &return.success; &reftitle.examples; Authentication using a public key 'ssh-rsa')); if (ssh2_auth_pubkey_file($connection, 'username', '/home/username/.ssh/id_rsa.pub', '/home/username/.ssh/id_rsa', 'secret')) { echo "Public Key Authentication Successful\n"; } else { die('Public Key Authentication Failed'); } ?> ]]> &reftitle.notes; 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.