" USERAUTH失败"使用带有标识的gradle-ssh-plugin

时间:2015-10-17 01:46:34

标签: ssh gradle private-key gradle-plugin

我无法使用Gradle SSH Plugin使用我的私钥连接到SSH主机。

build.gradle中指定密码可以正常工作:

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

但是为了避免在构建文件中写入密码,我设置了我的环境以使用我的私钥进行连接,而无需从shell输入密码:

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连接,我的配置出了什么问题?

2 个答案:

答案 0 :(得分:11)

我通过添加agent = true属性来修复此问题:

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

代理商 - 如果设置了此选项,将使用Putty Agent或ssh-agent   认证

有关详细信息:Connections settings

我在分析了课程UserAuthPublicKey之后尝试了这个属性:

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

答案 1 :(得分:2)

我认为JCraft仅支持PEM密钥-生成密钥时,您需要指定格式:

ssh-keygen -t rsa -m PEM