2013-03-26 36 views
3

我正在使用“mavenDeployer”在“uploadArchives”任务中使用ssh/scp, 与无人机ssh实用程序。gradle maven ssh

而不是编码密码到build.gradle,我想依靠正确的SSH设置。具体而言,我希望让用户指定他们的私钥,并在其环境中加载该私钥(ssh-agent,ssh-add等)。 Maven回购共享用户ID为 ,所有真实用户的.pub密钥都已正确添加到共享用户ID的“authorized_keys”文件 中。

虽然行家/蚂蚁似乎有一种“专用密钥”属性,以及摇篮DSL 接受它,它似乎没有任何效果,当我将它设置:

 mavenDeployer { 
      configuration = pr.configurations.publishJars 
      String keyFile = System.properties["user.mavenKey"] 
      repository(url: "scp://maven.company.com/path/to/maven") { 
        logger.info("Using SSH key: ${keyFile}") 
        authentication(userName: "maven", privateKey: keyFile) 
      } 

如果我的代码根据gradle文档中的示例,实际密码为 ,它确实有效,所以我知道事情正在发挥作用。另外,将privateKey 更改为privatekey(全部小写)会导致属性错误,所以我知道 属性存在并且在某个级别上被识别。

而且我知道SSH密钥本身的工作:

% ssh -i ~/.ssh/mavenKey [email protected] ls/
    [ no errors, output trimmed ] 

但是当我运行它,我得到提示共享用户ID的密码:

% gradle uploadArchives 
    [... stuff ...] 
    Using SSH key: /homes/klash/.ssh/mavenKey 
    Password for [email protected]: 

正如你所看到的,它是不是提示输入密钥的密码。

+0

'使用SSH密钥:/ homes/klash/.ssh/mavenKey'您的系统属性中没有拼写错误吗?应该可能是'/ home/klash/...' – 2013-03-26 08:13:45

+0

不,没有错别字。我们的家庭装备通过自动安装,典型的大型科技公司设置在NFS上。我已经四重检查了通过什么是SSH私钥的正确路径。 – Klash 2013-03-26 20:07:24

+0

无法看到您的代码的任何问题,我基本上做同样的事情没有问题。你正在使用哪个gradle版本?你是否试过用'-d'标志运行(它会产生很多输出,但在试图理解发生的事情时可能会有所帮助)。另一件事;你提到了ssh口令 - 你的口令是否需要这样的口令?这与我的测试有所不同,因为我的SSH私钥没有密码。 – Steinar 2013-03-28 23:01:43

回答

0

确保您的私钥不需要密码短语。
您可以使用ssh [email protected]从命令行访问远程,而不需要提示输入密码吗?
如果不使用ssh-copy-id将您的公钥发送到服务器。