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

Azure DevOps SSH连接VM失败:无匹配密钥交换算法求助

解决Azure DevOps SSH服务连接握手失败(无匹配密钥交换算法)问题

问题原因

Azure DevOps流水线使用的SSH客户端支持的密钥交换(Kex)算法集合,与目标虚拟机SSH服务端当前允许的算法不匹配。本地Putty/OpenSSH客户端会自动协商匹配的算法,但Azure DevOps的SSH客户端库默认算法范围较窄,导致握手失败。即使你未主动修改配置,虚拟机的OpenSSH服务可能通过系统自动更新调整了默认允许的算法列表(比如禁用了部分旧版不安全算法)。

解决方案

方案1:调整虚拟机SSH服务端的密钥交换算法

  1. 登录目标虚拟机,编辑SSH服务配置文件:
    sudo nano /etc/ssh/sshd_config
    
  2. 添加或修改KexAlgorithms配置项,包含Azure DevOps客户端支持的常见算法:
    KexAlgorithms curve25519-sha256@libssh.org,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman-group14-sha256,diffie-hellman-group16-sha512,diffie-hellman-group18-sha512
    
  3. 重启SSH服务使配置生效:
    # 适用于systemd系统(如Ubuntu 16.04+、CentOS 7+)
    sudo systemctl restart sshd
    # 适用于非systemd系统
    sudo service ssh restart
    

方案2:在Azure DevOps SSH服务连接中指定密钥交换算法

  1. 进入Azure DevOps项目的项目设置 > 服务连接,找到目标SSH服务连接并编辑。
  2. 展开高级选项,在SSH额外参数中添加强制使用的密钥交换算法参数,例如:
    -o KexAlgorithms=curve25519-sha256@libssh.org
    
    注:这里的算法需是你的虚拟机服务端已允许的,可以通过在本地执行ssh -Q kex查看本地客户端支持的算法,选择其中与服务端匹配的项

验证

修改完成后,重新运行Azure DevOps流水线,检查SSH连接任务是否正常执行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 14:54:24