【问题标题】:Transfer a file via SCP from a web page通过 SCP 从网页传输文件
【发布时间】:2016-09-07 17:16:22
【问题描述】:

我想为用户提供使用网页上传文件的选项。 远程服务器通过 SCP 接受文件。 这些文件通常是 ISO 文件 (> 2GB)

这是流程:

File ----> Web page(PHP/JS) --- Apache
  |
  |
 scp
  |
  |
  v
SCP Remote server

是否可以通过网页做到这一点? 通常用户会启动 SCP 客户端并开始传输,但此页面的目的是在用户和服务器之间建立直接通信,而我的 Web 应用程序只是为了透明地启用它(传递用户名/密码和 scp 参数)。我在 PHP 中找到了这个函数:

http://php.net/manual/en/function.ssh2-scp-send.php

由于 PHP 是服务器端,它会在 Apache Web 服务器中查找本地文件。我可以尝试 2 跳解决方案,但由于文件很大,这将使传输时间加倍。任何推荐的客户端库(HTTP 到 SCP)?

类似: JavaScript File Transfer SSH

【问题讨论】:

  • 如果您的用户实际上拥有所有需要的访问权限(连接远程服务器的访问权限和有效凭据),那么这一层只会大幅增加您的机器的负载和流量,而对用户几乎没有好处。这种方法的唯一优点是对用户隐藏远程服务器,如果他们可以直接访问它,这将毫无意义。
  • 我的问题更多是在技术方面。用例是用户无法访问远程服务器,也没有 Linux 技能来执行 scp -P 8022 root@1.1.1.1:/file.tar.gz 或获取 Windows SCP 客户端。
  • HTTP 不是 SCP。它们是完全不同的协议。 JavaScript 不允许创建任意 TCP/IP 连接,所以,不,没有浏览器插件是不行的。不过,您始终可以使用通过 HTTPS 工作的文件上传器插件。

标签: javascript php apache chunking


【解决方案1】:

由于您不希望用户直接访问远程服务器,因此需要分两步完成。

为避免在初始传输完成后锁定 Web 服务器进程以通过 SCP 进行如此长时间的传输,最好将文件转储到一个文件夹中,该文件夹由网络服务器,一旦看到文件就会传输文件。上传到网络服务器完成后,您只需让用户知道他们的文件将在大约 X 时间内准备就绪。

由于您希望允许的大小,您应该格外小心正确地验证您的用户,因为这样松散的配置很容易滥用您的系统。

【讨论】:

    猜你喜欢
    • 2015-07-30
    • 2016-11-22
    • 2017-12-04
    • 2012-04-05
    • 1970-01-01
    • 2011-04-15
    • 1970-01-01
    • 2020-01-07
    • 2023-01-11
    相关资源
    最近更新 更多