подключиться к серверу через sftp php

как нам подключиться к удаленному серверу через sftp, чтобы проверить, действительны ли данные для входа в php...

я использую сервер apache... я использую его для проверки правильности данных для входа, введенных пользователем.


person Akhil K Nambiar    schedule 07.12.2010    source источник
comment
когда-нибудь слышали об apache и http?   -  person Andreas Wong    schedule 07.12.2010
comment
нет... не совсем... подойдут функции curl, fsock, ftp и т. д.   -  person Akhil K Nambiar    schedule 07.12.2010
comment
Есть ли причина, по которой учетные данные для входа в систему для sftp не работают?   -  person ajreal    schedule 07.12.2010


Ответы (4)


Возможно, вам будет проще использовать phpseclib, клиент SFTP на чистом PHP. Вот пример:

<?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, как все рекомендуют, заключается в том, что он не очень широко распространен, его API не совсем надежный, он ненадежен, плохо поддерживается и т. д.

person wassail    schedule 07.12.2010

У вас установлен сервер apache? например: xampp?

Если вы это сделаете, вы должны использовать функцию FTP:

<?php
$connection = ssh2_connect('ftp.server.com', 22); //port 22 for Shell connections
ssh2_auth_password($connection, 'username', 'password');

$shell_ftp = ssh2_sftp($connection);

$connectionStream = fopen('ssh2.sftp://'.$shell_ftp.'/path/to/fileorfolder', 'r');

if(!connectionStream)
{
    echo "Could not connect to the server, please try agian";
}
else
{
    echo "Successfully logged in.";
}
?>

Для базового FTP-соединения Shell необходимо указать абсолютный путь к файлам или папкам.

person Wesley    schedule 07.12.2010
comment
Это лучше, чем мой ответ. - person Elzo Valugi; 07.12.2010
comment
как узнать успешное соединение или нет... никаких операций с файлами не будет... нужно только проверить имя пользователя и пароль... - person Akhil K Nambiar; 07.12.2010
comment
мне не нужна эта строка $connectionStream = fopen('ssh2.sftp://'.$shell_ftp.'/path/to/fileorfolder', 'r') также для тестирования я использую сервер с номером порта 2275 , будет ли это проблемой. потому что выдает ошибку Ошибка при запуске SSH-соединения (-1): Не удалось отправить баннер - person Akhil K Nambiar; 07.12.2010
comment
Ну, если вы хотите проверить, действителен ли логин. тогда вам понадобится эта строка, чтобы проверить, открыт или закрыт $connectStream, также было бы лучше использовать порт 22 для оболочки. - person Wesley; 07.12.2010

это поможет?

<?php
$connection = ssh2_connect('ftp.server.com', 22); 
if (ssh2_auth_password($connection, 'username', 'password')) 
    echo "Authentication success";
else 
    echo "Authentication failure";
?>
person viMaL    schedule 07.12.2010

Я сформировал небольшую библиотеку из нескольких предложений. я призываю

клиент idct sftp на GitHub

person Bartosz Pachołek    schedule 21.07.2014