Prompt de senha repetida com o Maven Deploy-File to SCP Repository
-
26-09-2019 - |
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:
- Sou solicitado uma senha, mesmo que seja especificada nas configurações.xml
- A senha é ecoada de volta no console
- 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.
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:
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
Copie a chave pública para o servidor de destino com
ssh-copy-id -i /home/user/.ssh/id_rsa USER@serverhostname
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.