我遇到了一个问题,我既不是系统工程师也不是证书专家。
我必须通过 SFTP 协议将一些文件从客户端传输到 SFTP 服务器。
我在本地 Windows 机器上安装了 SFTP 服务器(我使用了 Cygwin)。一切正常。但我有疑问,传输是在安全通道上进行的吗?或者我应该在服务器上配置一些东西吗?
我的 Windows 机器上是否应该有证书来确保流程已加密?我认为,流程已加密是因为我使用的是 SFTP。我认为它就像 HTTPS,即加密是通过协议实现的……所以我不必对服务器进行任何特殊的定制……
如果我应该生成证书(不用于身份验证),我该如何使用 Cygwin?
答案1
虽然我更熟悉 unix/linux,但想法是一样的。sftp 已经是安全的(这就是 s 的用途)。但是,它有多强取决于所使用的密码。您应该能够在服务器端和客户端上对其进行配置。cygwin 默认使用 Linux 世界中广泛使用的 openssh 套件,因此配置与 Linux 上使用的相同。换句话说,您可以查阅可用的 openssh 服务器文档。
有关详细信息,您可以查看 sshd 配置,因为 sftp 只是一个 ssh 服务器子系统,因此共享配置的值。
答案2
SFTP 协议本身不进行任何加密。但在 99.9% 的安装中(例如 OpenSSH),它运行在 SSH 之上,从而加密数据。请注意,Cygwin 使用 OpenSSH 作为 SSH/SFTP 实现。
查看SFTP 文章在维基百科上。
实际上,即使没有加密(密码none
),SSH 也可以工作。但是,OpenSSH 的现成安装(以及我所知道的任何其他 SSH 实现)不允许未加密的会话。
与 TLS/SSL(用于 HTTPS 或 FTPS)相反,SSH 不使用证书。SSH 使用简单的主机密钥对,通常在安装 SSH 服务器时自动生成。OpenSSH 也是如此。与证书相反,此简单密钥不是由证书颁发机构颁发的,因此可以自动生成。这就是为什么您可能甚至没有注意到您已经拥有密钥的原因。