在 ssh 上使用 svn 时,SCM 传感器失败并显示 E170001

SCM Sensor fails with E170001 when using svn over ssh

自从声纳切换到使用 SVNKit 后,我​​无法使用 svn+ssh 对工作副本进行 blame 分析。它失败了:

[ERROR] Failed to execute goal org.codehaus.mojo:sonar-maven-plugin:2.5:sonar (default-cli) on project example: Error when executing blame for file src/main/java/com/acme/Foo.java: svn: E170001: Authentication required for 'svn@svn+ssh://svn.acme.com' 

svn 命令在从命令行调用时正常工作,也连接到 ssh svn@svn.acme.com 成功。 我在 Eclipse 中将 SVNKit 与此存储库一起使用,它也可以正常工作(尽管我必须告诉它在哪里寻找私钥)。

当我尝试调试声纳 运行ner 执行时,我看到私钥根本没有设置:

myPreviousAuthentication    SVNSSHAuthentication  (id=392)  
    myAgentProxy    null    
    myIsPartial false   
    myIsStorageAllowed  false   
    myKind  "svn.ssh" (id=387)  
    myPassphrase    null    
    myPassword  (id=608)    
    myPortNumber    -1  
    myPrivateKeyFile    null    
    myPrivateKeyValue   null    
    myURL   SVNURL  (id=345)    
    myUserName  "jbochenski" (id=610)   
myPreviousErrorMessage  SVNErrorMessage  (id=388)   
    dontShowErrorCode   false   
    myChildErrorMessage null    
    myErrorCode SVNErrorCode  (id=614)  
    myMessage   "Credentials rejected by SSH server." (id=613)  
    myObjects   Object[0]  (id=616) 
    myThrowable null    
    myType  0   

URL、用户名和密码都是正确的,但是如您所见myPrivateKeyFilenull

我试过按照SVNKit documentationMAVEN_OPTS='-Dsvnkit.ssh2.key=/home/acme/.ssh/id_rsa'设置私钥路径,但没有效果。

如果 运行 这在另一个工作副本上通过 https 签出,则分析工作正常,进一步确认这是 ssh 身份验证的问题。

这确实是一个缺失的功能。我创建了以下票证:https://jira.sonarsource.com/browse/SONARSCSVN-9

您介意测试一下这个更新版本的插件吗: https://github.com/SonarSource/sonar-scm-svn/releases/download/1.3-rc1/sonar-scm-svn-plugin-1.3-SNAPSHOT.jar

您应该可以传递额外的参数(或在 UI 中设置它们):

-Dsonar.svn.privateKeyPath=<path to private key>
-Dsonar.svn.passphrase.secure=<optional passphrase>

直接在pull request中报告任何sucess/issue不要污染SO: https://github.com/SonarSource/sonar-scm-svn/pull/4