2017-03-02 101 views
2

我的任务是连接到基于Windows的SFTP服务器,该服务器需要密钥和密码才能连接到它。使用libssh2连接到需要密钥和密码的SFTP服务器

我已经计算出如何使用密码或密钥进行连接,但是我无法弄清楚如何使用密码或密钥进行连接。

通过主要连接:

//connect to server 
$connection = ssh2_connect($SSH_ipadd, 22, array('hostkey'=>'ssh-rsa,ssh-dss')); 
if(ssh2_auth_pubkey_file($connection, $SSH_user, $SSH_public_key, $SSH_private_key)){ 

    echo "connected successfully."; 

}else{ 

    echo "did not connect correctly."; 

} 

连接使用用户名/密码:

//connect to server via ssh in preperation for sftp 
$connection = ssh2_connect($SSH_ipadd, 22); 

//check connectivity 
if(ssh2_auth_password($connection, $SSH_user, SSH_Password)){ 

     echo "connected successfully."; 

    }else{ 

     echo "did not connect correctly."; 

    } 

,但我不确定如何一次一举两得。

当我尝试与CLI

ssh -i private.key [email protected] 

它提示我连接到服务器,用于验证密钥,输入密码后。一旦这已被认证,它会将我登录到SFTP服务器。

我该如何使用PHP来验证这种类型的服务,然后上传文件等?

回答

0

phpseclib可以做到这一点。这里有一个使用v1.0的例子:

<?php 
include('Net/SSH2.php'); 
include('Crypt/RSA.php'); 

$rsa = new Crypt_RSA(); 
$rsa->loadKey(file_get_contents('...')); 

$ssh = new Net_SSH2('www.domain.tld'); 
if (!$ssh->login('username', 'password', $rsa)) { 
    exit('Login Failed'); 
} 

echo $ssh->exec('pwd'); 
echo $ssh->exec('ls -la'); 
?> 
相关问题