使用Maven deploy-file重复密码提示到scp存储库

时间:2010-09-02 11:12:49

标签: maven-2 deployment scp

我正在尝试将工件部署到可通过scp访问的远程存储库,并且遇到重复密码提示问题。我的settings.xml包含这个片段:

<servers>
    <server>
        <id>example.com</id>
        <username>myusername</username>
        <password>mypassword</password>
        <filePermissions>664</filePermissions>
        <directoryPermissions>775</directoryPermissions>
        <configuration>
        </configuration>
    </server>
</servers>

命令行交互如下所示:

$ mvn deploy:deploy-file -Dfile=ojdbc6.jar -DgroupId=com.oracle -DartifactId=ojdbc6 -Dpackaging=jar -Dversion=11.2.0.1.0 -DrepositoryId=example.com -Durl=scp://example.com/maven2/
[INFO] Scanning for projects...
[INFO] Searching repository for plugin with prefix: 'deploy'.
[INFO] ------------------------------------------------------------------------
[INFO] Building Maven Default Project
[INFO]    task-segment: [deploy:deploy-file] (aggregator-style)
[INFO] ------------------------------------------------------------------------
[INFO] [deploy:deploy-file {execution: default-cli}]
Keyboard interactive required, supplied password is ignored
Password: : mypassword
Uploading: scp://example.com/maven2//com/oracle/ojdbc6/11.2.0.1.0/ojdbc6-11.2.0.1.0.jar
2061K uploaded  (ojdbc6-11.2.0.1.0.jar)
[INFO] Retrieving previous metadata from example.com
Keyboard interactive required, supplied password is ignored
Password: : mypassword
[INFO] repository metadata for: 'artifact com.oracle:ojdbc6' could not be found on repository: example.com, so will be created
[INFO] Uploading repository metadata for: 'artifact com.oracle:ojdbc6'
Keyboard interactive required, supplied password is ignored
Password: : mypassword
[INFO] Uploading project information for ojdbc6 11.2.0.1.0
Keyboard interactive required, supplied password is ignored
Password: : mypassword
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESSFUL
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 30 seconds
[INFO] Finished at: Thu Sep 02 13:03:33 CEST 2010
[INFO] Final Memory: 5M/90M
[INFO] ------------------------------------------------------------------------

这里有几个问题:

  1. 即使在settings.xml
  2. 中指定了密码,我也会被提示输入密码
  3. 密码在控制台上回显
  4. 它不记得密码,而是要求我4次。
  5. 如何配置maven,以便它使用来自settings.xml的密码或者问我一次而不会将我的密码回显到屏幕上?

    编辑:这是在Ubuntu linux上,一位同事刚刚在Windows XP上重现了同样的问题。由于在Windows上安装存储库到本地路径不是一个选项,我仍然在寻找解决方案。

7 个答案:

答案 0 :(得分:3)

我在maven-users列表中找到了以下内容:

服务器上的sshd使用了PasswordAuthentication no。后 切换到yes我的maven配置工作正常。

答案 1 :(得分:0)

您是否在pom中设置repositoryId以使用settings.xml中的正确服务器条目,因为它看起来好像没有设置它所以它使用id:remote-repository。或者您是否相应地更改了settings.xml。

答案 2 :(得分:0)

作为一种解决方法,我目前正在使用sshfs挂载远程存储库,然后在maven命令中使用文件URL:

$ sudo adduser jh fuse
$ sudo mkdir -p /mnt/example.com/maven2
$ sudo chown -R jh:jh /mnt/example.com
$ sshfs username@example.com:/maven2 /mnt/example.com/maven2
$ mvn deploy:deploy-file -Dfile=ojdbc6.jar -DgroupId=com.oracle -DartifactId=ojdbc6 -Dpackaging=jar -Dversion=11.2.0.1.0 -Durl=file:///mnt/example.com/maven2/repository/

在这种情况下不需要在settings.xml中配置服务器,不需要在命令行上指定repositoryId,我可以在文件URL上使用shell自动完成。

如果有人可以使用maven标准重现问题或建议解决方案,我仍然会感兴趣。

答案 3 :(得分:0)

我没有确切的解决方案,但至少以下工作:

在〜/ .m2 / settings.xml文件中创建一个服务器条目:

<server>
  <id>example-dist</id>
  <username>myusername</username>
  <password>ignored</password>
</server>

执行deploy或deploy:deploy-file,如下所示:

mvn deploy -DrepositoryId=example-dist

系统会要求您提供所提供用户名的密码 - 将忽略settings.xml中的密码。

如果您不想每次都提供密码,可以使用ssh-keygen生成一个ssh密钥。生成的公钥必须存储在分发服务器的authorized_keys文件中(有关更好的解释,请参阅Web或手册页上的几个教程)。

答案 4 :(得分:0)

我们已经安装了Nexus作为存储库管理器,并使用Web界面上传第三方jar。

答案 5 :(得分:0)

这个错误似乎有关系。 http://jira.codehaus.org/browse/WAGON-323 我收到消息“需要键盘交互,忽略提供的密码” - 即使使用wagon-ssh-2.4。 试图设置<interactiveMode>false</interactiveMode>,然后auth立即失败。

答案 6 :(得分:0)

根据@Gerbrand的回复,您可以跳过通过ssh密钥提供用户凭据的操作。步骤如下:

  1. 如果还没有,请使用ssh-keygen生成一个私钥/公钥对。假设您将私钥存储在/home/user/.ssh/id_rsa

  2. 使用ssh-copy-id -i /home/user/.ssh/id_rsa USER@serverhostname

  3. 将公钥复制到目标服务器
  4. 更改您的settings.xml以使用密钥代替密码

    <server>
        <id>serverhostname</id>
        <username>USER</username>
        <privateKey>${user.home}/.ssh/id_rsa</privateKey>
        <!-- Note there is no password tag specified -->
    </server>
    

下次您需要通过Maven登录服务器时,将不需要输入密码。