Ich bin ssh in einem Remote-Host (Linux, Fedora) und ich möchte dort ssh-Operation (Git mit Bitbucket). Auf dieser Maschine läuft ein ssh-Agent.
$ ps -e|grep sh-agent
2203 ? 00:00:00 ssh-agent
Wenn ich aber giten möchte, muss ich die Passphrase eingeben
$ git pull
Enter passphrase for key '/user/wgong/home/.ssh/id_rsa':
Hinweis: Wenn ich lokal auf diesem Computer arbeite, werde ich nicht aufgefordert, die Passphrase einzugeben
Antworten:
Meiner Meinung nach die beste Art, ssh zu benutzen
Fügen Sie vor der Verwendung von Git Ihren Schlüssel zu ssh-agent hinzu
Starte ssh-agent wenn nicht gestartet:
Fügen Sie Ihren privaten Schlüssel mit ssh-add hinzu
Überprüfen Sie, ob der Schlüssel hinzugefügt wurde (Parameter ist ein Kleinbuchstabe L):
Versuchen Sie, eine Verbindung zu Ihrem Git-Server herzustellen:
Jetzt können Sie Git ohne zusätzliche Eingabeaufforderungen für Passphrasen verwenden.
Andere Möglichkeiten
https://unix.stackexchange.com/questions/90853/how-can-i-run-ssh-add-automatically-without-password-prompt
quelle
.bashrc
?eval
Ihrer Information , das wird benötigt, weil es Befehle ausgibt, die Umgebungsvariablen wie SSH_AUTH_SOCK exportieren, die benötigt werden. unix.stackexchange.com/questions/351725/…Wenn Sie bereits ausgeführt haben
ssh-agent
, können Sie den Schlüssel hinzufügen, und Sie müssen die Passphrase einmal und nur einmal für diese Sitzung eingeben.Sie sagen nicht, welches Betriebssystem Sie verwenden, aber wenn es sich um Linux und Gnome handelt, kann die Anwendung "Passwörter und Schlüssel" (CLI-Name
seahorse
:) diese verwalten, sodass sie beim Anmelden entsperrt werden (keine Passphrase erforderlich). . Andere Linux-Desktop-Umgebungen haben ihre eigenen Manager. Ich bin mir nicht sicher, was andere Betriebssysteme hier tun.quelle
Der Hauptgrund für die Passphrasenabfrage ist, dass Ihr Schlüssel verschlüsselt ist. Vergleichen Sie diese beiden:
nicht verschlüsselt
verschlüsselt
Sie müssen also einen der folgenden Schritte ausführen:
~/.ssh/config
und geben Sie eine andere Identitätsdatei an (IdentityFile
).ssh-add -l
den Befehl aus, um alle Ihre Identitäten aufzulisten (und mit Ihrer lokalen zu vergleichen), und überprüfen Sie bei Stash, ob Sie die richtigen Schlüssel verwenden (diese sind in der Stash-Konfiguration vorhanden).Wenn Sie die Passphrase kennen und sie automatisieren möchten, versuchen Sie Folgendes:
Fehlerbehebung:
eval "$(ssh-agent -s)"
).GIT_TRACE=1 git pull
oder mitGIT_SSH_COMMAND="ssh -vv"
(Git 2.3.0+) erneut aus, um Ihren Befehl erneut zu debuggen.Sie können versuchen, die Frage nach der Passphrase zu umgehen (die sie umleitet
true
), aber ich glaube nicht, dass es helfen wird. Wenn es danach fragt, gibt es einen Grund dafür und es ist grundsätzlich erforderlich.quelle
Das
ssh-add
Programm startet einen Agenten, der Ihre Passphrase speichern (und bereitstellen) kann. Die Remoteverwendung erfolgt über ein übergeordnetes Element Ihrer interaktiven Shell (damit der Agent nicht gestoppt wird).Hier sind einige verwandte Fragen:
Jetzt ... Remote- Verbindung herstellen. In der Regel meldet sich Ihr Befehl nicht als solcher an, sodass er nicht gestartet wird
ssh-add
. Sie können dies umgehen, indem Sie ein Skript ausführen, dasssh-agent
ssh-add
Die Schwachstelle ist der zweite Schritt: Sie werden immer noch zur Eingabe der Passphrase aufgefordert, es sei denn, Sie schwächen Ihre Sicherheit, indem Sie einen Schlüssel ohne Passphrase verwenden . Einige Leute tun dies, die meisten raten davon ab.
quelle
ssh-add
startet den Agenten nicht. Es wird eine Verbindung zu einem bereits laufenden Agenten hergestellt.Sie können die Passphrase Ihres Schlüssels einfach mit dem folgenden Befehl entfernen
Geben Sie bei der ersten Eingabeaufforderung den Dateipfad ein (oder drücken Sie die Eingabetaste, um die Standardeinstellung zu ändern). Geben Sie bei der zweiten Eingabeaufforderung die alte Passphrase ein. Bei der nächsten Eingabeaufforderung drücken Sie einfach die Eingabetaste, um die Passphrase zu deaktivieren
Sieht so aus, als wäre das der einfachste Weg!
quelle
Sie werden weiterhin aufgefordert, das Passwort einzugeben, um den privaten Schlüssel zu entschlüsseln, selbst wenn dieser
ssh-agent
in das Remote-System geladen wird, bis der entsprechende öffentliche SSH-Schlüssel hinzugefügt wird~/.ssh/authorized_keys
.Reproduzieren:
Verwirrend genug. In diesem Fall ist ein Remote-SSH-Anmeldekennwort ausreichend.
Ich kann spekulieren, dass dies das Hinzufügen Ihres öffentlichen Schlüssels (der mit dem verschlüsselten privaten Schlüssel gekoppelt ist) verhindert, ohne das Verschlüsselungskennwort für den entsprechenden privaten Schlüssel zu kennen. Es ist sowieso ein einmaliges Anmeldeverfahren per Fernzugriff.
quelle