So richten Sie die SSH-Authentifizierung mit Windows / git / tortoisegit / putty / Synology ein

7

Ich bin hoffnungslos verwirrt. Ich versuche zu verhindern, dass Tortoisegit mich bei jedem Ziehen / Drücken zur Eingabe eines Kennworts auffordert (es macht mir nichts aus, wenn ich mich bei Windows anmelde, aber danach möchte ich, dass es automatisch erfolgt).

Mein Git-Server läuft auf meinem Synology NAS über das offizielle Git Server-Paket. Ich klone über ssh: // user @ server / foo / bar .

Folgendes habe ich getan / versucht:

  • habe mir über Puttygen ein öffentliches und privates Schlüsselpaar geschaffen.
  • hat Putty Authentication Agent (Festzug) gestartet und meinen privaten Schlüssel hinzugefügt.
  • hat eine Datei mit den autorisierten Schlüsseln auf dem Server unter /root/.ssh/ erstellt . Ich habe es nur mit dem Base64-codierten Teil der öffentlichen Schlüsseldatei und auch mit der ---- BEGIN SSH2 PUBLIC KEY ----Kopf- und Fußzeile versucht .
  • Stellen Sie tortoisegit so ein, dass TortoiseGitPLink.exe als SSH-Client verwendet wird (die Standardeinstellung, glaube ich). Ich habe auch pageant.exe ausprobiert , aber das führt zu einem Fehler: "Dieser Schlüssel konnte nicht geladen werden (Datei kann nicht geöffnet werden)"

Ich werde weiterhin zur Eingabe eines Kennworts aufgefordert, und der Putty Agent scheint in keiner Weise in den Prozess involviert zu sein (auch nach der Authentifizierung keine Schlüssel). Jeder Rat wäre sehr dankbar.

mir--
quelle
Viel Glück, Mann, ich bin vor einiger Zeit diesen Weg gegangen und fand es schmerzhaft. Am Ende habe ich mich für eine Ubuntu VM entschieden. Dies war nicht der einzige Faktor.
JCollum
1
Haben Sie versucht, mit dem öffentlichen Schlüssel direkt in Ihren Git-Benutzer zu SSH? Wenn ja, hat Ihr Git-Benutzer Sie authentifiziert?
Mark Lopez
Hast du herausgefunden, was los war? Vielleicht hättest du den rootBenutzer nicht für Git verwenden sollen. Hatten Sie auch eine Kitt-Sitzung gespeichert, scheint TortoiseGitPlink.exe es zu benötigen (und gespeicherte Kitt-Sitzung benötigt einen Schlüssel in Festzug)
Pavel P

Antworten:

4

Stellen Sie sicher, dass Sie die Anweisungen auf den SSH-Tasten befolgt haben

Für Windows Git UND TortoiseGit sind zwei in Windows festgelegte Umgebungsvariablen erforderlich.

GIT_SSH = C: \ Programme \ TortoiseGIT \ bin \ TortoiseGitPlink.exe

SVN_SSH = C: \ Programme \ TortoiseGIT \ bin \ TortoiseGitPlink.exe

(ersetzen Sie durch Ihre Pfade, wenn anders)

Sie müssen auch sicherstellen, dass PLINK_PROTOCOL nicht überschrieben wird. Andernfalls ist PLINK_PROTOCOL = ssh

Überprüfen Sie nach diesen Änderungen den Zugriff wie folgt:

Öffnen Sie ein Dos Command-Fenster und geben Sie den Befehl plink git @ your git depot server name ein

Wenn eine Liste der Git-Repositorys zurückgegeben wird, kommunizieren Sie mit Git.

Wenn ein Fehler zurückgegeben wird, müssen Sie möglicherweise Ihre Windows-Dateien .ssh / config und / oder etc / hosts bearbeiten

portunknown
quelle
Vielen Dank. Versucht. Immer noch kein Glück. plink sagt nur "Interaktive Git-Shell ist nicht aktiviert". Ich glaube ich gebe auf.
Ich
+1 GIT_SSH& SVN_SSHhabe es für mich getan!
Nick Grealy
2

Sie möchten nicht den öffentlichen Schlüssel verwenden, der mit der Schaltfläche "Öffentlichen Schlüssel speichern" gespeichert wird. In der PuTTY Key Generator-Benutzeroberfläche sollten Sie den Text im oberen Feld in Ihre authorized_keysDatei kopieren :

PuTTY-Schlüsselgenerator

Es sollte genau kopiert werden und eine einzelne Zeile in Ihrer authorized_keysDatei sein.

Verwenden Sie auch, ssh://root@server/foo/barum Ihr Repo zu klonen? Wenn nicht, müssen Sie sicherstellen, dass Sie Ihren öffentlichen Schlüssel zur authorized_keysDatei für den richtigen Benutzer hinzufügen .

schwer
quelle
Ich habe gerade beide Vorschläge ausprobiert, werde aber trotzdem zur Eingabe eines Passworts aufgefordert. Der Grund, warum ich die Datei " authorized_keys" ursprünglich unter "root" gestellt habe, weil es einfach falsch erscheint, dass sich jeder Benutzer Zugriff auf git gewähren kann, indem er diese Datei in seinem Home-Verzeichnis erstellt ...
me--
Ich habe auch gerade einen Schlüssel ohne Passwort ausprobiert - das gleiche Problem.
Ich
0

Hinzufügen eines von Putty generierten SSH-Schlüssels im OpenSSH-Format zu Ihrem Linux-Konto und Testen, ob Sie sich bei Github oder einem anderen Linux-Server anmelden können

  1. Kopieren Sie den Ordner id_rsaund id_rsa.pubin den ~/.sshOrdner. Ändern Sie die Berechtigungen der id_rsaDatei zu 400/600verwenden chmod 600 ~/.ssh/id_rsa https://stackoverflow.com/a/9270753/4752883

  2. Überprüfen Sie, ob ssh-agentmit eval $(ssh-agent -s) and start/restartssh-agent` ausgeführt wird ( https://stackoverflow.com/a/17848593/4752883 )

  3. Fügen Sie einen sshprivaten Schlüssel hinzu zu ssh-agent: ssh-add ~/id_rsa( https://help.github.com/articles/generating-a-new-ssh-key-and-adding-it-to-the-ssh-agent/#adding-your-ssh-key -to-the-ssh-agent )

  4. Stellen Sie sicher, dass der öffentliche Schlüssel an Ihr Konto angehängt ist ( https://help.github.com/articles/error-permission-denied-publickey/ ) : ssh-add -l -E md5. Die Ausgabe sollte so etwas wie sein2048 MD5:de:5d… /home/username/.ssh/id_rsa (RSA)

  5. Stellen Sie sicher, dass Sie sich sshbei einem githubanderen Server anmelden können ( https://help.github.com/articles/testing-your-ssh-connection/ ) : ssh -T [email protected]. Die Ausgabe sollte lautenHi username! You've successfully authenticated, but GitHub does not provide shell access.

  6. Wenn ein Fehler wie angezeigt wird key_load_public: invalid format, bedeutet dies, dass Sie das PuttygenFormat des öffentlichen Schlüssels verwenden. Gehen Sie folgendermaßen vor, um zur OpenSSHVersion des öffentlichen Schlüssels zu wechseln : ( https://stackoverflow.com/a/44391850/4752883 )

alpha_989
quelle