2015-10-17 13 views
4

我无法使用带私钥的Gradle SSH Plugin连接到SSH主机。使用具有身份的gradle-ssh-plugin的“USERAUTH失败”

指定在build.gradle密码正常工作:

remotes { 
    webServer { 
     host = '<IP>' 
     user = '<USER>' 
     password = '<PASSWORD>' 
    } 
} 

但为了避免写我在build文件的密码,我已经把我的环境中使用我的私钥没有进入从外壳的密码连接:

ssh <user>@<ip> 

该命令在shell中工作,但我无法通过Gradle插件来实现。这是我的配置:

remotes { 
    webServer { 
     host = '<IP>' 
     user = '<USER>' 
     identity = file("${System.getProperty('user.home')}/.ssh/id_rsa") 
    } 
} 

的错误是:

产生的原因:com.jcraft.jsch.JSchException:USERAUTH失败在com.jcraft.jsch.UserAuthPublicKey.start(UserAuthPublicKey.java: 119)

由于我能够从shell进行连接,我的配置有什么问题?

回答

9

我固定这通过添加agent = true属性:

remotes { 
    webServer { 
     host = '54.233.77.171' 
     user = 'denis' 
     agent = true 
     identity = file("${System.getProperty('user.home')}/.ssh/id_rsa") 
    } 
} 

- 如果这样设置,腻子代理或ssh剂将上 认证

用于更多信息:Connections settings

我试过这个prope在分析了类别之后UserAuthPublicKey

if(userinfo==null) throw new JSchException("USERAUTH fail"); 
+4

我有同样的问题。只是为了澄清,这是起作用的原因是因为您正在使用带密码的密钥。如果您碰巧使用了无密码私钥,则不需要代理进行身份验证。 –