Jenkins 通过 SSH 发布无法更改到远程目录

Posted

技术标签:

【中文标题】Jenkins 通过 SSH 发布无法更改到远程目录【英文标题】:Jenkins publish over SSH failed to change to remote directory 【发布时间】:2017-02-16 23:21:44 【问题描述】:

我正在使用 Jenkins 通过 SSH 发布插件将文件传输到远程服务器。

当我配置 Publish over SSH 插件并指定远程目录时,测试配置总是失败并出现以下错误:

jenkins.plugins.publish_over.BapPublisherException:更改失败 到远程目录 [C:\zzTest]

但是,如果我将远程目录字段留空,我会在测试配置时收到一条成功消息。

关于我在这里做错了什么有什么想法吗?该目录肯定存在于远程服务器上。

【问题讨论】:

ssh 服务器可能会限制您对文件系统的访问。大多数服务器软件都这样做。 情况并非如此,因为当我使用 putty SSH 到那台机器时,我能够更改到该目录。我只在通过 ssh jenkins 插件测试发布时收到此错误。 你和 Jenkins 使用相同的登录名,你可以通过 ssh 在其中创建目录和文件? 是的,没错。 我注意到远程目录路径是 Windows 风格的。您确定“通过 SSH 发布”插件支持 Windows 路径吗?另外,您在 WINdows 上使用什么 SSH 服务?您可以尝试在常见情况下使用正斜杠“c:/zzTest”,或者专门针对基于 cygwin 的安装尝试使用“/cydgrive/c/zzTest”。 【参考方案1】:

所以看来问题在于在 Remote Directory 字段中指定绝对路径。

解决方法是指定相对路径。所以在上面的场景中 /zzTest 是应该输入到 Remote Directory 字段中的值。

【讨论】:

【参考方案2】:
    选择“sftp”,将“SFTP home path”改为“C:\”

    将“ssh 服务器远程目录”更改为“/zzTest”

    测试配置

【讨论】:

以上是关于Jenkins 通过 SSH 发布无法更改到远程目录的主要内容,如果未能解决你的问题,请参考以下文章

Jenkins+Gitlab 打包发布程序到 Tomcat

Jenkins编译一个Spring Boot项目并通过SSH推送到远程

Jenkins编译一个Spring Boot项目并通过SSH推送到远程

大坑,jenkins 配置publish over ssh bash 插件,远程部署,无法执行shell脚本

Jenkins+.Net+VS+SVN+SSH+IIS 实现部署远程服务器

Jenkins - 通过 SSH 插件发布:如何复制目录