Используйте libssh2 для подключения к SFTP-серверу, для которого требуется ключ и пароль

Мне было поручено подключение к SFTP-серверу на базе Windows, для которого требуется ключ И пароль для подключения к нему.

Я разработал, как подключиться с помощью пароля или ключа, но я не могу понять, как сделать это с обоими.

Подключиться через ключ:

//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.";

}

Но я не уверен, как сделать оба сразу.

Когда я пытаюсь подключиться к серверу с помощью интерфейса командной строки

ssh -i private.key [email protected]

После аутентификации ключа мне будет предложено ввести пароль. Как только это было аутентифицировано, оно регистрирует меня на SFTP-сервере.

Как бы я использовал PHP для аутентификации на этом типе сервиса, а затем для загрузки файлов и т. Д.?

2

Решение

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

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]