我正在尝试将工件部署到可通过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] ------------------------------------------------------------------------
这里有几个问题:
如何配置maven,以便它使用来自settings.xml的密码或者问我一次而不会将我的密码回显到屏幕上?
编辑:这是在Ubuntu linux上,一位同事刚刚在Windows XP上重现了同样的问题。由于在Windows上安装存储库到本地路径不是一个选项,我仍然在寻找解决方案。
答案 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密钥提供用户凭据的操作。步骤如下:
如果还没有,请使用ssh-keygen
生成一个私钥/公钥对。假设您将私钥存储在/home/user/.ssh/id_rsa
使用ssh-copy-id -i /home/user/.ssh/id_rsa USER@serverhostname
更改您的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登录服务器时,将不需要输入密码。