Вы можете использовать phpseclib, чистую реализацию PHP SSH , чтобы сделать это достаточно легко:
<?php
include('Crypt/RSA.php');
include('Net/SSH2.php');
$key = new Crypt_RSA();
//$key->setPassword('whatever');
$key->loadKey(file_get_contents('privatekey'));
$ssh = new Net_SSH2('www.domain.tld');
if (!$ssh->login('username', $key)) {
exit('Login Failed');
}
echo $ssh->exec('pwd');
echo $ssh->exec('ls -la');
?>
phpseclib поддерживает довольно много различных форматов ключей:
http://www.frostjedi.com/phpbb/viewtopic.php?f=46&t=15226
Тот факт, что для ssh2_auth_pubkey_file () требуется как открытый, так и закрытый ключ, глуп, поскольку в 99% случаев закрытый ключ содержит в себе открытый ключ.Но что угодно - это не то, что они спросили меня, лол.