É possível usar um arquivo .netrc no Windows quando estou usando o Git para clonar um repositório remoto com HTTP e senha de usuário?
É possível usar um arquivo .netrc no Windows quando estou usando o Git para clonar um repositório remoto com HTTP e senha de usuário?
Respostas:
É possível usar um
.netrcarquivo no Windows?
Sim, você deve:
%HOME% (pré-Git 2.0, não é mais necessário com o Git 2.0+)_netrcarquivo%HOME%Se você estiver usando o Windows 7/10, em uma CMDsessão, digite:
setx HOME %USERPROFILE%
e o %HOME%será definido como ' C:\Users\"username"'.
Vá para essa pasta ( cd %HOME%) e crie um arquivo chamado ' _netrc'
Nota: Novamente, no Windows, você precisa de um _netrcarquivo ' ', não de um .netrcarquivo ' '.
Seu conteúdo é bastante padrão (substitua <examples>por seus valores):
machine <hostname1>
login <login1>
password <password1>
machine <hostname2>
login <login2>
password <password2>
Lucas menciona nos comentários:
Usando a versão mais recente do msysgit no Windows 7, não precisei definir a
HOMEvariável de ambiente. O_netrcarquivo só fez o truque.
Isso é realmente o que eu mencionei em " Tentando" install"o github, .sshdir not there ":
git-cmd.batincluído no msysgit define a %HOME%variável de ambiente:
@if not exist "%HOME%" @set HOME=%HOMEDRIVE%%HOMEPATH%
@if not exist "%HOME%" @set HOME=%USERPROFILE%
爱国者 acredita nos comentários que "parece que não funcionará para o protocolo http"
No entanto, eu respondi que netrcé usado por curle funciona para o protocolo HTTP, como mostrado neste exemplo (procure por ' netrc' na página):. Também usado com o protocolo HTTP aqui: " _netrc/ .netrcalternativa paracURL ".
Uma armadilha comum com netrc suporte no Windows é que o git ignorará o uso se uma URL https de origem especificar um nome de usuário.
Por exemplo, se o seu .git/config arquivo contiver:
[origem remota]
buscar = + refs / heads / *: refs / remotes / origin / *
url = https: //bob@code.google.com/p/my-project/
O Git não resolverá suas credenciais via _netrc, para corrigir isso remova seu nome de usuário, da seguinte maneira:
[origem remota]
buscar = + refs / heads / *: refs / remotes / origin / *
url = https://code.google.com/p/my-project/
Solução alternativa: Com a versão 1.7.9+ do git (janeiro de 2012): esta resposta de Mark Longair detalha o mecanismo de cache de credenciais que também permite que você não armazene sua senha em texto sem formatação, como mostrado abaixo.
Com o Git 1.8.3 (abril de 2013):
Agora você pode usar um .netrc criptografado (com gpg).
No Windows: %HOME%/_netrc( _, não ' .')
Um novo auxiliar de credencial somente leitura (pol
contrib/) para interagir com os.netrc/.authinfoarquivos foi adicionado.
Esse script permite que você use arquivos netrc criptografados com gpg , evitando o problema de ter suas credenciais armazenadas em um arquivo de texto sem formatação.
Os arquivos com a
.gpgextensão serão descriptografados pelo GPG antes da análise.
Vários-fargumentos estão OK. Eles são processados em ordem e a primeira entrada correspondente encontrada é retornada pelo protocolo auxiliar de credenciais.Quando nenhuma
-fopção for dada,.authinfo.gpg,.netrc.gpg,.authinfo, e.netrcarquivos em seu diretório home são usados nesta ordem.
Para habilitar esse auxiliar de credencial:
git config credential.helper '$shortname -f AUTHFILE1 -f AUTHFILE2'
(Observe que o Git
git-credential-acrescentará " " o nome do ajudante e o procurará no caminho.)
# and if you want lots of debugging info:
git config credential.helper '$shortname -f AUTHFILE -d'
#or to see the files opened and data found:
git config credential.helper '$shortname -f AUTHFILE -v'
Veja um exemplo completo em " Existe uma maneira de ignorar a digitação de senha ao usarhttps:// github "
Com o Git 2.18+ (junho de 2018), agora você pode personalizar o programa GPG usado para descriptografar o .netrcarquivo criptografado .
Veja commit 786ef50 , commit f07eeed (12 de maio de 2018) por Luis Marsano (``) .
(Mesclado por Junio C Hamano - gitster- na confirmação 017b7c5 , 30 de maio de 2018)
git-credential-netrc:gpgopção de aceitação
git-credential-netrcfoi codificado para descriptografar com 'gpg', independentemente da opção gpg.program.
Este é um problema em distribuições como o Debian que chamam o GnuPG moderno de outra coisa, como 'gpg2'
http.proxyem suas variáveis de ambiente. Ou, pelo contrário, adicione seu servidor a uma no_proxyvariável, para evitar tentar acessar um servidor LAN pela WAN.
msysgitWindows 7, não precisei definir a HOMEvariável de ambiente. O _netrcarquivo só fez o truque.
Você também pode instalar o Git Credential Manager para Windows para salvar senhas do Git no gerenciador de credenciais do Windows em vez de _netrc. Essa é uma maneira mais segura de armazenar senhas.
.netrcarquivo criptografado . Você não precisará inserir essas credenciais nem uma vez durante a sessão.
Isso permitirá que o Git se autentique no HTTPS usando .netrc:
_netrce localizado em c:\Users\<username>.HOME=%USERPROFILE%(definir variáveis de ambiente em todo o sistema usando a opção Sistema no painel de controle. Dependendo da versão do Windows, pode ser necessário selecionar "Opções avançadas".)._netrcarquivo não pode conter espaços (citar a senha não funcionará).Estou publicando uma maneira de usar _netrcpara baixar materiais do site www.course.com.
Se alguém usar o coursera-dl para baixar os materiais de classe aberta em www.coursera.com e no sistema operacional Windows alguém quiser usar um arquivo como ".netrc" que esteja no sistema operacional Unix para adicionar o opção em -nvez de -U <username> -P <password>por conveniência. Ele / ela pode fazer assim:
Verifique o caminho inicial no sistema operacional Windows: setx HOME %USERPROFILE%(consulte a resposta do VonC ). Ele salvará a HOMEvariável de ambiente como C:\Users\"username".
Localize no diretório C:\Users\"username"e crie um nome de arquivo _netrc. NOTA: NÃO existe nenhum sufixo.
o conteúdo é como:machine coursera-dl login <user> password <pass>
Use um comando como coursera-dl -n --path PATH <course name>para baixar os materiais da classe. Mais detalhes sobre as opções do coursera-dl para esta página .
HOMEvariável de ambiente é importante, porque não é definida por padrão no Windows. Você pode definir essa variável para o diretório que desejar (não precisa serC:\users\mylogin): por exemplo, no trabalho, defino-a no meu disco remoto privado associado à minha conta do Windows, o que me permite alternar as áreas de trabalho sem perder. minhas.sshou_netrcconfigurações.