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

Azure DevOps集成SonarQube遇端口9443连接失败求助

SonarQube与Azure DevOps集成的连接问题排查与解决

问题场景

尝试将SonarQube与Azure DevOps集成时,Azure流水线抛出连接错误:

Connection to sonarqube.abc.com on port 9443 failed: Exception calling ".ctor" with "2" argument(s): "A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond 194.132.xx.xx:9443"

环境现状

  • 在RDP服务器内部,可通过Nginx反向代理访问https://sonarqube.abc.com:9443(对应IP:194.132.xx.xx)
  • 外部无法访问该地址,但外部执行ping sonarqube.abc.com能解析到正确IP 194.132.xx.xx

Azure流水线配置片段

variables:
  sonarqubeHost: "sonarqube.abc.com"
stages:
- stage: checkout  #Checkout the repository
  displayName: Checkout
  jobs:
    - job: checkoutJob
      displayName: Checkout Source Code
      steps:
        - checkout: self

- stage: PrepareAnalysis
  dependsOn: Checkout
  jobs:
  - job: SonarQubePrepare
    displayName: 'Prepare SonarQube Analysis'
    steps:
    - task: PowerShell@2
      displayName: 'Check DNS resolution for SonarQube server'
      inputs:
        targetType: inline
        script: |
          $server = $env:sonarqubeHost
          try {
            $ip = [System.Net.Dns]::GetHostAddresses($server)
            Write-Output "DNS resolution succeeded: $server resolved to $($ip.IPAddressToString)"
          } catch {
            Write-Output "DNS resolution failed: $_"
            exit 1
          }
    - task: PowerShell@2
      displayName: 'Check connectivity to SonarQube server'
      inputs:
        targetType: inline
        script: |
          $server = $env:sonarqubeHost
          $port = 9443
          try {
            $connection = New-Object System.Net.Sockets.TcpClient($server, $port)
            Write-Output "Connection to $server on port $port succeeded."
            $connection.Close()
          } catch {
            Write-Output "Connection to $server on port $port failed: $_"
            Write-Output "Attempting Test-NetConnection for more details..."
            Test-NetConnection -ComputerName $server -Port $port
            exit 1
          }

流水线任务输出

  • 任务: 'Check DNS resolution for SonarQube server'
    输出: DNS resolution succeeded: sonarqube.abc.com resolved to 194.132.xx.xx
  • 任务: 'Check connectivity to SonarQube server'
    输出:

    Connection to sonarqube.abc.com on port 9443 failed: Exception calling ".ctor" with "2" argument(s): "A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond 194.132.xx.xx:9443"
    Attempting Test-NetConnection for more details...
    WARNING: TCP connect to (194.132.xx.xx : 9443) failed
    WARNING: Ping to 194.132.xx.xx failed with status: TimedOut

可能的问题及解决方法

1. 防火墙/安全组限制端口9443的外部访问

  • 问题分析: 内部RDP能访问但外部(包括Azure DevOps代理)无法连接,大概率是SonarQube服务器所在的网络防火墙、云安全组未开放9443端口给Azure DevOps代理的IP范围。Ping超时也说明ICMP包被拦截,验证了防火墙规则的限制。
  • 解决步骤:
    • 检查SonarQube服务器的本地防火墙(Windows防火墙/Linux iptables),添加允许Azure DevOps代理IP访问9443端口的TCP入站规则。
    • 若为云环境(如Azure VM),检查对应网络安全组(NSG),添加允许Azure DevOps服务IP范围(或代理池出站IP)访问9443端口的入站规则。
    • 若使用Nginx反向代理,需确保Nginx所在服务器的9443端口同样对外开放。

2. Nginx反向代理配置问题

  • 问题分析: 内部可访问但外部不行,可能是Nginx监听地址、端口映射或域名配置错误,导致外部请求无法正确转发到SonarQube服务。
  • 解决步骤:
    • 检查Nginx配置文件,确认listen指令设置为0.0.0.0:9443(监听所有网卡),而非仅内部IP(如127.0.0.1:9443或内网IP)。
    • 验证server_name是否匹配sonarqube.abc.com,SSL证书配置无误(若使用HTTPS)。
    • 执行nginx -t检查配置语法,重启Nginx生效:systemctl restart nginx(Linux)或对应Windows重启命令。

3. Azure DevOps代理网络环境限制

  • 问题分析: 若使用Microsoft托管代理,其运行在Azure公共网络;若为自托管代理,需确认代理所在网络能否访问SonarQube的9443端口。
  • 解决步骤:
    • 微软托管代理:确保SonarQube服务器网络允许Azure公共IP范围访问9443端口。
    • 自托管代理:检查代理机器的防火墙是否允许访问9443端口,或是否需要通过企业VPN/代理服务器访问内部资源。

4. SonarQube服务绑定地址限制

  • 问题分析: 若SonarQube仅绑定内部IP(如127.0.0.1或内网IP),即使Nginx监听外部端口,SonarQube也无法响应外部请求。
  • 解决步骤:
    • 修改SonarQube配置文件(sonar.properties),设置sonar.web.host=0.0.0.0(允许所有网卡访问),重启SonarQube服务。
    • 验证SonarQube是否监听0.0.0.0:9000(默认端口,若Nginx转发至此),执行netstat -ano | findstr 9000(Windows)或ss -tulpn | grep 9000(Linux)确认。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 09:52:03