我使用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