Невозможно запустить команды FTP из AWS AMI - PullRequest
0 голосов
/ 11 сентября 2018

Я хочу подключиться к FTP с помощью PHP для загрузки сгенерированных отчетов. Согласно удаленному серверу, FTP должен быть в АКТИВНОМ режиме.

это мой код:

ini_set('display_errors', '1');
error_reporting(E_ALL);

$conn_id = ftp_connect('myftpserver.com', 21);

if($conn_id)
{
    // login with username and password
    $login_result = ftp_login($conn_id, 'mysuer', 'password');

    $passive = ftp_pasv($conn_id,FALSE);

    echo "is active?<br/>";
    var_dump($passive);

    echo 'Login Result:';
    var_dump($login_result);

    $files_list = ftp_nlist($conn_id, '/MyFolder/');

    echo "<br/>files list ";

    var_dump($files_list);
}
else
{
    var_dump('Unable to connect to FTP Server');
}

Когда я запускаю его с локального компьютера или обычного общего сервера, я могу получить список, но не могу запустить скрипт из своего экземпляра AWS AMI. Для тестирования я даже открыл весь входящий трафик. Все еще не повезло. Кроме того, суть в том, что если я попытаюсь использовать некоторые другие детали ftp, я смогу получить ответ ftp_nlist. Но не для этого. Я попробовал это на 3 экземплярах AWS до сих пор. Дали тот же результат.

Все, что я могу сказать, это то, что это где-то проблема в моей группе безопасности сервера / брандмауэре. Но не в состоянии понять это. Пожалуйста, помогите.

Ответ, который я получаю с сервера:

is active
bool(true) 
Login Result:bool(true)
files list bool(false) 

1 Ответ

0 голосов
/ 11 сентября 2018

Использование активного режима FTP проблематично с группами безопасности AWS.

Для работы в активном режиме вам нужно будет открыть все входящие порты выше 1023. Если ваш клиент поддерживает ограничение диапазона, сделайте это. Вам также необходимо будет открыть как входящий, так и исходящий порт 20 и порт 21.

Проблема в том, что клиент FTP выбирает порт, который он будет прослушивать. Затем FTP-клиент информирует FTP-сервер об этом номере порта. Затем FTP-сервер подключается к этому порту. Это идет вразрез с обычными проектами AWS Security Group, означающими, что открываются только определенные порты. Вы можете проверить это, временно открыв все порты, протестировав свой FTP-клиент и затем закрыв все порты.

Активный режим небезопасен для клиента FTP. Пассивный режим небезопасен для FTP-сервера (но лучший выбор).

ПРИМЕЧАНИЕ: часто меняйте свои учетные данные FTP. Ваш логин и пароль отправляются в открытом виде и не зашифрованы.

FTP - это устаревшая технология, которая все еще очень популярна, и ее следует хранить на чердаке.

...