Estou clonando um repositório git em um script como este:
git clone https://user:[email protected]/name/.git
Isso funciona, mas meu nome de usuário e minha senha! agora são armazenados no URL de origem .git/config
.
Como posso evitar isso, mas ainda faço isso em um script (para que não haja entrada manual de senha)?
git remote set-url origin https://host.com/name/.git
Respostas:
O método que eu uso é realmente usar um em
git pull
vez de um clone. O script ficaria assim:Isso não armazenará seu nome de usuário ou senha
.git/config
. No entanto, a menos que outras etapas sejam tomadas, o nome de usuário e a senha em texto sem formatação serão visíveis enquanto o processo estiver sendo executado a partir de comandos que mostram os processos atuais (por exemplops
).Outra sugestão que eu faria (se você não pode usar o ssh) é realmente usar um token OAuth em vez de nome de usuário / senha em texto sem formatação, pois é um pouco mais seguro. Você pode gerar um token OAuth a partir das configurações do seu perfil: https://github.com/settings/tokens .
Então, usando esse token, o comando pull seria
fonte
ps
enquanto o pull for executado (pelo menos, a menos que você impeça os usuários de ver os processos uns dos outros)Na IMO, a melhor solução é usar um
GIT_ASKPASS
auxiliar personalizado e entregar a senha como outra variável de ambiente. Por exemplo, crie um arquivogit-askpass-helper.sh
como:e, em seguida, execute
git clone https://username@hostname/repo
com variáveis de ambienteGIT_ASKPASS=/path/to/git-askpass-helper.sh
eGIT_PASSWORD=nuclearlaunchcodes
.Isso tem a vantagem de que a senha também não estará visível na lista de processos.
fonte
git pull
solução e permitirá que você armazene a senha de texto sem formatação como um segredo na sua ferramenta de implantação automatizada de sua escolha.Você pode inserir seus creds de conexão no seu
~/.netrc
arquivo. Algo ao longo das linhas de:Apenas certifique-se de chmod esse arquivo para 600. Se você estiver usando o Windows, o seguinte link pode ser útil: https://stackoverflow.com/questions/6031214/git-how-to-use-netrc-file-on- windows-to-save-user-and-password
Pessoalmente, tenho a tendência de usar chaves SSH para fins de autenticação (se for permitido, é claro).
fonte
Depois de revisar dezenas de posts, blogs, etc., experimentei todos os métodos, e foi isso que eu criei. Abrange tudo.
Consulte a Cheatsheet de credenciais e pacotes particulares do Git
Essas são todas as formas e ferramentas pelas quais você pode autenticar com segurança o git para clonar um repositório sem um prompt de senha interativo .
Melhores opções para nenhum armazenamento de texto sem formatação
Do que é solicitado aqui, SSH Keys,
GIT_ASKPASS
ougit credential store
usar o gerenciador de chaves do SO pode ser a melhor opção.Como GIT_ASKPASS é provavelmente o menos compreendido dos 3, detalharei isso aqui - e os outros estão na folha de dicas.
GIT_ASKPASS
Como criar um
GIT_ASKPASS
script:Como usá-lo:
O script recebe stdin na forma de:
O script recebe ENVs do Git, como:
Mais detalhes na folha de dicas .
fonte