You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从Azure DevOps Pipeline在Azure VM主机执行命令?遇SSH认证失败

解决Azure DevOps Pipeline SSH连接Azure VM认证失败的问题

排查步骤与解决方案

1. 核对SSH服务连接的认证配置

  • 密钥格式校验:Azure DevOps要求SSH私钥为未加密的PEM格式,本地可连接不代表格式符合要求。若你使用的是OpenSSH格式私钥,需转换为PEM:
    ssh-keygen -p -m PEM -f /path/to/your/private-key
    
  • 公钥部署检查:登录Azure VM,确认~/.ssh/authorized_keys文件中的公钥是完整单行,无换行或冗余字符,同时修正权限:
    chmod 700 ~/.ssh
    chmod 600 ~/.ssh/authorized_keys
    

2. 检查Azure VM的SSH服务设置

  • 认证方式配置:编辑/etc/ssh/sshd_config,确保启用对应认证方式:
    PubkeyAuthentication yes
    PasswordAuthentication no # 若使用密码认证则改为yes
    
    修改后重启SSH服务:
    # Ubuntu/Debian
    sudo systemctl restart sshd
    # RHEL/CentOS
    sudo service sshd restart
    
  • 网络访问限制:检查Azure VM的网络安全组(NSG),确保允许Azure DevOps代理的IP访问22端口。可临时将22端口开放至所有IP(仅测试用,测试后需收紧),排除IP拦截问题。

3. 验证Azure DevOps代理的网络环境

  • 自托管代理:确认代理服务器能访问Azure VM的公网/私有IP(同VNet场景),且代理服务器防火墙未拦截22端口出站流量。
  • 托管代理:使用微软托管代理时,需将Azure DevOps对应区域的IP范围加入VM的NSG允许列表,可通过Azure CLI查询:
    az network list-service-tags --location <你的VM所在区域> --query "values[?properties.systemService=='AzureDevOps'].properties.addressPrefixes" -o tsv
    

4. 启用SSH verbose日志定位问题

在Pipeline中添加测试步骤,输出详细SSH连接日志:

- script: |
    ssh -v -i /path/to/private-key 你的用户名@VM-IP地址
  displayName: 'Verbose SSH Test'

通过日志中的认证阶段细节,精准定位是密钥不匹配、权限错误还是其他认证环节故障。


内容的提问来源于stack exchange,提问作者user2647567

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 06:19:59