0

我们在项目中使用 SFTP 通过 SSH 连接传输文件。这是通过java代码完成的。假设 if 对于像 ?, ! 这样的字符 等我们需要在 sftp 命令中给出编码值,我们在代码中编码密码并生成命令。但是 SFTP 现在不使用这些编码密码,它直接接受密码。可能是什么问题。请帮忙。

示例用户名:xyz 密码:abc!

我们使用 URLEncoder 对用户名和密码进行编码。

String username= URLEncoder.encode(username, "UTF-8"); 字符串密码 = URLEncoder.encode(password, "UTF-8");

编码后我们的代码将生成 SFTP 命令为:sftp://xyz:abc%21@10.9.10.9/home/documents/xyz.txt

但这不起作用,身份验证因密码错误而失败。如果我们手动发出命令 sftp://xyz:abc!@10.9.10.9/home/documents/xyz.txt 它可以工作。

如果我们出错了,请告诉我们。

提前致谢。

4

1 回答 1

0

这实际上不是问题。SFTP 是 SSH 的一个子系统,SSH 在客户端连接时创建一个安全通道(类似于 SSL 所做的,但在第 7 层):一旦建立了安全和加密的连接,您的用户名和密码将被发送到内部的 SSH 服务器连接,因此无需对它们进行编码或加密。

SSH 服务器希望按原样接收您的用户名/密码,而不是经过预处理或编码。由于上述原因,您可以使用 SFTP 安全地执行此操作。所以没有理由担心。

于 2014-10-12T16:30:42.357 回答