Git su Bitbucket: sempre richiesto la password, anche dopo aver caricato la mia chiave SSH pubblica


180

Ho caricato il mio ~/.ssh/id_rsa.puba chiavi SSH di bitbucket come spiegato , ma Git mi chiede ancora per la password ad ogni operazione (ad esempio git pull). Ho dimenticato qualcosa?

È un repository privato (fork del repository privato di un'altra persona) e l'ho clonato in questo modo:

git clone git@bitbucket.org:Nicolas_Raoul/therepo.git

Ecco il mio locale .git/config:

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

Nello stesso ambiente con la stessa chiave pubblica, Git su Github funziona bene.
.sshè rwx------, .ssh/id_rsaè -rw-------, .ssh/id_rsa.pubè-rw-r--r--

Risposte:


265

Sei sicuro di averlo clonato usando l'URL ssh?

L'URL per origin dice che url = https://Nicolas_Raoul@bitbucket.org/Nicolas_Raoul/therepo.gitquindi se sta usando https chiederà la password indipendentemente dalle chiavi ssh.

Quindi quello che vuoi fare è il seguente:

apri il tuo file di configurazione nel tuo attuale repository ..

vim .git/config

e cambia la riga con l'URL di

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

per

[remote "origin"]
        fetch = +refs/heads/*:refs/remotes/origin/*
        url = git@bitbucket.org:Nicolas_Raoul/therepo.git

62
Hai ragione, grazie! Molto probabilmente avevo clonato con l'URL sbagliato. Ho sostituito l'URL .git/configcon git@bitbucket.org:Nicolas_Raoul/therepo.gite ora funziona!
Nicolas Raoul,

8
e per cambiare il telecomando usando git stackoverflow.com/questions/2432764/…
Alex Nolasco,

3
È stato bitbucket a suggerirmi https url durante la creazione di un repository! Come mai!
Denis Kniazhev,

4
Tieni presente che se il tuo bitbucket è privato, se desideri utilizzare il protocollo git, devi aggiungere la chiave ssh al sito Web di BitBuket nelle tue impostazioni.
cevaris,

7
Ho dovuto cambiare l'URL in ssh://git@bitbucket.org/userName/repoName.git- senza ssh://prefisso non funzionava.
Trygub,

34

Come spiegato qui , se cloni con l' URL SSH , non è necessario inserire nome utente / password ogni volta che premi / tira. Controlla la risposta sopra di @manojlds

Ma se vuoi clonare con HTTPS e vuoi evitare di inserire username / password ogni volta, puoi archiviare le credenziali nella cache con il comando seguente:

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

dove 3600 (secondi) significa 1 ora, è possibile modificarlo secondo le proprie esigenze.


@atilkan In tal caso, puoi fornire le informazioni sulla tua macchina / sistema operativo e versione git? E il messaggio di errore se presente quando si tenta di configurare l'impostazione della cache.
Ajeet Shah,

Ho clonato bitbucket dal repository di qualcuno, ed ecco i miei telecomandi. manecs-MBP:LocationTracker manec$ git remote -v origin https://Vysh1@bitbucket.org/Vysh1/locationtracker.git (fetch) origin https://Vysh1@bitbucket.org/Vysh1/locationtracker.git (push)
Banee Ishaque K,

@AjeetShah cosa succede se ho inserito la password sbagliata? memorizzerebbe anche nella cache la password sbagliata?
anaval

@anaval Perché non provi quello e dopo prova a inserire la password corretta dopo aver cancellato o disabilitato la cache? Modifica la risposta e facci sapere come hai fatto :)
Ajeet Shah,

19

Ha già risposto sopra. Riassumerò i passaggi da verificare sopra.

eseguito git remote -vnella direzione del progetto. Se l'output mostra l'URL remoto a partire da https://abcallora potresti aver bisogno di una password username ogni volta.

Quindi, per modificare l'esecuzione dell'URL remoto git remote set-url origin {ssh remote url address starts with mostly git@bitbucket.org:}.

Ora esegui git remote -v per verificare l'URL remoto modificato.

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


16

Ciao googler dal futuro.

Su MacOS> = High Sierra, la chiave SSH non viene più salvata sul KeyChain per motivi .

Anche l'utilizzo ssh-add -Knon sopravvive più si riavvia.

Ecco 3 possibili soluzioni .

Ho usato il primo metodo con successo. Ho creato un file chiamato configin ~/.ssh:

Host *
  AddKeysToAgent yes
  UseKeychain yes
  IdentityFile ~/.ssh/id_rsa

2
Questo richiede più attenzione! Ho passato anni alla ricerca di una soluzione e la prima con il configfile /.sshfunziona perfettamente!
Kitson,

1
Questa risposta ha risolto il mio problema su MacOs: cd ~/.ssh+ ls+ nano config(il file era già stato creato) + aggiungi codice nella risposta di Vaiden. Quindi controlla X + Y per salvare il file.
Sébastien Gicquel,

9

Nel caso di richiesta HTTP, è anche e in alternativa possibile incollare le credenziali (con password) direttamente nell'URL:

http://username:password@bitbucket.org/...

Ciò salverà il dolore di dare nuovamente le tue credenziali. Modifica semplicemente il tuo .git / config (l'url).


10
Ma non sicuro. E non funziona se la password ha una lettera come$%
Gank,

3
Chiunque legga questo commento, ricorda: solo perché funziona , non significa che sia giusto . Se stai copiando la tua password in modo permanente ovunque, allora stai sbagliando. Lo stesso vale per coloro che impostano sempre i permessi delle cartelle su 777: fermati, pensa, cerca, capisci e poi fallo correttamente.
Ken

9

Nessuna di queste risposte mi ha aiutato, ho scoperto che il mio problema era leggermente diverso. Era ssh che chiedeva la mia password ogni volta, prima di inviare la chiave. Quindi quello che dovevo fare era collegare la mia password con questo comando:

ssh-add -K ~/.ssh/id_rsa

Ti chiederà quindi la password e la memorizzerà. Questa potrebbe essere la soluzione che stai cercando se ogni volta che viene richiesta una password che dice

Immettere la passphrase per la chiave '/Users//.ssh/id_rsa':

Maggiori informazioni qui

NOTA: l'ho usato con successo sulla mia macchina Mac, ma come sottolineato da @Rob Kwasowski di seguito, l' Kopzione maiuscola è unica per Mac. Se non su Mac dovrai usare le klettere minuscole (che probabilmente funziona anche per Mac ma non ho ancora testato).


1
È fantastico, ma dovrebbe essere minuscolo k:ssh-add -k ~/.ssh/id_rsa
Rob Kwasowski il

potresti elaborare per favore?
stackPusher

Come spiegato qui: ssh.com/ssh/add , l'opzione della riga di comando è minuscola k, non maiuscola in quanto tali opzioni fanno distinzione tra maiuscole e minuscole.
Rob Kwasowski il

a destra ma l'opzione K maiuscola aggiungerà anche la chiave al portachiavi, mentre k minuscola aggiungerà solo la chiave all'agente. quindi quello che sto chiedendo è 'perché non vuoi che la chiave venga aggiunta anche al tuo portachiavi?'
stackPusher

1
Si prega di essere consapevoli delle differenze di piattaforma, -Kè specifico per Mac: help.github.com/en/articles/error-ssh-add-illegal-option----k
Rob Kwasowski

5

Penso che Step 1sia per Windowsed Step 2è per Linuxma te ne sei dimenticato menzionandolo correttamente.
Ajeet Shah,

Ho eseguito quei 3 passaggi sul mio box di Windows e ha funzionato.
webdev5

2
In tal caso, vorrei aggiungere che sul sistema operativo Linux, abbiamo bisogno solo del passaggio 2 e del passaggio 3 per lo stesso effetto :)
Ajeet Shah

4

Quanto segue presuppone l'accesso dalla riga di comando tramite iTerm / Terminal a bitbucket.

Per MacOS Sierra 10.12.5, il mio sistema ha manifestato un problema equivalente: chiedere la mia passphrase SSH su ogni connessione a bitbucket.

Il problema riguarda gli aggiornamenti OpenSSH in macOS 10.12.2, descritti qui nella Nota tecnica TN2449 .

Potresti voler personalizzare la tua soluzione, ma quanto segue funzionerà quando aggiunto al tuo file ~ / .ssh / config:

Host *
    UseKeychain yes

Per maggiori informazioni sulle configurazioni di ssh, dai un'occhiata alle pagine man di ssh_config:

% man ssh_config

Un'altra cosa: c'è un buon resoconto su superutente qui che discute questo problema e varie soluzioni a seconda delle tue esigenze e impostazioni.


2

Ho clonato il repository con l'URL HTTPS anziché l'URL SSH, quindi anche dopo aver aggiunto la chiave SSH mi chiedeva la password su Bash Shell.

Ho appena modificato il ./.git/configfile di e cambiato il valore della urlvariabile semplicemente sostituendo l' https://assh://

Per esempio

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

Cambiato in:

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

1

Potrebbe essere necessario ricontrollare il file delle identità SSH. Puoi guidare BitBucket a guardare una chiave privata diversa / errata rispetto alla chiave pubblica equivalente che hai salvato su BitBucket.

Controllalo con tail ~/.ssh/config: vedrai qualcosa di simile a:

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

Ricorda che l'aggiunta di identità aggiuntive (come lavoro e casa) può essere effettuata con il ssh-addcomando, ad esempio:

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

Dopo aver verificato quale chiave privata viene esaminata localmente, puoi prendere il tuo equivalente pubblico, in questo caso:

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

E incolla quel codice su BitBucket. I tuoi push git ora (ammesso che tu stia utilizzando il clone SSH come indicato nelle risposte sopra menzionate) saranno autorizzati senza password, poiché il tuo dispositivo è un amico riconosciuto.

Spero che questo aiuti a chiarirlo per qualcuno.


0

Con me, sebbene avessi eseguito 'git clone ssh: //git@stash.xxx.com: 7999 / projName / projA.git', mi veniva ancora richiesta la password per questo nuovo repository che ho clonato, quindi confrontando il suo .git / file di configurazione per altri repository funzionanti, si è rivelato essere l'URL nella sezione [remote "origine"], era impostato sul percorso ssh sopra per il nuovo repository, ma era impostato su https: xxx per quello funzionante .


0

Stavo riscontrando altre stranezze durante il login. Mi sono imbattuto in qualcosa che sembrava totalmente stupido ma ha funzionato nel mio caso. Vai semplicemente al portachiavi di MacOS. Trova l'icona del blocco di accesso nella barra laterale. Fare clic per disconnettersi e quindi fare clic per accedere. Sembra stupido ma ha risolto i miei problemi. Vale un tentativo.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.