Azure DevOps Pipeline中CopyFilesOverSSH任务认证失败求助
问题描述
我在Azure DevOps中配置了SSH任务和CopyFilesOverSSH任务,使用同一个SSH服务连接backend:
- task: SSH@0 inputs: sshEndpoint: 'backend' runOptions: 'commands' commands: 'do something' readyTimeout: '20000' - task: CopyFilesOverSSH@0 inputs: sshEndpoint: 'backend' sourceFolder: '$(System.DefaultWorkingDirectory)' contents: 'api-core' targetFolder: '/opt/api' readyTimeout: '20000'
SSH任务可正常运行,但CopyFilesOverSSH任务报错:
Setting up SSH service connection to remote host xxx.xxx.xxx.xxx. ##[debug]task result: Failed ##[error]Error: Failed to connect to remote machine. Verify the SSH service connection details. Failed to connect to remote machine.
我在其他项目用完全相同的YAML配置可正常运行,本地也能通过.pem文件进行SFTP和SSH连接,完全搞不懂复制文件时为何出现认证错误。

排查解决步骤
- 检查服务器SFTP子系统配置:登录目标服务器查看
/etc/ssh/sshd_config,确认Subsystem sftp /usr/lib/openssh/sftp-server(部分系统路径为/usr/libexec/openssh/sftp-server)未被注释,若已注释则取消并重启sshd服务(systemctl restart sshd)。 - 验证目标文件夹权限:确保SSH服务连接使用的用户对
/opt/api拥有读写权限,执行ls -ld /opt/api查看权限,必要时用chown <用户名>:<组名> /opt/api或chmod 755 /opt/api调整。 - 核对服务连接细节:即使YAML配置一致,也要确认两个项目的
backend服务连接参数完全相同(包括用户名、密钥、服务器端口),避免服务连接被私下修改。 - 开启详细日志:在CopyFilesOverSSH任务中添加
verbose: true输入参数,查看更具体的错误日志,定位是认证失败还是SFTP会话建立异常。 - 本地SFTP上传测试:用本地的.pem文件通过SFTP客户端尝试上传文件到
/opt/api,如果本地也失败,说明问题出在服务器端的SFTP配置或权限。
内容的提问来源于stack exchange,提问作者i773
相关产品推荐
相关产品推荐

