У меня есть довольно простой PHP-скрипт, который пытается подключиться к SFTP-серверу из коробки CENTOS 7. Использование phpseclib через composer.
<?php
require('vendor/autoload.php');
$usr = 'xx';
$pwd = 'xx';
$host = 'sftp.domain.com.au';
$sftp = new SFTP($host);
if($sftp->login($usr, $pwd)){
echo "Connected.";
}else {
echo "Failed";
}
?>
И даже использовал ключ RSA
<?php
require('vendor/autoload.php');
$usr = 'xx';
$pwd = 'xx';
$host = 'sftp.domain.com.au';
$sftp = new SFTP($host);
$rsa = new RSA();
$rsa->loadKey(file_get_contents("../../.ssh/id_rsa"));
if($sftp->login($usr, $pwd, $rsa)){
echo "Connected.";
}else {
echo "Failed";
}
?>
Сценарий, описанный выше с RSA, действительно несколько раз работал и меня связал. Поэтому я подумал, что должен понять, почему это работает, и изменить несколько вещей. Я попытался сгенерировать другой ключ, перезаписывая существующий ключ. Но на этот раз это не сработало.
Я также включил NET_SFTP_LOGGING без каких-либо ошибок отображения, просто как «Соединение закрыто сервером». Я работал над этим в течение нескольких дней ..
Единственное, о чем я мог подумать, это когда я заново сгенерировал ключ и перезаписал ID_RSA, может быть, сервер подумал, что он больше не тот ключ?
Также, когда я подключаюсь с помощью WinSCP, кажется, что FTP-сервер дает мне алгоритм: ssh-rsa 4096, sha256 и md5 code. Это то, что мне нужно использовать в моем сценарии PHP для правильного подключения? Просто пытаюсь исключить любые возможности.
БОЛЬШЕ ДЕТАЛЕЙ:
- с работы могу подключиться к FTP-серверу через FILEZILLA / WINSCP
- сервер CENTOS box является частью нашей сети на работе.
- Я не могу подключиться к FTP-серверу из дома.
- в окне CENTOS, которое я включил, настроил «ssh_config» и сгенерировал ключи с помощью ssh-kegen -t RSA, я даже добавил id_rsa.pub к авторизованному ключу
Пожалуйста, кто-нибудь даст нам какой-нибудь совет, так как это потребляет меня на ДНИ, надеюсь, не на недели! Заранее спасибо.