@Richard_Ferlow
Веб-программист

Как из php работать с sftp с авторизацией по приватному SSH-2 RSA ключу?

Не могу разобраться, в основном все что нахожу - указывает на

https://github.com/phpseclib/phpseclib

однако у него какая-то невменяемая документация, примеры из которой не работают(ошибки, или они от другой версии).

Пытаюсь сделать так

<?php

include 'vendor/autoload.php';

$loader = new \Composer\Autoload\ClassLoader();
$loader->addPsr4('phpseclib\\', __DIR__ . 'vendor/phpseclib');
$loader->register();

use phpseclib\Crypt\RSA;
use phpseclib\Net\SSH2;
use phpseclib\Net\SFTP;

$key = new RSA();
$key->setPassword('***');
$key->load(file_get_contents('****.ppk'));

// Domain can be an IP too
$ssh = new SFTP('***',22);
if (!$ssh->login('***', $key)) {
    exit('Login Failed');
}

echo $ssh->exec('pwd');
echo $ssh->exec('ls -la');


получаю ошибку
This service allows sftp connections only. This service allows sftp connections only.


что не так?
через FTP клиент работает
  • Вопрос задан
  • 548 просмотров
Решения вопроса 1
Vamp
@Vamp
Метод exec() - это функция SSH2. Так как сервер, к которому вы подключаетесь, не предоставляет вам полноценный SSH доступ, а только лишь SFTP, то и методы вы должны вызывать из класса SFTP:
$ssh->chdir()/nlist()/stat()/get()/put()/delete() и так далее.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы