Git no Bitbucket: Sempre solicitava a senha, mesmo após o upload da minha chave SSH pública

180

Carreguei o meu ~/.ssh/id_rsa.pubpara as chaves SSH do bitbucket como explicou , mas Git ainda me pede minha senha em cada operação (como git pull). Perdi alguma coisa?

É um repositório privado (fork do repositório privado de outra pessoa) e eu o clonei assim:

git clone [email protected]:Nicolas_Raoul/therepo.git

Aqui está o meu local .git/config:

[core]
        repositoryformatversion = 0
        filemode = true
        bare = false
        logallrefupdates = true
[remote "origin"]
        fetch = +refs/heads/*:refs/remotes/origin/*
        url = https://[email protected]/Nicolas_Raoul/therepo.git
[branch "master"]
        remote = origin
        merge = refs/heads/master

No mesmo ambiente com a mesma chave pública, o Git no Github funciona bem.
.sshé rwx------, .ssh/id_rsaé -rw-------, .ssh/id_rsa.pubé-rw-r--r--

Nicolas Raoul
fonte

Respostas:

265

Tem certeza de que clonou usando o ssh url?

O URL de origem diz url = https://[email protected]/Nicolas_Raoul/therepo.gitque, se estiver usando https, ele solicitará a senha, independentemente de suas chaves ssh.

Então, o que você quer fazer é o seguinte:

abra seu arquivo de configuração no seu repositório atual.

vim .git/config

e altere a linha com o URL de

[remote "origin"]
        fetch = +refs/heads/*:refs/remotes/origin/*
        url = https://[email protected]/Nicolas_Raoul/therepo.git

para

[remote "origin"]
        fetch = +refs/heads/*:refs/remotes/origin/*
        url = [email protected]:Nicolas_Raoul/therepo.git
manojlds
fonte
62
Você está certo, obrigado! Provavelmente eu clonei com o URL errado. Substituí o URL .git/configpor [email protected]:Nicolas_Raoul/therepo.gite agora funciona!
Nicolas Raoul
8
e para alterar o uso remoto git stackoverflow.com/questions/2432764/...
Alex Nolasco
3
Foi o bitbucket quem me sugeriu https url ao criar um repositório! Por quê!
Denis Kniazhev
4
Lembre-se de que seu bitbucket é privado; se você deseja usar o protocolo git, é necessário adicionar sua chave ssh ao site do BitBuket em suas configurações.
Cevaris
7
Teve que mudar o URL para ssh://[email protected]/userName/repoName.git- sem ssh://prefixo, não funcionou.
Trybub
34

Conforme explicado aqui , se você clonar com o URL SSH , não precisará digitar nome de usuário / senha sempre que pressionar / puxar. Verifique a resposta acima por @manojlds

Mas se você deseja clonar com HTTPS e evitar inserir nome de usuário / senha a cada vez, é possível armazenar credenciais no cache com o comando abaixo:

git config --global credential.helper 'cache --timeout 3600'

onde 3600 (segundos) significa 1 hora, você pode alterá-lo conforme sua exigência.

Ajeet Shah
fonte
@atilkan Nesse caso, você pode fornecer as informações de sua máquina / SO e versão git? E a mensagem de erro, se houver alguma, quando você tenta definir a configuração de cache.
Ajeet Shah
Clonei o bitbucket do formulário de repositório de alguém e aqui estão meus controles remotos. manecs-MBP:LocationTracker manec$ git remote -v origin https://[email protected]/Vysh1/locationtracker.git (fetch) origin https://[email protected]/Vysh1/locationtracker.git (push)
Banee Ishaque K
@AjeetShah, e se eu digitar a senha errada? também armazenaria em cache a senha errada?
Anaval # 4/18
@anaval Por que você não tenta e depois tenta inserir a senha correta após limpar ou desativar o cache? Editar a resposta e deixe-nos saber como você fez isso :)
Ajeet Shah
19

Já respondeu acima. Vou resumir as etapas para verificar acima.

executado git remote -vno diretório dir. Se a saída mostrar um URL remoto começando com https://abc, você poderá precisar de senha de nome de usuário sempre.

Então, para alterar a execução do URL remoto git remote set-url origin {ssh remote url address starts with mostly [email protected]:}.

Agora execute git remote -v para verificar o URL remoto alterado.

Consulte: https://help.github.com/articles/changing-a-remote-s-url/

shiva kumar
fonte
16

Olá googlers do futuro.

No MacOS> = High Sierra, a chave SSH não é mais salva no KeyChain por motivos .

O uso de ssh-add -Knão mais sobrevive também é reiniciado.

Aqui estão três soluções possíveis .

Eu usei o primeiro método com sucesso. Eu criei um arquivo chamado configem ~/.ssh:

Host *
  AddKeysToAgent yes
  UseKeychain yes
  IdentityFile ~/.ssh/id_rsa
Vaiden
fonte
2
Isso precisa de mais atenção! Passei anos procurando uma solução e a primeira com o configarquivo /.sshfunciona perfeitamente!
Kitson
1
Essas respostas resolveram meu problema nos MacOs: cd ~/.ssh+ ls+ nano config(o arquivo já foi criado) + adicione código na resposta de Vaiden. Em seguida, controle X + Y para salvar o arquivo.
Sébastien Gicquel 24/03
9

No caso de solicitação HTTP, também é possível alternativamente colar as credenciais (com senha) diretamente no URL:

http://username:[email protected]/...

Isso poupará tempo para fornecer suas credenciais novamente. Simples modifique seu .git / config (o URL).

Sven W.
fonte
10
Mas não é seguro. E não funciona se a senha tem alguma carta como$%
Gank
3
Quem lê este comentário, lembre-se: só porque funciona , não significa que esteja certo . Se você estiver copiando sua senha em qualquer lugar permanentemente, estará fazendo errado. O mesmo 777acontece com aqueles que sempre definem permissões de pasta para : parar, pensar, pesquisar, entender e, em seguida, fazê-lo corretamente.
DKen
9

Nenhuma dessas respostas me ajudou; o problema foi um pouco diferente. Era o ssh que pedia minha senha todas as vezes, antes de enviar a chave. Então, o que eu tive que fazer foi vincular minha senha com este comando:

ssh-add -K ~/.ssh/id_rsa

Ele solicitará sua senha e a armazenará. Essa pode ser a solução que você está procurando, sempre que for solicitada uma senha

Digite a senha da chave '/Usuários//.ssh/id_rsa':

Mais informações aqui

OBSERVAÇÃO: usei isso na minha máquina Mac com êxito, mas, como @Rob Kwasowski apontou abaixo, a Kopção maiúscula é exclusiva do Mac. Se não estiver no mac, você precisará usar letras minúsculas k(o que provavelmente funciona para o mac também, mas ainda não testei).

stackPusher
fonte
1
Isso é ótimo, mas deve estar em letras minúsculas k:ssh-add -k ~/.ssh/id_rsa
Rob Kwasowski
você poderia elaborar por favor?
stackPusher
Conforme explicado aqui: ssh.com/ssh/add , a opção da linha de comandos é minúscula k, não maiúscula, pois essas opções diferenciam maiúsculas de minúsculas.
Rob Kwasowski
direita, mas a opção K maiúscula também adicionará a chave ao chaveiro, enquanto k minúscula adicionará a chave ao agente. Então, o que estou perguntando é 'por que você não quer que a chave também seja adicionada ao seu chaveiro?'
stackPusher
1
Por favor, esteja ciente das diferenças de plataforma, -Ké específico para Mac: help.github.com/en/articles/error-ssh-add-illegal-option----k
Rob Kwasowski
5
webdev5
fonte
Eu acho que Step 1é a favor Windowse a Step 2favor, Linuxmas você esqueceu de mencioná-lo corretamente.
Ajeet Shah
Eu corri esses 3 passos na minha caixa do Windows e funcionou.
Webdev5 09/08/19
2
Nesse caso, gostaria de acrescentar que no Linux OS, precisamos apenas step2 e step3 para o mesmo efeito :)
Ajeet Shah
4

A seguir, assume-se o acesso à linha de comando via iTerm / Terminal no bitbucket.

Para o MacOS Sierra 10.12.5, meu sistema manifestou um problema equivalente - solicitando minha senha SSH em cada conexão ao bitbucket.

O problema está relacionado às atualizações do OpenSSH no macOS 10.12.2, descritas aqui na Nota técnica TN2449 .

Você pode muito bem personalizar sua solução, mas o seguinte funcionará quando adicionado ao seu arquivo ~ / .ssh / config:

Host *
    UseKeychain yes

Para obter mais informações sobre as configurações do ssh, consulte as páginas de manual do ssh_config:

% man ssh_config

Outra coisa: há um bom artigo sobre o superusuário aqui que discute esse problema e várias soluções, dependendo de suas necessidades e configurações.

pob
fonte
2

Eu clonei o repositório com URL HTTPS em vez de URL SSH, portanto, mesmo depois de adicionar a chave SSH, ele estava me pedindo uma senha no Bash Shell.

I acabou de editar o ./.git/configarquivo e alterado o valor da urlvariável, simplesmente substituindo o https://parassh://

Por exemplo

[core]
        ...
        ...
        ...
[remote "origin"]
        url = https://<username>@bitbucket.org/<username>/<repository_name>.git
        fetch = +refs/heads/*:refs/remotes/origin/*
        ...
        ...
        ...

Alterado para:

[core]
        ...
        ...
        ...
[remote "origin"]
        url = ssh://<username>@bitbucket.org/<username>/<repository_name>.git
        fetch = +refs/heads/*:refs/remotes/origin/*
        ...
        ...
        ...
Swaroop Bhagwat
fonte
1

Pode ser necessário verificar novamente o arquivo de identidades SSH. Você pode estar orientando o BitBucket a procurar uma chave privada diferente / incorreta na chave pública equivalente que você salvou no BitBucket.

Verifique com tail ~/.ssh/config- você verá algo semelhante a:

Host bitbucket.org
 HostName bitbucket.org
 IdentityFile ~/.ssh/personal-bitbucket-ssh-key

Lembre-se de que adicionar identidades adicionais (como trabalho e casa) pode ser feito com o ssh-addcomando, por exemplo:

ssh-keygen -t rsa -C "companyName" -f "companyName"
ssh-add ~/.ssh/companyName

Depois de confirmar qual chave privada está sendo analisada localmente, você poderá obter seu equivalente público, neste caso:

cat ~/.ssh/personal-bitbucket-ssh-key.pub | pbcopy

E cole essa cifra no BitBucket. Seus git pushes agora (desde que você esteja usando o clone SSH como as respostas mencionadas acima) serão permitidos sem uma senha, pois o seu dispositivo é reconhecido como amigável.

Espero que isso ajude a esclarecer para alguém.

Conceder
fonte
0

Comigo, embora eu tenha executado o 'git clone ssh: //[email protected]: 7999 / projName / projA.git', ainda estava sendo solicitada a senha para esse novo repositório que clonei, comparando seu .git / config para outros repositórios que funcionam. Ele acabou sendo o URL na seção [remote "origin"], foi definido como o caminho ssh acima para o novo repositório, mas foi definido como https: xxx para o que está funcionando. .

Ninos
fonte
0

Eu estava tendo outra estranheza ao fazer login. Me deparei com algo que parecia totalmente idiota, mas funcionava no meu caso. Basta ir ao chaveiro do MacOS. Encontre o ícone de bloqueio de login na barra lateral. Clique para sair e clique para fazer login. Parece idiota, mas resolveu meus problemas. Vale a pena experimentar.

smileBot
fonte