Wie git pull aus öffentlichem Repo über ssh ohne Schlüssel?

Lesezeit: 7 Minuten

Benutzer-Avatar
rlpowell

Ich habe ein öffentliches Repo, https://github.com/rlpowell/config . Früher konnte ich git pull ohne ssh-Schlüssel (dh von cron) ausführen, und es funktionierte gut, indem ich die URL [email protected]:rlpowell/config.git (dh die SSH-URL) verwendete. Das funktioniert nicht mehr, und ich habe keine Ahnung warum, aber es tut Arbeit für zwei meiner Freunde.

Ich würde gerne in der Lage sein, ein öffentliches Repo ohne SSH-Schlüssel zu git pullen oder zumindest zu verstehen, warum es bei mir nicht funktioniert und bei anderen Leuten.

Hier ist ein Freund, der meinen Testfall ausprobiert:

$ git clone [email protected]:rlpowell/config.git  ; cd config ; (unset SSH_AUTH_SOCK ; ssh-add -l ; git pull )
Cloning into 'config'...
Warning: Permanently added the RSA host key for IP address '192.30.253.113' to the list of known hosts.
remote: Counting objects: 1061, done.
remote: Total 1061 (delta 0), reused 0 (delta 0), pack-reused 1061
Receiving objects: 100% (1061/1061), 544.42 KiB | 495.00 KiB/s, done.
Resolving deltas: 100% (632/632), done.
Checking connectivity... done.
Could not open a connection to your authentication agent.
Already up-to-date.

Und hier mache ich genau dasselbe:

$ git clone [email protected]:rlpowell/config.git  ; cd config ; (unset SSH_AUTH_SOCK ; ssh-add -l ; git pull )
Cloning into 'config'...
remote: Counting objects: 1061, done.
remote: Total 1061 (delta 0), reused 0 (delta 0), pack-reused 1061
Receiving objects: 100% (1061/1061), 544.42 KiB | 0 bytes/s, done.
Resolving deltas: 100% (632/632), done.
Checking connectivity... done.
Could not open a connection to your authentication agent.
Enter passphrase for key '/home/rlpowell/.ssh/id_rsa':
Permission denied (publickey).
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

(Ich habe bei der Eingabeaufforderung für das SSH-Schlüsselpasswort die Eingabetaste gedrückt).

Im Repo lautet die .git/config:

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

Und git config -l ist:

$ git config -l
[email protected]
user.name=Robin Lee Powell
push.default=matching
core.repositoryformatversion=0
core.filemode=true
core.bare=false
core.logallrefupdates=true
[email protected]:rlpowell/config.git
remote.origin.fetch=+refs/heads/*:refs/remotes/origin/*
branch.master.remote=origin
branch.master.merge=refs/heads/master

git-Version ist 2.5.5

strace sagt, das Ding, das ssh tatsächlich ausführt, ist

ssh [email protected] git-upload-pack 'rlpowell/config.git'

  • Eine Möglichkeit ist, dass Ihr SSH-Schlüssel in GitHub aus irgendeinem Grund nicht mit dem synchronisiert ist, was Sie lokal haben. Folgen diese Anleitung um Ihren Schlüssel in GitHub zu aktualisieren.

    – Tim Biegeleisen

    4. Juli 2016 um 8:37 Uhr

  • Ich denke, dass Ihre Annahme, dass es möglich ist, ohne Schlüssel zu klonen/ziehen, falsch ist (siehe Dokumente). Schauen Sie sich einfach die Ausgabe an, die Ihr Freund erhält: ... Could not open a connection to your authentication agent. ...; Dies beweist, dass in diesem Fall der SSH-Schlüssel verwendet wird. Ihre Freunde haben wahrscheinlich einfach keine Passphrasen auf ihren Schlüsseln. Erwägen Sie die Verwendung des HTTPS-Protokolls, wenn Sie keine Authentifizierung wünschen.

    – xaizek

    4. Juli 2016 um 20:08 Uhr


  • Wir haben die Passphrase überprüft. Ich kann Klonen ohne Schlüssel git, aber nicht ziehen. 2 meiner Freunde können klonen und ziehen. Einer meiner Freunde kann weder klonen noch ziehen. Da geht etwas Tieferes vor sich.

    – rlpowell

    5. Juli 2016 um 0:56 Uhr

  • Wenn ich das richtig verstehe, führt SSH immer eine Authentifizierung durch und benötigt daher Ihren Schlüssel. Versuchen Sie zusätzlich eine vorübergehende Umbenennung ~/.ssh Verzeichnis oder verwenden Sie ein anderes Benutzerkonto, um sicherzustellen, dass nichts stört.

    – xaizek

    5. Juli 2016 um 11:22 Uhr

  • könntest du gleich zwei Sessions mit probieren GIT_TRACE=2 vorher einstellen? (git-scm.com/book/en/v2/…)

    – VonC

    6. Juli 2016 um 7:48 Uhr

Benutzer-Avatar
VonC

Ich habe es gerade ohne Schlüssel versucht und bestätige, dass es nicht funktionieren kann (ohne SSH-Schlüssel):

$ git clone [email protected]:rlpowell/config.git
Cloning into 'config'...
Permission denied (publickey).
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

Das liegt daran, dass GitHub keinen anonymen Zugriff über SSH (im Gegensatz zu https) autorisiert, wie es andere Git-Repo-Server entschieden haben (wie Gogits oder go-gitea)

GitHub erwähnt:

SSH-URLs ermöglichen den Zugriff auf ein Git-Repository über SSH, ein sicheres Protokoll.
Um diese URLs zu verwenden, müssen Sie muss Generieren Sie ein SSH-Schlüsselpaar auf Ihrem Computer und fügen Sie den öffentlichen Schlüssel zu Ihrem GitHub-Konto hinzu.

(Betonung muss)

Wieso den? (gefragt 2015). Während sshd kann so konfiguriert werden, dass anonymer Zugriff zugelassen wirdkeine öffentliche Website würde jemals in Betracht ziehen, dies einzurichten: Es ist ein zu großes Sicherheitsrisiko.

muss ohne einen bestimmten Schlüssel funktionieren

Wenn Sie einen anonymen Zugriff benötigen, können Sie Folgendes verwenden:

  • eine https-URL
  • eine Git-URL: git://github.com/<user>/<repo>obwohl es den Port 9418 verwendet, der in einer Unternehmensumgebung häufig blockiert ist.

Versuchen Sie zuerst, diesen Befehl auszuführen:

ssh -o PreferredAuthentications=password -o PubkeyAuthentication=no github.com

und dann git pull wieder.

  • $ ssh -o PreferredAuthentications=password -o PubkeyAuthentication=no github.com Permission denied (publickey).

    – Matt Tischler

    7. November 2017 um 2:52 Uhr

Es ist ein öffentliches GitHub-Repo und Sie möchten nur daraus ziehen, sodass Sie stattdessen die HTTPS-URL verwenden können:

https://github.com/rlpowell/config.git

https://github.com/rlpowell/config.git

Das Problem scheint bei ssh-Schlüsseln zu liegen, zumindest die Antwort, die es sagt:

Enter passphrase for key '/home/rlpowell/.ssh/id_rsa':
Permission denied (publickey).

Sie müssen also Ihren öffentlichen Schlüssel zu github hinzufügen

Hinzufügen eines neuen SSH-Schlüssels zu Ihrem GitHub-Konto

Sie können auch ausführen:

ssh -T [email protected]

um die ssh-Verbindung zu github zu überprüfen

Für öffentliche Repos benötigen Sie kein Passwort. Sie können direkt über ihren https-Link klonen:

z.B git clone https://github.com/rlpowell/config.git

Benutzer-Avatar
Gerhard Stein

Ich denke, mit SSH geht das nicht. Hier ist eine gute Erklärung:

GitHub-Protokollvergleich

Wenn Sie das Zeug ohne Schlüssel klonen und ziehen möchten, verwenden Sie HTTP (S).

Also mit

git clone http://github.com/rlpowell/config.git
Klone nach 'config' ...
warning: Leite nach https://github.com/rlpowell/config.git/ um
remote: Counting objects: 1234, done.
remote: Total 1234 (delta 0), reused 0 (delta 0), pack-reused 1234
Empfange Objekte: 100% (1234/1234), 2.01 MiB | 1.07 MiB/s, Fertig.
Löse Unterschiede auf: 100% (758/758), Fertig.

die “.git/config” sieht dann so aus:

[core]
    repositoryformatversion = 0
    filemode = true
    bare = false
    logallrefupdates = true
[remote "origin"]
    url = http://github.com/rlpowell/config.git
    fetch = +refs/heads/*:refs/remotes/origin/*
[branch "master"]
    remote = origin
    merge = refs/heads/master

Sie können diese Datei später ändern, wenn Sie sie bereits geklont oder verwendet haben git config

Mit diesen Einstellungen können Sie git pull jederzeit.

Warum die URL verwenden [email protected]:rlpowell/config.git nicht funktioniert hat folgenden Grund:

Der Eintritt [email protected]:rlpowell wird Sie zwingen, sich mit SSH zu authentifizieren. Github erfordert, dass Sie Schlüsselpaare verwenden, wenn Sie eine SSH-Authentifizierung wünschen.

Wenn Sie einen automatischen Cronjob-Benutzer haben und trotzdem SSH verwenden möchten, erstellen Sie als dieser Benutzer ein Schlüsselpaar und laden Sie das öffentliche Schlüsselpaar in Gitlab hoch.

Aber wenn Sie nur klonen und ziehen möchten, ist HTTPS mehr als genug. Übrigens ist auch eine Authentifizierung über HTTPS möglich. Github fragt nach Ihrem Benutzernamen und Passwort, wenn Sie versuchen, Änderungen zu pushen. Dies wird natürlich nicht empfohlen, wenn Sie Cronjobs verwenden.

Benutzer-Avatar
Gemeinschaft

Sie haben ein Problem mit Ihrem Zertifikat. Die einfache Lösung besteht darin, einfach eine neue zu erstellen und die alte zu ersetzen.

Das Problem kann durch mehrere Probleme verursacht werden, zum Beispiel: falscher Eintrag in der Hostdatei, aufgerufenes SSH-Zertifikat und mehr.

Also am besten ein neues Zertifikat erstellen und testen.

Befolgen Sie einfach diese Schritte und Sie werden Ihren SSH-Schlüssel im Handumdrehen einrichten:

  • Generieren Sie einen neuen SSH-Schlüssel (oder überspringen Sie diesen Schritt, wenn Sie bereits einen Schlüssel haben)
    ssh-keygen -t rsa -C "your@email"

  • Sobald Sie Ihren Schlüssel eingestellt haben home/.ssh Verzeichnis (bzw Users/<your user>.ssh unter Windows), öffnen Sie es und kopieren Sie den Inhalt


Wie füge ich einen sh-Schlüssel zu einem Github-Konto hinzu?

  • Melden Sie sich beim Github-Konto an
  • Klicke oben rechts auf den Rancher (Einstellungen)
    github-Kontoeinstellungen
  • Klick auf das SSH keys
    ssh-Schlüsselabschnitt
  • Klick auf das Add ssh key
    SSH-Schlüssel hinzufügen
  • Fügen Sie Ihren Schlüssel ein und speichern Sie

Und schon kann es losgehen 🙂

  • Auch hier geht es darum, dass es möglich sein sollte, zu ziehen ohne irgendein ssh-key. Ich habe es schon einmal gemacht, Klonen funktioniert ohne SSH-Schlüssel, und meine Freunde können es ohne verfügbare SSH-Schlüssel tun (es fragt sie nicht einmal nach ihrem Hauptschlüsselpasswort).

    – rlpowell

    4. Juli 2016 um 16:16 Uhr

  • OK. Danke für das Aufklären

    – CodeWizard

    4. Juli 2016 um 16:18 Uhr

1225900cookie-checkWie git pull aus öffentlichem Repo über ssh ohne Schlüssel?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy