Невозможно выполнить команды FTP из AWS AMI

Я хочу подключиться к 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

Решение

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

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

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

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

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

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

2

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

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