【问题标题】:How to Send File over secure FTP SSL Protocol如何通过安全的 FTP SSL 协议发送文件
【发布时间】:2011-02-20 13:08:18
【问题描述】:

感谢您就该主题提供的任何帮助。在在线注册结束时,我正在获取客户数据(几个字段),将它们放入 CSV 文件并尝试通过 SSL 协议提交给另一个客户端,但不知道这是如何完成的。我还将信息存储在本地数据库中,希望过程有点相似。

我已经收到了来自 php.net SSN2 的查看 SSH2 指令的链接

但老实说,这对我来说就像读中文一样。我不理解这些说明,也不想安装任何扩展、修改 PHP.ini 文件或任何类似的东西(特别是因为我们不拥有发送信息的服务器)。

是否有一种简单、安全的方式将此文件传输到提供给我们的 SSL 协议?

谢谢!

【问题讨论】:

  • 那么,您有兴趣使用 sftp 还是 FTP-ssl?
  • @WhirlWind - 我们的客户端设置了以下内容:创建安全 FTP 帐户并在防火墙上打开端口 990 以用于 FTP 服务器上的 SSL 连接。我还为 FTP 协议创建了一个新的证书请求,并选择了 1028 位 SSL 安全证书。
  • 可能会找到一些关于 FTPS 的指令,而不是 SSH 的东西,因为这听起来像是“客户端”想要的。
  • @WhirlWind - 你认为这是我需要做的 - 考虑到这是我问题的主题以及我上面问的内容?感谢您的洞察力
  • 是的,我发表评论是因为您似乎对 SSH 和 SSL 感到困惑。它们是两种不同的东西,你说这是“对你来说是中国人”。我没有把它作为答案,因为它不是很完整。祝你好运。

标签: php ssl ssh sftp protocols


【解决方案1】:

也许您可以使用 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

【讨论】:

  • 感谢您的建议。我会试一试,让你知道结果!
  • 这没有按需要工作。我得到了客户端 $host 作为 IP 地址,它只是在 60 秒后超时。我知道 FTPS 可以工作,因为我能够连接本地 FTP 客户端
  • 如果上述方法不起作用。并且连接确实通过桌面 FTP 程序工作,您可能遇到了这个问题。 elitehosts.com/blog/…
【解决方案2】:

我设法使用 php 通过 SSL 进行 ftp 的唯一方法是使用 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 - 还想指出您也许可以使用 PHP 的 curl 库。我无法使用它,因为我无法设置 ftp-skip-pasv-ip 选项——它不适用于我使用的 PHP 版本。如果您不需要该选项并且可以使用 curl 支持,请先尝试一下。
  • 我不确定如何使用 curl 内联,如您在上面指出的那样。我还引用了 (curl.haxx.se/docs/manual.html),它们像您一样列出内联。我见过的所有 CURL 指令都是多行,带有非常具体的选项。我正在尝试使用给定的用户名和密码连接到主机 IP,然后将文件转储到特定目录中。有什么想法吗?
猜你喜欢
  • 2016-02-17
  • 2019-10-27
  • 2012-08-07
  • 1970-01-01
  • 1970-01-01
  • 2019-06-24
  • 2011-11-21
  • 2022-10-14
  • 2012-05-04
相关资源
最近更新 更多