如何通过安全的FTP SSL协议发送文件

3
我很感激任何能在这个主题上提供帮助的人。在线注册结束后,我正在获取客户数据(多个字段),将它们放入CSV文件中,并尝试通过SSL协议提交给另一个客户端,但我不知道该如何操作。我还将信息存储在本地数据库中,并希望该过程有些相似。
我已经收到了来自php.net的SSH2说明链接SSN2,但老实说,对我来说这就像看中文一样。我不理解说明,并且不想安装任何扩展程序,修改PHP.ini文件或任何类似的操作(特别是因为我们不拥有发送信息的服务器)。
有没有一种简单、安全的方法将此文件传输到我们提供的SSL协议?
谢谢!

那么,你有兴趣使用sftp或FTP-ssl吗? - WhirlWind
@WhirlWind - 我们的客户进行了以下设置:创建了安全的FTP账号,并在防火墙上开放了端口990以支持FTP服务器上的SSL连接。我还为FTP协议创建了一个新的证书请求,并选择了1028位SSL安全证书。 - JM4
可能需要查找一些 FTPS 的指令,而不是 SSH 相关的内容,因为这似乎是“客户端”想要的。 - WhirlWind
@WhirlWind - 你认为那是我需要做的吗 - 考虑到这是我的问题主题和我上面所问的内容?感谢你的见解。 - JM4
是的,我发表了那个评论是因为你似乎对SSH和SSL感到困惑。它们是两个不同的东西,而你说这对你来说是“天书”。我没有将其作为答案包含在内,因为它不是非常完整。祝好运。 - WhirlWind
2个回答

6
也许您可以使用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/zh/function.ftp-ssl-connect.php


谢谢你的建议。我会尝试一下并告诉你结果! - JM4
这个无法按需工作。我已经通过IP地址得到了客户端$host,但在60秒后它仍然超时。我知道FTPS可以工作,因为我能够使用本地FTP客户端连接。 - JM4
1
如果上述方法不起作用,而且连接通过桌面FTP程序可以正常工作,那么您可能遇到了这个问题。http://www.elitehosts.com/blog/php-ftp-passive-ftp-server-behind-nat-nightmare/ - Tim

2
我成功使用PHP进行FTP over SSL的唯一方法是使用php的exec()函数执行curl命令。当时,PHP的curl库无法工作,因为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>

您可能需要根据自己的需求修改curl选项。

谢谢你的建议。我对Curl不太熟悉,但我会试一试并告诉你结果的! - JM4
@JM4 - 还想指出的是,您可能可以使用PHP的curl库。我无法使用它,因为我无法设置ftp-skip-pasv-ip选项 - 它在我使用的PHP版本中不可用。如果您不需要该选项并且有curl支持可用,请首先尝试使用它。 - Rob Apodaca
我不确定如何像你上面表示的那样内联使用curl。我还参考了(http://curl.haxx.se/docs/manual.html) 他们也像你一样列出了inline。 我看到的所有CURL指令都是多行的,有非常具体的选项。 我正在尝试连接到主机IP,使用给定的用户名和密码,然后在特定目录中转储文件。 有任何想法吗? - JM4

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接