1

我陷入了一个问题。根据我的最新要求,我必须将文件上传到 ftp 或 sftp 服务器。问题是我不知道服务器是 ftp 还是 sftp。在运行时客户端将提供我必须上传文件的服务器的 ip 和其他详细信息。因此,在运行时我必须了解服务器是 ftp 还是 sftp,然后需要采取相应的行动。那么,这有什么出路吗?

4

2 回答 2

2

SFTP(SSH 文件传输协议)默认使用端口 22。

有些人使用“SFTP”来表示 FTPS(FTP-over-TLS)。在这种情况下,您有两个选择:显式 TLS 和隐式 TLS。默认情况下,隐式 TLS 使用端口 990。在显式模式下,客户端默认连接到端口 21,然后告诉服务器通过现有连接启动 TLS 握手。

普通 FTP 使用端口 21。

现在,用户可以明确指定要使用的协议。

最后可以尝试连接,从socket中抓取第一行数据并分析。在 FTP/FTPS 中,第一行应该以 220SP 开头(SP 代表空格,字符代码为 0x20)。也可以给出其他响应代码。在 SSH/SFTP 中,该行以 "SSH-2.0-" 开头。

于 2013-05-13T18:57:53.963 回答
0

ftp 和 sftp 将使用不同的端口(分别为 21 和 22)。这应该是“服务器的 ip 和其他详细信息”的一部分。

于 2013-05-13T18:38:10.583 回答