Php 使用libssh2连接到需要密钥和密码的SFTP服务器

Php 使用libssh2连接到需要密钥和密码的SFTP服务器,php,sftp,phpseclib,libssh2,libssh,Php,Sftp,Phpseclib,Libssh2,Libssh,我的任务是连接到基于windows的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_publ

我的任务是连接到基于windows的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 USER@ip.address.com
在验证密钥后,它会提示我输入密码。一旦这被验证,它就会将我登录到SFTP服务器


如何使用PHP对此类服务进行身份验证,然后上传文件等?

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