3

我正在尝试将工件部署到可通过 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 次。

如何配置 maven,以便它使用来自 settings.xml 的密码或询问我一次而不将我的密码回显到屏幕上?

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

4

7 回答 7

3

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

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

于 2012-10-31T13:38:15.067 回答
0

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

于 2010-09-02T11:25:28.483 回答
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 标准提出解决方案,我仍然会感兴趣。

于 2010-09-04T10:44:42.200 回答
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 文件中(为了更好的解释,请参阅网络上的几个教程或手册页)。

于 2010-10-08T09:00:29.130 回答
0

此后,我们将Nexus安装为存储库管理器,并使用 Web 界面上传第三方 jar。

于 2011-02-07T22:18:40.337 回答
0

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

于 2013-05-29T11:15:36.980 回答
0

根据@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 登录服务器时,将不需要密码。

于 2018-08-17T15:04:37.543 回答