Search code examples
sshgradleprivate-keygradle-plugin

"USERAUTH fail" using gradle-ssh-plugin with identity


I can't connect to a SSH host using the Gradle SSH Plugin with my private key.

Specifying the password in the build.gradle works fine:

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

But to avoid writing my password in the build file, I've set my environment to connect using my private key without entering the password from shell:

ssh <user>@<ip>

This command works from the shell but I can't achieve this with the Gradle plugin. This is my configuration:

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

The error is:

Caused by: com.jcraft.jsch.JSchException: USERAUTH fail at com.jcraft.jsch.UserAuthPublicKey.start(UserAuthPublicKey.java:119)

Since I'm able to connect from the shell, what's wrong with my configuration?


Solution

  • I fixed this by adding the agent = true property:

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

    agent - If this is set, Putty Agent or ssh-agent will be used on authentication

    For more information: Connections settings

    I tried this property after analyzing the class UserAuthPublicKey:

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