我使用SSH将我的Java构件部署到服务器。我设置了密钥,这样我就可以交互地SSH连接服务器而不需要密码,但是当我尝试运行“mvn deploy
”或“mvn release:perform
”命令时,它挂起(我认为是密码提示)。Maven不会使用公钥部署
我的~/.m2/settings.xml
文件包含服务器的用户名(因为它与我的本地用户名不同),并引用需要不同用户的服务器的id
。
我使用SSH将我的Java构件部署到服务器。我设置了密钥,这样我就可以交互地SSH连接服务器而不需要密码,但是当我尝试运行“mvn deploy
”或“mvn release:perform
”命令时,它挂起(我认为是密码提示)。Maven不会使用公钥部署
我的~/.m2/settings.xml
文件包含服务器的用户名(因为它与我的本地用户名不同),并引用需要不同用户的服务器的id
。
您确定您的settings.xml
提供了所需的一切吗?你是否声明你的privateKey
(如果有必要,还有passphrase
)?例如:
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0
http://maven.apache.org/xsd/settings-1.0.0.xsd">
...
<servers>
<server>
<id>server001</id>
<username>my_login</username>
<privateKey>${user.home}/.ssh/id_dsa</privateKey>
<passphrase>some_passphrase</passphrase> <!-- if required -->
<filePermissions>664</filePermissions>
<directoryPermissions>775</directoryPermissions>
<configuration></configuration>
</server>
</servers>
...
</settings>
在您的distributionManagement部分中,请尝试在您的url中使用“scpexe://”而不是“scp://”。
这调用了标准的scp程序(假设它在你的路径上),而不是使用Maven内置的scp的Java实现。标准scp使用ssh-agent(在Ubuntu中,当你通过GDM登录时自动启动)用于公钥验证。
在这种情况下,您还需要使用'wagon-ssh-external'。 – 2012-09-04 20:02:49
我需要 元素。这非常令人失望!为什么它不像mvn那样从我的Ubuntu keychain中读取密码? –
magneticMonster
2010-05-09 02:03:51