Come posso eseguire un `git pull` senza reinserire la mia password SSH?


96

È possibile configurare in git/sshmodo da non dover inserire la mia passphrase ogni volta che voglio eseguire una git pull? Nota che il repository è privato su GitHub.

Oppure, in alternativa, quale sarebbe la best practice per automatizzare la distribuzione del codice da un repository Github privato?

Ulteriori dettagli: istanza EC2 che esegue un'AMI pubblica basata su Fedora.


2
possibile duplicato di Configuring Git over SSH
meagar

Hai soluzione a questo problema?
nim

A partire dal git 2.11+ (Q4 2016) utilizzando libsecret è un altro modo: stackoverflow.com/a/40312117/8477066
Hielke Walinga

Risposte:


69

Dai un'occhiata a questo link https://help.github.com/articles/working-with-ssh-key-passphrases/

Ma non voglio inserire una passphrase lunga ogni volta che utilizzo la chiave!

Neanche io! Per fortuna, c'è un piccolo strumento ingegnoso chiamato ssh-agentche può salvare la tua passphrase in modo sicuro in modo che tu non debba reinserirla. Se utilizzi OSX Leopard o versioni successive, le tue chiavi possono essere salvate nel portachiavi del sistema per semplificarti la vita. La maggior parte delle installazioni di Linux avvierà automaticamente ssh-agent quando effettui il login.


3
un po 'nervoso nel rispondere a qualcuno con una reputazione di 17.7k; ho interpretato male la domanda ... ;-)
Fredrik Pihl

3
nervoso? state tranquilli: la stragrande maggioranza delle persone qui è abbastanza educata ... e quelli che non lo sono, beh, hanno problemi più grandi di me :)
jldupont

2
Questo collegamento è stato utile per spiegare quali comandi eseguire per salvare la passphrase in ssh-agent: rabexc.org/posts/using-ssh-agent
Mateus Gondim

Non voglio usare le chiavi. Semplice, ho user \ pass e voglio salvarlo sul lato client git
nim

Perché il collegamento fornisce solo opzioni Mac / Widows? Voglio git pull sul server unix senza reimmettere il pass. sono riuscito a farlo funzionare per un progetto storico ma non posso dire cosa ho fatto lì. Il punto è che quando si esegue ssh su una macchina unix remota la chiave viene passata e questa viene utilizzata invece come chiave git pull (o private composer vcs)? Credo di aver frainteso qualcosa qui. Qualsiasi aiuto apprezzato :)
trainoasis

29

Ho abilitato la memorizzazione nella cache della password come descritto qui:

https://help.github.com/articles/caching-your-github-password-in-git/#platform-linux

Per memorizzare la password nella cache per un mese:

git config --global credential.helper 'cache --timeout=2628000'

Grazie, temuri- Ho cercato dappertutto questo esatto dettaglio. Non funzionava, ma la documentazione sembra non menzionare che è solo per HTTPS.
Mike Emery

2
Se si utilizza una password ( non una passphrase con un file di chiavi) per un URL basato su SSH di un repository Git remoto, non è possibile salvare la password. Ma ho notato che dopo aver emesso qualsiasi comando git, puoi immediatamente digitare la password e premere Invio . Non è necessario attendere che venga visualizzata la richiesta della password.
ADTC

1
git ancora chiedere il passaggio
nim

12

Prova questo:

git config credential.helper store

Dovrai inserire la tua password una volta, dopodiché verrà memorizzata in una cartella all'interno di root.

Come sottolineato dai commenti, questo NON funziona per le password SSH, ma solo per le password HTTPS.


1
@nim Ciò non significa che dovresti votare negativamente la risposta, ho suggerito cosa ha funzionato per me e qualcuno potrebbe trovarlo utile.
Yankee

Non è possibile salvare la password. Lo provo e non risulta nulla. Se ti piace questo telecomando ssh: // name @ ip / path
nim

1
Funziona se stai cercando di memorizzare la password di autenticazione di base HTTP.
Phil

4
Questo NON funziona per le password SSH, solo per le password HTTPS.
Eliezer Berlin

funziona bene per https. Devi solo inserirlo. La prossima volta dovrebbe essere l'ultima volta che dovrai inserire la parafrasi. La prossima volta, la password dovrebbe essere ricordata da git.
Jonathan

7

La tua situazione è ora risolta, tuttavia per me è stato il fatto che avevo più di una chiave ~/.ssh/

Per risolvere il problema ho dovuto creare un file chiamato ~/.ssh/confige aggiungere la riga:

IdentityFile ~/.ssh/my_key2_rsa

dov'è la ~/.ssh/my_key2_rsamia chiave.


1
Grazie per questo, my id_rsa e id_rsa.pubfiles hanno un nome personalizzato, motivo per cui git non lo riconoscerebbe mai. ref: linux.die.net/man/5/ssh_config
lasec0203

5

Non so perché nessuno lo abbia ancora segnalato. Ma l'approccio più semplice sarebbe semplicemente aggiungere una singola riga all'inizio AddKeysToAgent yesdel file .ssh / config. Naturalmente ssh-agentdeve essere in esecuzione in anticipo. Se non è in esecuzione (controlla tramite il comando ssh-agentsul terminale), eseguilo semplicementeeval $(ssh-agent)

Posso confermare che funziona, perché nel mio progetto con molti sottomoduli e per ogni sottomodulo clonato, ho dovuto digitare la mia passphrase ssh. Dopo il trucco di cui sopra, non ho più bisogno di farlo.

La fonte della soluzione è /ubuntu/362280/enter-ssh-passphrase-once/853578#853578


Questa è assolutamente la risposta corretta. Inoltre, per avere ssh-agent in esecuzione è possibile utilizzare un servizio utente di systemd
qualcuno con PC il
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.