connect to a server via sftp php

10,492

Solution 1

You might have an easier time using phpseclib, a pure PHP SFTP client. Here's an example:

<?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());
?>

The problem with libssh2, as everyone's recommending, is that it's not very widely deployed, it's API isn't exactly the most reliable, it's unreliable, poorly supported, etc.

Solution 2

Do you have an apache server installed? for example: xampp?

If you do then you have use the FTP function:

<?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.";
}
?>

That the basic Shell FTP connection, you must define absolute path's to file's or folders.

Solution 3

will this help?

<?php
$connection = ssh2_connect('ftp.server.com', 22); 
if (ssh2_auth_password($connection, 'username', 'password')) 
    echo "Authentication success";
else 
    echo "Authentication failure";
?>
Share:
10,492
Akhil K Nambiar
Author by

Akhil K Nambiar

A BTech Graduate with 9+yrs expirence in Java and a die hard developer and open source fan.

Updated on July 03, 2022

Comments

  • Akhil K Nambiar
    Akhil K Nambiar almost 2 years

    how do we connect to a remote server via sftp to verify if the login details are valid in php...

    i'm using apache server... my use is to check whether the login details entered by user is correct or not.

  • Elzo Valugi
    Elzo Valugi over 13 years
    This is better than my answer.
  • Akhil K Nambiar
    Akhil K Nambiar over 13 years
    how do u know that the connection is successfull or not... thr wont be any file operations... only need to verify user name and password...
  • Akhil K Nambiar
    Akhil K Nambiar over 13 years
    i don't need this line $connectionStream = fopen('ssh2.sftp://'.$shell_ftp.'/path/to/fileorfolder', 'r') also for testing I'm using a server with port number 2275. will that be a problem. cause it gives error Error starting up SSH connection(-1): Failed sending banner
  • Wesley
    Wesley over 13 years
    Well, if you want to check if the login is valid. then you will be needed that line to check if the $connectStream is open or closed, also it would be better to use port 22 for shell.