Лично я бы порекомендовал использовать phpseclib, чистую реализацию PHP SFTP :
<?php
include('Net/SFTP.php');
$sftp = new Net_SFTP('www.domain.tld');
if (!$sftp->login('username', 'password')) {
exit('Login Failed');
}
echo $sftp->pwd() . "\r\n";
$sftp->put('filename.ext', 'hello, world!');
print_r($sftp->nlist());
?>
Главным среди проблем libssh2 является тот факт, что его нелегко установить.Авторы оригинала отказались от него.Исходный код на php.net требует модификации, чтобы он даже компилировался, и хотя вы можете установить его с помощью apt-get в Ubuntu прямо сейчас, что произойдет, если для работы потребуется более двух новых строк?А что, если Linux-бокс, на котором вы пытаетесь заставить его работать, не Ubuntu?
Если вам когда-нибудь понадобится создать новый сервер, на котором будет размещаться ваш веб-сайт, вы не захотите зацикливаться на расходах.часов на кучу эзотерических зависимостей.