Criptografia de senha segura no Maven

O Maven permite que você crie e armazene senhas criptografadas para usar na autenticação automática do servidor:

# Create an encrypted master password, to be stored in ~/.m2/settings-security.xml
$ mvn
-emp foobar
{+uIIU4cDH3oHt0uEY0nU9nAHrytSmxEyhnmU60G0YSI=}

# Create an encrypted password, to be used in ~/.m2/settings.xml
$ mvn
-ep barfoo
{f31+d128wDQBsc2Z7oS0/Gby5/2SzDaM1jskjL6JOJO=}

Embora a operação acima seja rápida e fácil, a principal desvantagem disso é que você deve inserir a senha como parte do comando. Coisas como o buffer de rolar para trás do shell ou o histórico podem mantê-los em texto simples, expondo-os a olhos maliciosos.

Uma maneira de evitar esse problema de segurança é envolver a criptografia de senha em um pequeno script de shell que solicitará que você insira uma senha e, em seguida, passe-a ao maven, ho prejudicial echo ou histórico envolvido. Aqui está um exemplo:

#!/bin/bash

##
## Encrypt your maven password without leaving any trace in the shell history
##
## Carlo Sciolla skuro@skuro.tk
## v1 - 20131205
##

MVN
=`which mvn`
OUT
="pass> "

read
-s -p "$OUT" PASS
mvn
-ep "$PASS"

A parte principal do script acima é a readinvocação, que usa -spara desabilitar o eco e -pdefinir um prompt personalizado. A senha será temporariamente armazenada na PASSvariável e usada pelo maven.

Aqui está um exemplo de execução do script acima:

$ mvnep
pass
> {nGevxp+6Oz8HWVfyHbqz1sGvtNEE10skAbFn6un0tPc=}