我的任务是连接到基于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.";
}
使用user / pass连接:
//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对此类服务进行身份验证,然后上传文件等?
答案 0 :(得分: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');
?>