Azure Pipeline:SSH命令任务能否复制流水线制品至Ubuntu服务器?
问题解决:通过SSH命令任务复制Azure Pipeline制品到Ubuntu服务器
可以用SSH相关命令完成制品复制,但你的测试命令逻辑错误,导致出现文件找不到的问题。
错误原因
你在SSH任务里执行的sudo cp $(System.DefaultWorkingDirectory)/_Lobi.Web/drop /root/test -r是在远程Ubuntu服务器上运行的,而$(System.DefaultWorkingDirectory)是Azure Pipeline代理机器(Windows系统,路径以D盘开头)的本地路径,远程服务器根本不存在这个路径,所以会报cp: cannot stat 'D:ar1a/_Lobi.Web/drop': No such file or directory。
正确实现方式
要把代理机器上的制品传到远程服务器,需要在代理机器上执行跨机器传输命令(比如scp或rsync),通过SSH连接到远程服务器完成文件推送。
方法1:用Command Line任务执行scp命令
在Pipeline中添加一个「Command line」任务,执行以下命令(替换成你的远程服务器信息):
scp -r $(System.DefaultWorkingDirectory)/_Lobi.Web/drop root@你的服务器IP:/root/test
- 确保代理机器已配置SSH免密登录远程服务器(可通过Pipeline的SSH服务连接密钥配置,或在代理机器上提前部署密钥)。
- 如果需要sudo权限,可在远程服务器上给目标目录设置合适的权限,避免传输后出现权限问题。
额外说明
关于你遇到的「Copy Files over SSH」任务连接失败问题:虽然SSH命令任务能正常连接,但两个任务的认证逻辑可能存在细微差异,比如Copy Files over SSH可能需要额外的SFTP支持,你可以检查远程服务器的/etc/ssh/sshd_config配置,确认是否开启了SFTP子系统(通常包含Subsystem sftp /usr/lib/openssh/sftp-server配置项)。
内容的提问来源于stack exchange,提问作者Cruik
相关产品推荐
相关产品推荐

