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

Ubuntu20升级到22后Azure Pipeline SSH连接失败,如何调试?

Azure Pipeline SSH连接认证失败排查方案

一、与TLS公告的关联说明

你的认证失败问题和Azure DevOps的TLS禁用公告无关。该公告针对的是Azure DevOps服务与工具之间的通信协议,而你遇到的是Pipeline到Ubuntu服务器的SSH连接认证问题,属于服务器端SSH配置范畴,二者没有直接关联。

二、具体调试排查步骤

1. 检查Ubuntu 22.04的SSH服务配置

Ubuntu 22.04的sshd_config默认设置与20.04有差异,重点核查以下配置项:

  • 确认PubkeyAuthentication设为yes
  • 检查AuthorizedKeysFile路径是否为默认的.ssh/authorized_keys .ssh/authorized_keys2
  • 若Pipeline使用root用户连接,确认PermitRootLogin设为yes或prohibit-password
  • 确保PasswordAuthentication的设置符合你的认证方式(密钥认证时设为no不影响)

修改后重启SSH服务:

sudo systemctl restart sshd

2. 修复服务器端密钥文件权限

即使本地能正常连接,服务器上的权限配置可能不符合SSH的严格要求:

  • .ssh目录权限需为700
  • authorized_keys文件权限需为600
  • 用户家目录权限不能为777等开放权限

执行命令修复:

chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
chmod go-w ~/

3. 查看SSH服务日志定位具体错误

通过实时日志获取认证失败的详细原因:

sudo journalctl -u sshd -f

触发Pipeline的SSH任务后,观察日志中的错误信息(如密钥格式不兼容、用户权限不足、密钥未被信任等)。

4. 验证Azure Pipeline的SSH服务连接配置

  • 核对服务连接中的用户名、主机地址与本地连接的参数是否一致
  • 确认上传到Azure DevOps的密钥无格式错误(如多余换行、缺失-----BEGIN RSA PRIVATE KEY-----等标识)
  • 若使用自托管代理,确保代理机器能访问到指定的密钥文件

5. 在代理机器上手动测试SSH连接

如果使用自托管代理,在代理机器上执行带 verbose 参数的SSH命令,模拟Pipeline的连接场景:

ssh -i /path/to/key username@server-ip -v

通过输出的详细日志定位与Pipeline相同的故障点。

三、额外排查方向:SSH算法兼容性

Ubuntu 22.04默认禁用了部分旧SSH算法,若Pipeline使用的SSH客户端版本较旧,可能存在算法不兼容。可临时在sshd_config中启用旧算法测试:

KexAlgorithms +diffie-hellman-group1-sha1
Ciphers +aes128-cbc,3des-cbc

重启SSH后测试,若能连接,再逐步调整为安全的算法组合。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 18:28:01