2010-05-09 7 views
10

Estoy usando SSH para implementar mis artefactos de Java en un servidor. Tengo las claves configuradas para que pueda interactivamente SSH al servidor sin necesidad de una contraseña, pero cuando intento ejecutar los comandos "mvn deploy" o "mvn release:perform", se bloquea (en lo que supongo que es la solicitud de contraseña).Maven no usará la clave pública para implementar

Mi archivo ~/.m2/settings.xml contiene el nombre de usuario del servidor (porque es diferente de mi nombre de usuario local) y hace referencia al id del servidor que requiere el usuario diferente.

Respuesta

8

¿Estás seguro de que tu settings.xml ofrece todo lo necesario? ¿Declaraste tu privateKey (y passphrase si es necesario)? Algo como esto:

<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> 
+0

Necesitaba el elemento . ¡Esto es bastante decepcionante! ¿Por qué no leerá la contraseña de mi llavero Ubuntu al igual que mvn? – magneticMonster

5

En su sección distributionManagement, trate de usar "scpexe: //" en su URL en lugar de "SCP: //".

Esto llama al programa scp estándar (suponiendo que esté en su ruta), en lugar de utilizar la implementación Java de scp que está incorporada en Maven. El scp estándar usa ssh-agent (que, en Ubuntu, se inicia automáticamente al iniciar sesión a través de GDM) para la autenticación de clave pública.

+1

También necesita usar 'wagon-ssh-external' en ese caso. –

Cuestiones relacionadas