我无法使用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连接,我的配置出了什么问题?
答案 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