我们在项目中使用SFTP通过SSH连接传输文件。这是通过java代码完成的。假设对于像?的字符!我们需要在sftp命令中给出编码值,我们在代码中编码密码并生成命令。但SFTP现在不使用这些编码密码,它直接接受密码。可能是什么问题。请帮忙。
用户名示例:xyz密码:abc!
我们使用URLEncoder来编码用户名和密码。
String username = URLEncoder.encode(username,“UTF-8”); 字符串密码= URLEncoder.encode(密码,“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它可以工作。
如果我们出错了,请告诉我们。
提前致谢。
答案 0 :(得分:1)
这实际上不是问题。 SFTP是SSH的一个子系统,SSH在客户端连接时创建一个安全通道(类似于SSL的功能,但在第7层):一旦建立了安全和加密连接,您的用户名和密码将被发送到这样的SSH服务器内。连接,因此不需要对它们进行编码或加密它们。
SSH服务器希望按原样接收您的用户名/密码,而不是预处理或编码。并且您可以使用SFTP安全地执行此操作,原因如上所述。所以没有理由担心。