Clonei um repositório Git da minha conta GitHub para o meu PC.
Quero trabalhar com meu PC e laptop, mas com uma conta GitHub.
Quando tento acessar ou extrair do GitHub usando meu PC, ele exige um nome de usuário e uma senha, mas não quando estou usando o laptop!
Não quero digitar meu nome de usuário e senha sempre que interagir origin
. O que estou perdendo aqui?
Respostas:
Uma causa comum é a clonagem usando o padrão (HTTPS) em vez do SSH. Você pode corrigir isso indo ao seu repositório, clicando em "Clonar ou fazer download" e, em seguida, clique no botão "Usar SSH" acima do campo URL e atualizando o URL do seu controle remoto de origem da seguinte maneira:
Isso está documentado no GitHub: Alternando URLs remotas de HTTPS para SSH .
fonte
git remote set-url origin git://new.url.here
)git remote set-url origin https://name:[email protected]/repo.git
(extraído de um comentário aqui)Permission denied (publickey)
uso deste guia: help.github.com/articles/generating-ssh-keys .Autenticando permanentemente com repositórios Git
Execute o seguinte comando para ativar o cache de credenciais :
Você também deve especificar vencimento do cache ,
Depois de ativar o cache de credenciais, ele será armazenado em cache por 7200 segundos (2 horas) .
fonte
git remote set-url origin https://[email protected]/<owner>/<repo>.git
Isto também funciona com 2FAfatal: protocol 'https' is not supported
Acabei de encontrar o mesmo problema, e a solução mais simples que encontrei foi usar o URL SSH em vez do HTTPS:
E não é isso:
Agora você pode validar apenas com a chave SSH em vez de
username
epassword
.fonte
Além de mudar para SSH, você também pode continuar usando HTTPS, se não quiser colocar sua senha em texto não criptografado. Coloque isso no seu
~/.netrc
e ele não solicitará seu nome de usuário / senha (pelo menos no Linux e Mac):Adição (veja o segundo comentário de VonC): no Windows, o nome do arquivo é
%HOME%\_netrc
.Leia também o primeiro comentário do VonC, caso você queira criptografar.
Outra adição (consulte o comentário de user137717) que você pode usar se tiver o Git 1.7.10 ou mais recente .
Coloque em cache sua senha do GitHub no Git usando um auxiliar de credencial :
Isso também funciona no Linux, Mac e Windows.
fonte
%HOME%\_netrc
(em vez de~/.netrc
). Consulte também stackoverflow.com/a/18362082/6309 para criptografar esse arquivo.Para os não iniciados que estão confusos com as respostas anteriores, você pode:
O que responderá com algo como
Em seguida, você pode executar o comando que muitos outros sugeriram, mas agora você conhece seu nome e seu repositório de cima, para poder recortar e colar
yourname/yourrepo.git
do acima em:fonte
paraphrase
sempre. Eu não montei umyourrepo
?git remote -v
e ver o que saiSe você estiver usando SSH e sua chave privada estiver criptografada com uma senha, você ainda será solicitado a digitar a senha / senha da chave privada ao realizar operações de rede com o Git
push
, comopull
, efetch
.Use ssh-agent para salvar as credenciais de senha / senha da chave privada
Se você quiser evitar ter que digitar sua senha sempre, use
ssh-agent
as suas credenciais de senha de chave privada uma vez por sessão do terminal, como explico em minha resposta para Não foi possível abrir uma conexão com o seu agente de autenticação :Em um msysgit Bash do Windows, você precisa avaliar a saída de
ssh-agent
, mas não tenho certeza se você precisa fazer o mesmo em outros ambientes de desenvolvimento e sistemas operacionais.ssh-add
procura uma chave privada na sua.ssh
pasta pessoal chamadaid_rsa
, que é o nome padrão, mas você pode passar um caminho de arquivo para uma chave com um nome diferente.Matando o agente
Quando você terminar sua sessão de terminal, poderá encerrar
ssh-agent
com a bandeira de interrupção-k
:Conforme explicado no
ssh-agent
manual :Tempo limite opcional
Além disso, pode levar um parâmetro de tempo limite opcional, da seguinte maneira:
onde
<timeout>
está no formato<n>h
por<n>
horas,<n>m
por<n>
minutos, e assim por diante.De acordo com o
ssh-agent
manual :Veja esta página para mais formatos de hora .
Aviso de segurança para usuários do Cygwin
Os usuários do Cygwin devem estar cientes de um risco potencial à segurança ao usar o ssh-agent no Cygwin :
E no link citado :
fonte
Fonte: Configurar o Git
O comando a seguir salvará sua senha na memória por algum tempo (para Git 1.7.10 ou posterior).
fonte
Quando você usa https para pull & push do Git, basta configurar
remote.origin.url
para o seu projeto, para evitar a entrada de nome de usuário (ou senha) sempre que for pressionado.Como configurar
remote.origin.url
:@Update - usando
ssh
Eu acho que usar
ssh
protocolo é uma solução melhor do quehttps
, embora a etapa de instalação seja um pouco mais complexa.Etapas difíceis:
ssh-keygen
no Linux, no Windowsmsysgit
forneça comandos semelhantes.~/.ssh
,. E adicione-o ao agente ssh através dossh-add
comandoremote.origin.url
do repositório Git para ossh
estilo, por exemplo,[email protected]:myaccount/myrepo.git
Dicas:
@Update - Alterna entre
https
essh
protocolo.Simplesmente mudar
remote.origin.url
será suficiente, ou você pode editarrepo_home/.git/config
diretamente para alterar o valor (por exemplo, usandovi
no Linux).Normalmente, adiciono uma linha para cada protocolo e comento um deles usando
#
.Por exemplo
fonte
git-fetch(1)
menciona isso apenas para URLs baseados emgit
/ssh
.https://username:[email protected]/
é seguro. Veja stackoverflow.com/questions/4980912/…Você pode armazenar em cache sua senha do GitHub no Git:
Basta seguir as instruções da documentação oficial do GitHub .
Após seguir as instruções do link acima, você poderá pressionar / puxar para / do seu repositório sem digitar seu nome de usuário / senha todas as vezes.
fonte
Aqui está outra opção:
Em vez de escrever
Você pode escrever:
Obviamente, com a maioria dos shells, isso resultará na cache da senha no histórico, portanto, lembre-se disso.
fonte
O que funcionou para mim foi editar
.git/config
e usarEscusado será dizer que esta é uma maneira insegura de armazenar sua senha, mas existem ambientes / casos em que isso pode não ser um problema.
fonte
Se a chave ou o
.netrc
arquivo SSH não funcionou para você, outra solução simples, mas menos segura, que poderia funcionar para você é o git-credential-store - Helper para armazenar credenciais no disco:Por padrão, as credenciais serão salvas no arquivo
~/.git-credentials
. Será criado e gravado para.Observe que o uso desse ajudante armazenará suas senhas não criptografadas no disco, protegidas apenas pelas permissões do sistema de arquivos. Se isso não for uma troca aceitável de segurança.
fonte
Eu tive o mesmo problema.
Então mudei o
.git/config
arquivo do meu projeto,para
e adicionou a chave pública SSH ao perfil Git, que está na configuração.
Para a chave pública SSH:
fonte
cat ~/.ssh/id_rsa.pub
obtenha a chave rsa e cole na configuração do portal da web git.Atualização para HTTPS:
O GitHub lançou um novo programa para Windows que armazena suas credenciais quando você está usando HTTPS:
Usar:
Faça o download do programa aqui
Depois de executar o programa, ele editará seu
.gitconfig
arquivo. Verifique novamente se ele editou o correto.gitconfig
, caso você tenha vários deles. Se não editou o correto, adicione o seguinte ao seu.gitconfig
NOTA a quebra de linha depois
[credential]
. É necessário.Abra seu cliente de linha de comando e tente
git push origin master
uma vez. Se ele solicitar uma senha, insira-a e pronto. Senha salva!fonte
Para usuários do Windows Git, após a execução
git config --global credential.helper store
, se ainda solicitar uma senha, é melhor verificar para onde o arquivo de configuração está gravado, usando este comandoNo meu caso, depois de editar manualmente o arquivo de configuração 'C: \ Arquivos de Programas \ Git \ mingw64 \ etc \ gitconfig' e adicionar o texto a seguir, funcionou.
fonte
Você basicamente tem duas opções.
Se você usar o mesmo usuário em ambas as máquinas, precisará copiar a chave .pub no seu PC, para que o GitHub saiba que você é o mesmo usuário.
Se você criou um novo arquivo .pub para o seu PC e deseja tratar as máquinas como usuários diferentes, é necessário registrar o novo arquivo .pub no site do GitHub.
Se isso ainda não funcionar, pode ser porque o ssh não está configurado corretamente e esse ssh falha ao encontrar o local das suas chaves. Tentar
Para obter mais informações sobre por que o SSH falha.
fonte
Atualizando seu arquivo de configuração do Git diretamente ( se você não deseja memorizar comandos sofisticados ):
Abra seu
.git/config
arquivo no seu editor de texto favorito. Ele estará na pasta em que você clonou ou no repositório em que você executougit init
. Entre nesse repositório..git
é uma pasta oculta e pressionar Ctrl+ Hdeve mostrar a pasta oculta (ls -a
no terminal).Abaixo está uma amostra do
.git/config
arquivo. Copie e cole essas linhas e atualize essas linhas com suas informações do Git.Altere a parte da URL com o seguinte formato para SSH:
( Os formatos acima não mudam com vários servidores remotos do Git, como o GitHub ou o Bitbucket. É o mesmo se você estiver usando o Git para controle de versão ):
Nota: A maneira SSH de se conectar a um repositório Git remoto exigirá que você adicione sua chave SSH pública ao servidor remoto Git ( como GitHub ou Bitbucket. Pesquise na página de configurações por chaves SSH ).
Para saber como gerar suas chaves SSH, consulte: Criando chaves SSH
fonte
Isto é o que funcionou para mim:
Exemplo:
fonte
Você precisa executar duas etapas -
git remote remove origin
git remote add origin [email protected]:NuggetAI/nugget.git
Observe que o URL do Git é um URL SSH e não um URL HTTPS ... Que você pode selecionar aqui:
fonte
Se você clonou o HTTPS em vez do SSH e enfrentou um problema com o prompt de nome de usuário e senha ao puxar, pressione e busque. Você pode resolver este problema simplesmente para UBUNTU
Etapa 1: mover para o diretório raiz
crie um arquivo .git-credentials
Adicione esse conteúdo a esse arquivo com você
usename
password
egithosting URL
Em seguida, execute o comando
Agora você poderá pressionar e buscar todos os detalhes do seu repositório sem qualquer aborrecimento.
fonte
Se você estiver usando o Git (por exemplo, Git Bash) no Windows (e se não quiser mudar de HTTPS para SSH), também poderá usar o Git Credential Manager para Windows
Esta aplicação irá manter o nome de usuário e senha para você ...
fonte
Como muitos usuários disseram, basta alterar o URL do repositório Git de HTTPS para SSH.
Se você não gerou uma chave SSH em sua máquina, precisará fazê-lo.
Apenas como informação adicional, depois de fazer essa alteração, ainda estava recebendo o mesmo erro:
No meu caso, o problema era que eu estava usando o Shell do Windows para executar o comando ngh; como esse comando deve abrir um prompt para solicitar a frase SSH e o Windows Shell não abrir esse tipo de prompt, a autenticação falhou.
Então, eu apenas tive que abrir o shell do Git e executar o comando ngh lá, colocar a frase SSH no prompt toda vez que ele pedisse e "voilà" ... Funcionou bem!
fonte
fonte