Premi su GitHub senza password usando ssh-key


215

Ho generato una coppia di chiavi SSH senza password e ho aggiunto la chiave pubblica a GitHub.

Connessione con

user@dev:/var/www/project# ssh -T git@github.com
Hi User! You've successfully authenticated, but GitHub does not provide shell access.

ha avuto successo e quando rinominare la chiave, non riesce.

Ma quando voglio spingere le mie modifiche, mi chiede ancora la mia combinazione di nome utente e password.

C'è un modo per spingere senza password?


9
Assicurati di non utilizzare https://github...nei telecomandi. Dovrebbero anche seguire il git@github...formato.
cjc343,

Risposte:


421

Se ti richiede un nome utente e una password, il tuo telecomando di origine punta all'URL HTTPS anziché all'URL SSH.

Cambialo in ssh.

Ad esempio, un progetto GitHub come Git avrà un URL HTTPS:

https://github.com/<Username>/<Project>.git

E quello SSH:

git@github.com:<Username>/<Project>.git

Tu puoi fare:

git remote set-url origin git@github.com:<Username>/<Project>.git

per cambiare l'URL.


4
Ciò ha risolto il problema, ma continuo a chiedermi perché Github ti consiglierebbe di puntare la fine remota di un nuovo repository su un URL http per impostazione predefinita. Ho appena creato un repository da zero e mi è stata presentata un'opzione per impostare un URL remoto https, non uno git.
Preslav Rachev,

2
Ecco un rapido comando shell one-liner che cambierà automaticamente il tuo https url con quello appropriato git (funziona solo per gli URL github!):git remote set-url origin $(git remote show origin | grep "Fetch URL" | sed 's/ *Fetch URL: //' | sed 's/https:\/\/github.com\//git@github.com:/')
Christopher Shroba,

11

Inoltre, per gli utenti, sembra che tu debba tralasciare il nome utente

git remote set-url origin git@gist.github.com:<Project code>

10

Nel caso in cui stai effettivamente utilizzando l'URL SSH, ma ti vengono comunque richiesti nome utente e password quando git push:

git remote set-url origin git@github.com:<Username>/<Project>.git

Dovresti provare a risolvere i problemi con:

ssh -vT git@github.com

Di seguito è riportato un esempio di output di esempio:

...
debug1: Trying private key: /c/Users/Yuci/.ssh/id_rsa
debug1: Trying private key: /c/Users/Yuci/.ssh/id_dsa
debug1: Trying private key: /c/Users/Yuci/.ssh/id_ecdsa
debug1: Trying private key: /c/Users/Yuci/.ssh/id_ed25519
debug1: No more authentication methods to try.
Permission denied (publickey).

In realtà ho già aggiunto la chiave pubblica a GitHub prima e ho anche la chiave privata a livello locale. Tuttavia, la mia chiave privata ha un nome diverso chiamato /c/Users/Yuci/.ssh/github_rsa.

Secondo l'output di esempio, Git sta provando /c/Users/Yuci/.ssh/id_rsa, cosa che non ho. Pertanto, si potrebbe semplicemente copiare github_rsaa id_rsanella stessa directory.

cp /c/Users/Yuci/.ssh/github_rsa /c/Users/Yuci/.ssh/id_rsa

Ora, quando corro di ssh -vT git@github.comnuovo, ho:

...
debug1: Trying private key: /c/Users/Yuci/.ssh/id_rsa
debug1: Authentication succeeded (publickey).
...
Hi <my username>! You've successfully authenticated, but GitHub does not provide shell access.
...

E ora posso passare a GitHub senza che mi vengano richiesti username e password :-)


5

Devi usare la versione SSH , non HTTPS . Quando si clona da un repository, copiare il collegamento con la versione SSH , poiché SSH è facile da usare e risolve tutti i problemi di accesso. Puoi impostare l'accesso per ogni SSH che inserisci nel tuo account (come push, pull, clone, ecc ...)

Ecco un link che spiega perché abbiamo bisogno di SSH e come utilizzarlo: passo dopo passo

Git Genera chiavi SSH


0

Come al solito, crea una chiave SSH e incolla la chiave pubblica in GitHub. Aggiungi la chiave privata a ssh-agent. (Suppongo che sia quello che hai fatto.)

Per verificare che tutto sia corretto, utilizzare ssh -T git@github.com

Quindi, non dimenticare di modificare il punto remoto come segue:

git remote set-url origin git@github.com:username/your-repository.git

-4

Utilizzando la riga di comando:

Entra ls -al ~/.sshper vedere se sono presenti chiavi SSH esistenti.

Nel terminale è mostra: non esiste alcuna directory

Quindi generare una nuova chiave SSH

Passo 1.

ssh-keygen -t rsa -b 4096 -C "your_email@example.com"

passo 2.

Enter a file in which to save the key (/Users/you/.ssh/id_rsa): <here is file name and enter the key>

passaggio 3.

Enter passphrase (empty for no passphrase): [Type a password]

Enter same passphrase again: [Type password again]

Siamo spiacenti, questa domanda non riguarda come creare le chiavi ma come configurare git per utilizzare la chiave anziché l'autenticazione
Sebus
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.