【问题标题】:Repeated password prompt with Maven deploy-file to scp repository使用 Maven 部署文件到 scp 存储库的重复密码提示
【发布时间】:2010-09-02 11:12:49
【问题描述】:

我正在尝试将工件部署到可通过 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 上无法将存储库安装到本地路径,因此我仍在寻找解决方案。

【问题讨论】:

  • 一定会喜欢那些 oracle 版本号...ojdbc6-11.2.0.1.0.jar。 .....我真的很期待java版本7.0.0.1.0
  • 5 年后,我遇到了同样的错误:有什么解决办法吗?

标签: maven-2 deployment scp


【解决方案1】:

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

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

【讨论】:

  • 它对我有用。然后,我使用 'sudo /etc/init.d/sshd restart' 来应用效果。
【解决方案2】:

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

【讨论】:

  • 我没有 pom,因为这是我下载的外部工件。 repositoryId 在命令行中通过-DrepositoryId=example.com 指定。 maven 似乎使用了服务器设置,因为它不要求我输入我的用户名,该用户名仅在 settings.xml 中设置。
【解决方案3】:

作为一种解决方法,我目前正在使用 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 标准提出解决方案,我仍然会感兴趣。

【讨论】:

    【解决方案4】:

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

    【讨论】:

      【解决方案5】:

      我没有确切的解决方案,但至少以下方法可行:

      在文件~/.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 文件中(要获得更好的解释,请参阅网络上的几个教程或手册页)。

      【讨论】:

        【解决方案6】:

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

        【讨论】:

          【解决方案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 登录服务器时,不需要密码。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2012-07-09
            • 1970-01-01
            • 2017-08-10
            • 1970-01-01
            • 2018-02-24
            • 2014-11-02
            • 1970-01-01
            相关资源
            最近更新 更多