Push-to GitHub ohne Passwort mit ssh-key


215

Ich habe ein SSH-Schlüsselpaar ohne Passwort generiert und den öffentlichen Schlüssel zu GitHub hinzugefügt.

Verbindung mit

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

war erfolgreich und wenn ich den Schlüssel umbenenne, schlägt er fehl.

Wenn ich jedoch meine Änderungen vornehmen möchte, werde ich immer noch nach meiner Kombination aus Benutzername und Passwort gefragt.

Gibt es eine Möglichkeit, ohne Passwort zu pushen?


9
Stellen Sie sicher, dass Sie nicht https://github...in Ihren Fernbedienungen verwenden. Sie sollten auch dem git@github...Format folgen .
cjc343

Antworten:


419

Wenn Sie nach einem Benutzernamen und einem Kennwort gefragt werden , zeigt Ihre Ursprungsfernbedienung auf die HTTPS-URL und nicht auf die SSH-URL.

Ändern Sie es in ssh.

Beispielsweise hat ein GitHub-Projekt wie Git eine HTTPS-URL:

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

Und der SSH:

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

Du kannst tun:

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

um die URL zu ändern.


4
Dies hat das Problem gelöst, aber ich frage mich immer wieder, warum Github Ihnen dann raten sollte, das Remote-Ende eines neuen Repositorys standardmäßig auf eine http-URL zu verweisen. Ich habe gerade ein Repository von Grund auf neu erstellt und eine Option zum Festlegen einer https-Remote-URL erhalten, keine Git-URL.
Preslav Rachev

2
Hier ist ein schneller Einzeiler-Shell-Befehl, der Ihre https-URL automatisch in die entsprechende Git-URL ändert (funktioniert nur für Github-URLs!):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

Zusätzlich scheint es, dass Sie den Benutzernamen weglassen müssen

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

10

Für den Fall, dass Sie zwar die SSH-URL verwenden, aber beim Drücken von git immer noch nach Benutzername und Passwort gefragt werden:

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

Sie sollten versuchen, Fehler zu beheben mit:

ssh -vT git@github.com

Unten finden Sie eine Beispielausgabe:

...
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).

Ich habe GitHub bereits zuvor den öffentlichen Schlüssel hinzugefügt, und ich habe den privaten Schlüssel auch lokal. Mein privater Schlüssel hat jedoch einen anderen Namen /c/Users/Yuci/.ssh/github_rsa.

Laut der Beispielausgabe versucht Git /c/Users/Yuci/.ssh/id_rsa, was ich nicht habe. Deshalb konnte ich einfach kopieren github_rsazu id_rsaim gleichen Verzeichnis.

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

Wenn ich jetzt ssh -vT git@github.comwieder renne , habe ich:

...
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.
...

Und jetzt kann ich auf GitHub pushen, ohne nach Benutzername und Passwort gefragt zu werden :-)


5

Sie müssen die SSH- Version verwenden, nicht HTTPS . Wenn Sie aus einem Repository klonen, kopieren Sie den Link mit der SSH- Version, da SSH einfach zu verwenden ist und alle Probleme beim Zugriff löst. Sie können den Zugriff für jede SSH festlegen, die Sie in Ihr Konto eingeben (z. B. Push, Pull, Clone usw.).

Hier ist ein Link, der erklärt, warum wir SSH benötigen und wie man es verwendet: Schritt für Schritt

Git SSH-Schlüssel generieren


0

Erstellen Sie wie gewohnt einen SSH-Schlüssel und fügen Sie den öffentlichen Schlüssel in GitHub ein. Fügen Sie den privaten Schlüssel zu ssh-agent hinzu. (Ich nehme an, das haben Sie getan.)

Verwenden Sie, um zu überprüfen, ob alles korrekt ist ssh -T git@github.com

Vergessen Sie als Nächstes nicht, den Remote-Punkt wie folgt zu ändern:

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

-4

Verwenden der Befehlszeile:

Geben Sie ein ls -al ~/.ssh, um festzustellen , ob vorhandene SSH-Schlüssel vorhanden sind.

Im Terminal wird angezeigt: Es ist kein Verzeichnis vorhanden

Generieren Sie dann einen neuen SSH-Schlüssel

Schritt 1.

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

Schritt 2.

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

Schritt 3.

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

Enter same passphrase again: [Type password again]

Entschuldigung, bei dieser Frage geht es nicht darum, wie die Schlüssel erstellt werden, sondern darum, git so einzurichten, dass der Schlüssel anstelle der Authentifizierung verwendet wird
Sebus
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.