代码之家  ›  专栏  ›  技术社区  ›  Jörn Horstmann

Maven deploy file to scp repository的重复密码提示

  •  3
  • Jörn Horstmann  · 技术社区  · 15 年前

    我试图将一个工件部署到一个可以通过scp访问的远程存储库中,但遇到了重复密码提示的问题。我的设置.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. 系统会提示我输入密码,即使在设置.xml
    2. 密码会回显到控制台上
    3. 它不记得密码,而是问了我4次。

    如何配置maven,使其使用设置.xml或者只问我一次而不把我的密码回复到屏幕上?

    这是在ubuntulinux上,一个同事刚刚在windowsxp上重现了同样的问题。由于在Windows上无法将存储库装载到本地路径,因此我仍在寻找解决方案。

    7 回复  |  直到 15 年前
        1
  •  3
  •   Echilon Mafarnakus    13 年前

    我在maven用户列表中发现了以下内容:

    使用的服务器上的sshd PasswordAuthentication no . 之后 yes 我的maven配置工作正常。

        2
  •  0
  •   khmarbaise    15 年前

    你定好了吗 repositoryId 在pom中使用设置.xml,因为看起来您没有设置它,所以它使用id:remote repository。还是你改变了主意设置.xml相应地。

        3
  •  0
  •   Jörn Horstmann    15 年前

    作为一种解决方法,我目前正在使用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/
    

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

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

        4
  •  0
  •   Jörn Horstmann    14 年前

    我们已经安装了 Nexus 作为一个存储库管理者,他们正在使用web界面上传第三方jar。

        5
  •  0
  •   Brock Adams    13 年前

    在文件~/.m2中创建一个服务器条目/设置.xml:

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

    执行部署或部署:将文件部署为跟随:

    mvn deploy -DrepositoryId=example-dist
    

    系统将要求您输入所提供用户名的密码,即设置.xml被忽略。

        6
  •  0
  •   FelixJongleur42    12 年前

    这个错误似乎是相关的。 http://jira.codehaus.org/browse/WAGON-323 试图设置 <interactiveMode>false</interactiveMode> 但是auth马上就失败了。

        7
  •  0
  •   DiegoAlfonso    7 年前

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

    1. 如果您还没有私钥/公钥,请使用 ssh-keygen /home/user/.ssh/id_rsa

    2. 将公钥复制到目标服务器 ssh-copy-id -i /home/user/.ssh/id_rsa USER@serverhostname

    3. 改变你的想法 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登录到服务器时,将不需要密码。

    推荐文章