windows - Windows 上的 JSCH 使用 mksnt 工具包无法识别目录路径

标签 windows sftp remote-access jsch mks

我有一个已使用 mksnt 工具包配置的 Windows 虚拟机。所以这意味着我的路径将变成 C:/abc/xyz

我正在尝试使用 Jsch 实用程序从 Linux 盒子远程连接到这台 Windows 计算机。我能够成功连接,当我尝试检查特定目录路径时,它说它不存在。但是,该路径确实存在于 Windows 框中。

以下是我的 Jsch 代码,用于查找目标目录 -

SftpATTRS dirAttributes=null;
try{
    testLog.info("Looking for directory :"+destinationDir);
    dirAttributes = sftpc.stat(destinationDir);
} catch(SftpException s){
    testLog.info("Directory does not exists !!!\n"+s.fillInStackTrace().toString());;
} catch (Exception e){
    testLog.info("Directory does not exists !!!\n"+e.fillInStackTrace().toString());;
}

如果我执行 Linux <-> Linux 远程调用并验证目录,上面的代码可以无缝工作,但使用 Linux <-> Windows 我遇到了这个问题。

由于安装了 mksnt,如果我进入目录并执行“pwd” - 它会打印“C:/abc/xyz”

我不清楚 Jsch 是否由于安装了 mksnt 而无法处理或识别路径。 任何人都可以分享任何解决方案或提供一些可以帮助我解决此问题的指示。

PS:我无法安装 cygwin 或任何其他工具。这是环境。提供给我,我只需要通过 Jsch 实用程序从 Linux 主机进行远程调用。

最佳答案

C:/abc/xyz

无论 SFTP 服务器的操作系统如何,SFTP 协议(protocol)都使用类似 UNIX 的文件路径名命名方案。在SFTP命名方案中,绝对路径名以“/”开头。以“C”开头的名称将引用 SFTP session 工作目录中的文件。

换句话说,基于 Windows 的 SFTP 服务器可能不会按照您期望的方式解释此路径名。您应该使用交互式 SFTP 客户端登录 Windows SFTP 服务器,找到您感兴趣的文件和/或目录,并确定用于通过 SFTP 访问它们的正确路径。

如果 Windows SFTP 服务器正在运行 Cygwin OpenSSH SFTP 服务器,我相信正确的路径将类似于“/cygdrive/c/abc/xyz”。

关于windows - Windows 上的 JSCH 使用 mksnt 工具包无法识别目录路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41738615/

相关文章:

java - 将 Jsch 0.1.42 升级到 0.1.54 会产生与远程服务器的连接超时

c# - 从 Azure 函数连接到 SFTP 服务器

java - 在多个EC2实例中远程执行程序并等待结果

mysql - 在 Mysql 中阻止主机名

batch-file - 在远程机器上使用凭据进行 xcopy

c++ - 如何在 Qt 中为我们可以使用 Windows Narrator 阅读的任何 QLabel 设置可访问的名称

windows - 在 EMC Celerra 上的 Linux 和 Windows 之间共享的文件设置权限

windows - 批量删除 FTP 上早于 x 天的文件

c++ - 在文件扩展名和应用程序之间创建关联性?

bash - 如何使用 bash 脚本运行 sftp 子命令?