Pergunta

Estou tentando implantar um artefato em um repositório remoto acessível via SCP e tendo um problema com solicitações de senha repetidas. My Settings.xml contém este fragmento:

<servers>
    <server>
        <id>example.com</id>
        <username>myusername</username>
        <password>mypassword</password>
        <filePermissions>664</filePermissions>
        <directoryPermissions>775</directoryPermissions>
        <configuration>
        </configuration>
    </server>
</servers>

A interação da linha de comando se parece com a seguinte:

$ 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] ------------------------------------------------------------------------

Existem vários problemas aqui:

  1. Sou solicitado uma senha, mesmo que seja especificada nas configurações.xml
  2. A senha é ecoada de volta no console
  3. Não se lembra da senha e, em vez disso, me pede 4 vezes.

Como posso configurar o maven, ele usa uma senha do Settings.xml ou me pergunta uma vez sem ecoar minha senha para a tela?

Editar: Isso foi no Ubuntu Linux, um colega acabou de reproduzir o mesmo problema no Windows XP. Como montar o repositório para um caminho local não é uma opção no Windows, ainda estou procurando uma solução.

Foi útil?

Solução 4

Desde então, instalamos Nexo como gerente de repositório e está usando a interface da web para fazer upload de frascos de terceiros.

Outras dicas

Encontrei o seguinte na lista dos usuários do Maven:

o sshd no servidor usado PasswordAuthentication no. Depois de mudar para yes Minha configuração MAVEN funciona bem.

Você definiu o RepositoryID No seu POM para usar a entrada correta do servidor no Settings.xml, porque parece que você não define isso para que ele use o ID: Remote-Repository. ou você mudou o Settings.xml de acordo.

Como solução alternativa, atualmente estou montando o repositório remoto usando o SSHFS e, em seguida, usando um URL de arquivo no comando maven:

$ 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/

Configurando o servidor em configurações.xml Não é necessário neste caso, o repositoryID não precisa ser especificado na linha de comando e posso usar a conclusão automática do shell no URL do arquivo.

Eu ainda estaria interessado se alguém pudesse reproduzir o problema ou sugerir uma solução usando padrões MAVEN.

Não tenho uma solução exata, mas pelo menos os seguintes trabalhos:

Crie uma entrada do servidor no arquivo ~/.m2/Settings.xml:

<server>
  <id>example-dist</id>
  <username>myusername</username>
  <password>ignored</password>
</server>

Execute a implantação ou implantação: Deploy-File da seguinte forma:

mvn deploy -DrepositoryId=example-dist

Você será solicitado a senha do nome de usuário fornecido - a senha no Settings.xml é ignorada.

Se você não deseja fornecer senhas a cada vez, pode fazê-lo gerado por uma tecla SSH usando SSH-keygen. A chave pública gerada que você terá que armazenar nos arquivos Authorized_Keys no servidor de distribuição (para uma melhor explicação, consulte vários tutoriais na página da Web ou Man).

Este bug parece relacionado.http://jira.codehaus.org/browse/wagon-323Estou recebendo a mensagem "Necessário interativo do teclado, a senha fornecida é ignorada"-mesmo com o Wagon-SSH-2.4. Tentou definir <interactiveMode>false</interactiveMode> Mas então a AUTH falha imediatamente.

De acordo com a resposta de @Gerbrand, você pode pular fornecendo credenciais de usuário com teclas SSH. As etapas são as seguintes:

  1. Se você ainda não tem um, gerar um par de chaves públicas/privadas com ssh-keygen. Digamos que você guarde a chave privada em /home/user/.ssh/id_rsa

  2. Copie a chave pública para o servidor de destino com ssh-copy-id -i /home/user/.ssh/id_rsa USER@serverhostname

  3. Mudar seu settings.xml Para usar suas chaves em vez de senha

    <server>
        <id>serverhostname</id>
        <username>USER</username>
        <privateKey>${user.home}/.ssh/id_rsa</privateKey>
        <!-- Note there is no password tag specified -->
    </server>
    

Da próxima vez que você precisar fazer login no servidor via Maven, nenhuma senha será solicitada.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top