【发布时间】:2025-12-02 07:10:01
【问题描述】:
我仍在学习套接字编程(使用 Perl),但我有两个选项(套接字编程和 SSH/SCP/FTP)可用于将数据从远程机器传输到我的本地服务器。
但我必须选择一个在数据传输方面更安全的(网络上的加密数据)。任何建议。
【问题讨论】:
标签: ftp ssh sockets data-transfer
我仍在学习套接字编程(使用 Perl),但我有两个选项(套接字编程和 SSH/SCP/FTP)可用于将数据从远程机器传输到我的本地服务器。
但我必须选择一个在数据传输方面更安全的(网络上的加密数据)。任何建议。
【问题讨论】:
标签: ftp ssh sockets data-transfer
所有网络编程都在底层使用套接字。 因此,这与您使用的协议有关。
一般来说,如果您想确保安全,您应该使用 SSL(https、sftp、ftps)进行通信
【讨论】:
仅使用套接字根本不会给您任何安全性。正确的选择取决于应用程序、您使用的系统以及用户对使用它需要做什么的了解程度。例如,如果您以安全的方式与 Web 服务器交互,您可能最终会使用 TLS/SSL。如果您只是在两个系统之间传输数据,那么使用 ssh 可能是最方便的方式。
当您说“安全”时,您是在寻找网络上的加密数据吗?通信双方的身份验证?两者都有?
另一种选择是使用 TLS/SSL,可能与 OpenSSL 工具包一起使用(并且有带有绑定的 Perl 模块。)编程比使用 ssh 更复杂,您必须为它做更多的身份验证工作,所以它会回到你想要做的任何事情。
另外,FTP 本身也不安全。
【讨论】:
SSH/SFTP/SCP 在套接字编程下都使用了套接字。除非您有比 SSH 提供的更好的算法(安全性),否则请为 Perl 使用 SSH 模块。
【讨论】:
开箱即用的插座并不安全。数据以原始形式从 A 点传输到 B 点。
添加 SSL 可增加安全性。许多协议都支持 SSL。特别是几种 FTP 和 HTTP 支持 SSL。
FTPS 在许多平台和许多客户端上得到广泛支持。即使您编写了自定义客户端,手头有 FileZilla 等其他客户端进行测试也很不错。
如果我要在这样的系统上从头开始,我会使用 FTPS。
【讨论】:
SSH 是一个远程 shell 协议,它本身不用于文件传输(如 FTP)。 SCP 文件传输协议是 SSH1 的一部分,但由于 SSH1 已过时且存在缺陷,因此不建议使用 SCP。在 SSH2(在所有现代系统中使用)中使用 SFTP(SSH 文件传输协议)。
FTP (RFC 959) 本身不提供任何安全性。存在允许您通过 SSL/TLS 运行 FTP 的扩展(隐式地,通过预加密的通道,或显式地,通过 TLS 作为 FTP 协议的一部分)。基于 SSL 的 FTP 称为 FTPS(不要与 SFTP 混合使用)。
您可以阅读detailed descriptions of pros and cons of FTPS and SFTP here。
【讨论】:
我会考虑三个主要选项:
FTPS(基于 SSL/TLS 的 FTP)——它相当于 HTTPS,简单来说就是普通 FTP 协议的加密版本。我认为它非常适合从远程和可能的公共机器通过 Internet 下载。它以 X.509 证书的形式提供了卓越的身份验证机制。防火墙存在一些问题,因为它像 FTP 一样使用两个连接。如果您的目标是防止任何人看到您正在下载的内容,那么恕我直言,这是完美的解决方案。我倾向于使用此协议来访问我无法控制的机器。
SFTP (SSH FTP) - 它是一个很好的协议,可能比 FTPS 更好,但在我看来它更适合受控环境。当我想将文件从我在一台机器上的帐户下载到另一台机器时,我将使用此协议。或者当我想将新脚本上传到服务器时。对我来说,这相当于我带着闪存驱动器去机器并登录机器。
VPN - 如果这些机器是固定的 - 你总是连接到相同的机器 - 我会考虑使用 VPN 来提供安全性。传输受到外部人员的保护,服务器的行为就像它在同一个网络中一样,我可以使用任何我想要的协议。
【讨论】: