Как да изпратите файл през защитен FTP SSL протокол

Оценявам всяка помощ, която може да бъде предложена по темата. В края на онлайн записване вземам клиентски данни (няколко полета), поставям ги в CSV файл и се опитвам да изпратя на друг клиент през SSL протокол, но нямам представа как се прави това. Също така съхранявам информацията в локална база данни и се надявам, че процесът е донякъде подобен.

Вече ми бяха изпратени връзки за преглед на инструкциите за SSH2 от php.net SSN2

но честно казано това ми е като да чета китайски. Не разбирам инструкциите и не искам да инсталирам никакви разширения, да променям файла PHP.ini или нещо подобно (особено след като ние не притежаваме сървъра, през който се изпраща информацията).

Има ли прост, сигурен начин за предаване на този файл към предоставения ни SSL протокол?

Благодаря!


person JM4    schedule 17.05.2010    source източник
comment
И така, интересувате се от използването на sftp или FTP-ssl?   -  person WhirlWind    schedule 17.05.2010
comment
@WhirlWind - нашият клиент настрои следното: Създаде защитен FTP акаунт и отвори порт 990 на защитната стена за SSL връзки на FTP сървъра. Също така създадох нова заявка за сертификат за FTP протокола и избрах 1028-битов SSL сертификат за сигурност.   -  person JM4    schedule 17.05.2010
comment
Вероятно ще намерите някои инструкции за FTPS, вместо за SSH, тъй като звучи така, сякаш клиентът иска.   -  person WhirlWind    schedule 17.05.2010
comment
@WhirlWind - мислиш ли, че това е, което трябва да направя - имайки предвид, че това е темата на въпроса ми и това, което попитах по-горе? Благодаря за прозрението   -  person JM4    schedule 26.05.2010
comment
да, направих този коментар, защото изглеждате объркан между SSH и SSL. Това са две различни неща и вие казвате, че това е китайско за вас. Не го включих като отговор, защото не беше много пълен. Късмет.   -  person WhirlWind    schedule 26.05.2010


Отговори (2)


Единственият начин, по който успях да направя ftp през SSL с помощта на php, беше да използвам функцията exec() на php, за да изпълня curl команда. Curl библиотеката на PHP нямаше да работи, защото по това време опцията skip-pasv-ip не съществуваше и беше нещо, което беше абсолютно необходимо. Нещо като:

curl --user <username:password> --disable-epsv --ftp-pasv --ftp-skip-pasv-ip --ftp-ssl --sslv2  --cert <path/to/certificate> -T <path/to/uploadfile> <hostname>

Може да се наложи да промените опциите за къдрици, за да отговарят на вашите нужди.

person Rob Apodaca    schedule 17.05.2010
comment
Благодаря за съвета. Не съм запознат с Curl, но ще опитам и ще ви уведомя как се получава! - person JM4; 18.05.2010
comment
@JM4 - Също така исках да отбележа, че може да сте в състояние да използвате curl библиотеката на PHP. Не можах да го използвам, защото не можах да задам опцията ftp-skip-pasv-ip - тя не беше налична за версията на PHP, която използвах. Ако не се нуждаете от тази опция и разполагате с поддръжка за къдрици, опитайте първо това. - person Rob Apodaca; 18.05.2010
comment
Не съм сигурен как да използвам curl inline, както сте посочили по-горе. Също така посочих (curl.haxx.se/docs/manual.html) и те вграден списък точно както направихте. Всички инструкции на CURL, които съм виждал, са няколко реда с много специфични опции. Опитвам се да се свържа с IP на хост с дадено потребителско име и парола, след което изхвърлям файл в определена директория. Някакви идеи? - person JM4; 26.05.2010

Може би бихте могли да използвате ftp_ssl_connect за този въпрос, който се използва за отваряне на защитена SSL-FTP връзка, а качването на файл е просто директен процес, просто създайте връзка със сървъра и поставете файла там. Основен пример може да бъде:

//Create your connection
$ftp_conn = ftp_ssl_connect( $host, $you_can_provide_a_port );

//Login
$login_result = ftp_login($ftp_conn, $user, $pass);

if( $login_result )
{
    //Set passive mode
    ftp_pasv( $ftp_conn, true );
    // Transfer file
    $transfer_result = ftp_put( $ftp_conn, $dest_file_path, $source_file_path, FTP_BINARY );

    //Verify if transfer was successfully made
    if( $transfer_result)
    {
        echo "Success";
    }
    else
    {
        echo "An error occured";
    }
}

За справка http://www.php.net/manual/en/function.ftp-ssl-connect.php

person falomir    schedule 17.05.2010
comment
благодаря ти за съвета. Ще го пробвам и ще ви уведомя за резултатите! - person JM4; 18.05.2010
comment
това не проработи според нуждите. Даден ми е $host на клиента като IP адрес и той просто изтича след 60 секунди. Знам, че FTPS работи, защото мога да се свържа с локален FTP клиент - person JM4; 26.05.2010
comment
Ако горното не работи. И връзката работи чрез десктоп FTP програма, вероятно имате този проблем. elitehosts.com/blog/ - person Tim; 07.12.2011