SSH-Schlüssel - Immer noch nach Passwort und Passphrase fragen

495

Ich habe mich ein bisschen damit abgefunden, dass Github immer nach meinem Benutzernamen und Passwort gefragt hat, wenn ich ein Repository klone. Ich möchte diesen Schritt umgehen, da er in meinem Workflow störend ist.

Ich habe versucht, mithilfe dieses Handbuchs einen SSH-Schlüssel einzurichten (was ich erfolgreich getan habe). https://help.github.com/articles/generating-ssh-keys und ich waren erfolgreich.

Mein Problem ist, dass ich beim Klonen eines Repositorys (mit SSH) immer noch nach meinem Github-Passwort und meiner Passphrase gefragt werde. Nach meinem Verständnis musste ich das nach dem Einrichten dieses SSH-Schlüssels nicht mehr tun.

Ich bin mir ein wenig unsicher, was ich fragen soll, also werde ich nur mein Ziel angeben.

Ich möchte in der Lage sein, Repositorys zu klonen, ohne ständig meine Github-Informationen eingeben zu müssen .

Was fehlt mir mit meinem SSH-Schlüssel? Wenn jemand eine Anleitung oder Ressourcen bereitstellen kann, würde ich es begrüßen, weil ich mich bei der SSH-Authentifizierung in GitHub immer etwas verloren gefühlt habe.

Meines Wissens ist dies ein Befehl, der testet, ob die Dinge richtig funktionieren. Hier sind die Ausgaben von meiner Konsole:

~ $ ssh -T [email protected]
Saving password to keychain failed
Enter passphrase for key '/Users/MYNAME/.ssh/id_rsa':
Hi MYNAME! You've successfully authenticated, but GitHub does not provide shell access.

Sollte dies bei der Eingabe meines Passworts zuerst fehlschlagen? Wenn ich dann meine Passphrase eingebe, geht sie vorbei.

Hallo Welt
quelle
1
In welchem ​​Betriebssystem bist du? Ein moderner Linux-Desktop würde vorschlagen, Ihre Passphrase in einem Schlüsselring-Manager zu speichern. Gleiches gilt für Mac OS X. Unter Windows können Sie verwenden pageant, was Teil von ist putty. In all diesen Fällen ist das Ziel dasselbe: Sie geben die Passphrase nur einmal ein, nachdem Sie Ihren PC gestartet haben. Die Key Manager-Agenten geben sie bei späteren Verwendungen an ssh weiter, bis Sie neu starten.
Janos
2
Ich bin etwas spät zur Party hier, aber auf dem kleinen Klon-Tab / Button in Github befindet sich ein Link mit der Aufschrift "Use SSH". Das willst du machen. Es ändert Ihren Klon-Link in etwas wie "git @ github: username / project.git". Wenn Sie github einen SSH-Schlüssel hinzugefügt haben und diesen lokal auf ssh-agent ausführen, sollten Sie in der Lage sein, ohne Eingabe eines Benutzernamens oder Kennworts zu pushen.
Logan Kitchen

Antworten:

201

Wenn Sie mit HTTPsURLs arbeiten, werden Sie immer nach Ihrem Benutzernamen / Passwort gefragt.

Wenn Sie SSHbeim Klonen / Einstellen von Fernbedienungen die richtige Verwendung verwenden . Stellen Sie dann sicher, dass Sie einen SSH-Agenten haben, der sich Ihr Passwort merkt. Auf diese Weise geben Sie Ihre Passphrase nur einmal pro Terminalsitzung ein.

Wenn es immer noch zu nervig ist, setzen Sie einfach einen SSH-Schlüssel ohne Passphrase.

Simon Boudrias
quelle
2
Danke für die Antwort. Ich habe immer nur HTTPs verwendet. Ich versuche, eine SSH-Authentifizierung zu erreichen, und dachte, ich hätte sie eingerichtet. Ist der SSH-Agent etwas außerhalb von Git, das ich installieren muss? Danke
HelloWorld
1
@ R11G können Sie nicht, sonst wären Passwörter nicht sicher ... Generieren Sie einfach ein neues.
Simon Boudrias
50
Ich möchte nur darauf hinweisen, dass Passphrasen zum Verschlüsseln Ihres privaten Schlüssels verwendet werden. Wenn Sie also keine Passphrase verwenden, wird Ihr privater Schlüssel auf Ihrem Computer unverschlüsselt. Es ist, als würde man ein Passwort in einer Textdatei hinterlassen, die auf dem Computer herumliegt.
2
Komisch, meine HTTPS-Repos fragen nie nach Passwörtern und meine SSH-Repos immer.
Adam
33
In diesem Github-Dokument können Sie die URL der Remote- Datei von https in ssh konvertieren. Verwenden Sie, um zu überprüfen, ob die URL der Remote-Datei ssh oder https lautet git remote -v. So wechseln Sie von https zu ssh:git remote set-url origin [email protected]:USERNAME/REPOSITORY.git
Manavalan Gajapathy
824

Identität ohne Schlüsselbund hinzufügen

Es kann vorkommen, dass Sie die Passphrase nicht im Schlüsselbund speichern möchten, aber nicht immer wieder die Passphrase eingeben müssen.

Sie können das so machen:

ssh-add ~/.ssh/id_rsa 

Dadurch werden Sie nach der Passphrase gefragt, geben sie ein und es wird nicht erneut gefragt, bis Sie neu starten.

Identität mit Schlüsselbund hinzufügen

Wie @dennis in den Kommentaren ausführt, können Sie die -KOption ( -kfür Ubuntu) verwenden , um die Passphrase durch Neustarts durch Speichern in Ihrem Schlüsselbund beizubehalten, wenn Sie die Identität wie folgt hinzufügen:

ssh-add -K ~/.ssh/id_rsa

Dies wird Sie erneut nach der Passphrase fragen, diese eingeben und dieses Mal wird es nie wieder nach dieser Identität fragen.

Komu
quelle
178
Beachten Sie, dass die Identität beim Neustart nicht erhalten bleibt. Sie können die -KOption verwenden, um die Passphrase in Ihrem Schlüsselbund zu speichern, wenn Sie sie hinzufügen, z. B.ssh-add -K ~/.ssh/id_rsa
Dennis
29
Kleinbuchstaben -kfür mich ... (Linux Mint / Ubuntu 14.04 Basis) aber ja! endlich sortiert ...
Louis Maddox
8
Wenn Sie nur den Befehl "ssh-add" ausführen und das Passwort einmal eingeben, werden Sie in der Befehlszeile nicht erneut zur Eingabe des Passworts aufgefordert.
AVINASH SHRIMALI
14
Sie brauchen keine Argumente; Durch einfaches Ausführen ssh-addwird automatisch ~/.ssh/id_rsa(unter anderem) hinzugefügt . Und es gibt keinen Grund, die Ausgabe an zu senden /dev/null. viel besser, den Bericht darüber zu sehen, was er getan hat.
Ted Hopp
6
Irgendeine Idee, warum ich die Meldung "Verbindung zu Ihrem Authentifizierungsagenten konnte nicht hergestellt werden" erhalte?
Dokaspar
251

Unter Mac OS X können Sie Ihren privaten Schlüssel mit dem folgenden Befehl zum Schlüsselbund hinzufügen:

ssh-add -K /path/to/private_key

Wenn Ihr privater Schlüssel unter ~ / .ssh gespeichert ist und den Namen id_rsa trägt:

ssh-add -K ~/.ssh/id_rsa

Sie werden dann aufgefordert, Ihr Passwort einzugeben, das in Ihrem Schlüsselbund gespeichert wird.

Bearbeiten - Neustart behandeln

Um Ihr Passwort auch nach einem Neustart nicht eingeben zu müssen, fügen Sie Folgendes zu Ihrer SSH-Konfigurationsdatei hinzu (normalerweise unter ~ / .ssh / config).

Host *
  UseKeychain yes
  AddKeysToAgent yes
  IdentityFile ~/.ssh/id_rsa
Groot
quelle
7
In meinem Fall werden Sie nach dem Neustart immer noch zur Eingabe der Passphrase aufgefordert (macOS Sierrra 10.12.2). Irgendwelche Ideen, wie man das löst?
Inigo333
9
Egal, ich habe gerade das Problem gefunden. Es ist ein Fehler (Feature?) Unter Mac OS X 10.12, bei dem der ssh-Agent beim Start nicht automatisch Passphrasen in den Schlüsselbund lädt. github.com/lionheart/openradar-mirror/issues/15361
inigo333
2
@ inigo333 interessant. Ich habe es gerade aktualisiert und selbst bemerkt!
Groot
1
@Groot, BTW, das Hinzufügen von "Host * UseKeychain yes" zu "~ / .ssh / config", wie in anderen Antworten vorgeschlagen, behebt das Problem.
Inigo333
1
Dies sollte die akzeptierte Antwort sein. Speziell die Konfigurationsdatei in~/.ssh
Xavi
186

Ich habe alle Antworten hier ausprobiert und keine dieser Antworten hat funktioniert ! Mein Passwort würde zwischen Sitzungen / Neustarts meines Mac nicht bestehen bleiben.

Beim Lesen dieses OpenRadar und dieser Twitter-Diskussion habe ich herausgefunden, dass Apple das Verhalten von ssh-agent in macOS 10.12 Sierra absichtlich geändert hat, um die vorherigen SSH-Schlüssel nicht mehr automatisch zu laden. Um das gleiche Verhalten wie El Cap beizubehalten, habe ich Folgendes getan:

  1. ssh-add -K ~/.ssh/id_rsa
    Hinweis: Ändern Sie den Pfad dahin, wo sich Ihr Schlüssel id_rsa befindet.
  2. ssh-add -A
  3. Erstellen Sie die folgende ~/.ssh/configDatei (oder bearbeiten Sie sie, falls vorhanden) :

    Host *
      UseKeychain yes
      AddKeysToAgent yes
      IdentityFile ~/.ssh/id_rsa
    

Und jetzt wird mein Passwort zwischen den Neustarts meines Mac gespeichert!

ChrisJF
quelle
2
Dies kann nützlich sein, um es den Dokumentationsseiten von github oder osx hinzuzufügen . Es fiel mir am schwersten herauszufinden, warum sich mein Mac mit 10.11 und mein anderer mit 10.12 anders verhalten.
Grr
5
ssh-add -AIst mir nach einem OSX-Upgrade passiert, danke (ich denke, es wird nicht benötigt, wenn Sie nur einen Schlüssel haben ~/.ssh/id_rsa)
Dorian
1
Dies ist eine unglaublich nützliche Antwort. Danke, du hast meinen Tag gemacht.
Jan Nash
2
Ab Oktober 2017 ist diese Antwort genau das, wonach Sie suchen, wenn Sie macOS 10.12 oder höher verwenden.
Brogrammer
3
Und das ist jetzt auf den Github-Dokumenten: help.github.com/articles/…
Todd Price
35

Sie können die Passphrase für den Schlüssel entfernen

$ ssh-keygen -p [-P old_passphrase] [-N new_passphrase] [-f keyfile]

oder du kannst rennen

$ ssh-keygen -p

Sie erhalten eine Eingabeaufforderung für die Schlüsseldatei. Standardmäßig ~/.ssh/id_rsadrücken Sie die Eingabetaste

Sie werden aufgefordert, die aktuelle Passphrase einzugeben.

Dann wird eine Eingabeaufforderung für eine neue Passphrase angezeigt. Drücken Sie die Eingabetaste

Sudo Bangbang
quelle
Dies sollte höher sein als viele der nahezu identischen Antworten zum Hinzufügen der Passphrase zum Schlüsselbund. Ich musste meinen öffentlichen Schlüssel einem Administrator geben und eine Passphrase einfügen, deren Eingabe jedes Mal ärgerlich wurde. Dies ist eine saubere Lösung , wenn Sie nicht viel Kontrolle über die Maschine haben ( -K, -k, -Anicht für mich arbeiten).
GWG
1
Dies ist das einzige, was bei Neustarts für mich funktioniert hat. Alle Befehle ssh-add -K, -k usw. haben nichts für mich getan.
Amalgovinus
28

Führen Sie einfach den folgenden Befehl aus:

ssh-add -K

Sie werden nie wieder aufgefordert, das Passwort einzugeben.

user3640130
quelle
3
Das funktioniert gut, aber ich war ein wenig besorgt darüber, einen zufälligen Befehl auszuführen. Wenn Sie jedoch in den Dokumenten überprüfen, ob ssh-adddem Authentifizierungsagenten nur private Schlüsselidentitäten -Khinzugefügt werden , und die Option dies einfach so macht: "Beim Hinzufügen von Identitäten wird jede Passphrase auch im Schlüsselbund des Benutzers gespeichert."
Machineghost
8
Eigentlich hat es nur behoben, bis ich neu gestartet habe :(
machineghost
5
In der Bash-Shell für Windows muss das Flag "-k" in Kleinbuchstaben geschrieben sein. Nur zu Ihrer Information
Fergus
27

Stellen Sie sicher, dass Sie ssh auch für Ihr Repository verwenden

mahtab@mahtab-Lenovo-G50-70:~/my-projects/jenkins-cje-2017$ git remote -v origin [email protected]:eMahtab/jenkins-cje-2017.git (fetch) origin [email protected]:eMahtab/jenkins-cje-2017.git (push)

Geben Sie hier die Bildbeschreibung ein

Verwenden Sie kein https. Wenn Ihre Fernbedienung https verwendet, werden Sie weiterhin nach dem Kennwort gefragt, auch wenn Sie den öffentlichen Schlüssel zu Github und den privaten Schlüssel zu ssh-agent hinzugefügt haben. Unten werden Sie immer nach dem Passwort gefragt

mahtab@mahtab-Lenovo-G50-70:~/my-projects/jenkins-cje-2017$ git remote -v origin https://github.com/eMahtab/jenkins-cje-2017.git (fetch) origin https://github.com/eMahtab/jenkins-cje-2017.git (push)

Mahtab Alam
quelle
Ja, die Unterscheidung zwischen den beiden Remote-URL-Typen war für mich hilfreich. Dies hat mir in Bezug auf git pullund geholfen git push. Ich habe meine URL vom HTTPS-Typ auf den SSH-Typ umgestellt, und es hat funktioniert - ich habe git pullaufgehört, nach dem Passwort zu fragen.
Michael R
1
Das Umschalten kann mit diesem Befehl erfolgen:git remote set-url origin [email protected]:USERNAME/REPOSITORY.git
Guido
17

Ich musste ausführen:

eval `ssh-agent -s`
ssh-add

Hinweis : Sie müssen dies nach jedem Neustart erneut tun. Wenn Sie dies vermeiden möchten, geben Sie es in Ihre " .bashrc " -Datei ein, die sich C:\Users\<<USERNAME>>\.bashrcunter Windows befindet. Es ist wahrscheinlich versteckt, stellen Sie also sicher, dass Sie versteckte Dateien sehen können.

Lösung hier gefunden .

Schwarz
quelle
15

Wenn Sie Windows verwenden, hat dies bei mir funktioniert:

eval `ssh-agent -s`
ssh-add ~/.ssh/*_rsa

Im zweiten Befehl wird nach einer Passphrase gefragt, und das war's.

Yachthafen
quelle
1
Wenn Sie sich abmelden und erneut anmelden, müssen Sie das Kennwort jedes Mal neu eingeben.
Trainoasis
11

Sie müssen einen SSH-Agenten verwenden.
TL; DR : Terminal öffnen und versuchen

ssh-add

vor dem Drücken. Geben Sie Ihre Passphrase ein, wenn Sie dazu aufgefordert werden.

Schauen Sie sich hier die ursprüngliche Antwort von StackExchange an

Junaid
quelle
6

Ich habe kürzlich ein Upgrade auf macOS Mojave durchgeführt und einige Tools über Homebrew installiert, die anscheinend Apples Version ssh-addgegen die andere ausgetauscht haben. Meine Standardversion ssh-add nicht hat die -KWahl. Dies führte zu folgendem Fehler:

# ssh-add: illegal option -- K

Sie können sehen, welche Version von ssh-addIhnen haben, indem Sie ausführen which ssh-add.

(Meins wurde in gespeichert /usr/local/bin/ssh-add)

Um dies zu beheben, musste ich den Schlüssel auf Apples Version zeigen :

/usr/bin/ssh-add -K ~/.ssh/id_rsa

Git / GitHub hat danach perfekt funktioniert. Weitere Informationen finden Sie unter: Fehler: ssh-add: unzulässige Option - K.

aboutaaron
quelle
Hatte das gleiche Problem auf meinem iMac mit High Sierra 10.13.6 - das hat bei mir funktioniert. Vielen Dank!
Emccracken
Meins hatte einwandfrei funktioniert und zufällig nach Passphrasen gefragt - möglicherweise nach einem kürzlich durchgeführten Update. Das hat es behoben! Danke
mc01
5

Unter Mac OSX Sierra habe ich festgestellt, dass die im Github-Problem für Open Radar vorgeschlagenen Korrekturen mein Problem behoben haben. Scheint, als hätte Sierra das Standardverhalten geändert (ich hatte dieses Problem nach dem Upgrade).

Dieses fand ich besonders nützlich: https://github.com/lionheart/openradar-mirror/issues/15361#issuecomment-249059061

ssh-add -A 

Dies führte dazu, dass meine Identität dem Agenten hinzugefügt wurde, nachdem ich ausgeführt wurde

ssh-add -K {/path/to/key}

Zusammenfassend in OSX.12:

ssh-add -K {/path/to/key}
ssh-add -A 

sollte führen zu:

Identity added: {/path/to/file} ({/path/to/file})

BEARBEITEN: Beim nächsten Neustart (auch bekannt als der Agent gestoppt und neu gestartet) ist mir aufgefallen, dass dies nicht mehr funktioniert. Die vollständigere Lösung ist die oben erwähnte von @ChrisJF: Erstellen einer ~/.ssh/configDatei. Hier ist meine Ausgabe:

$ cat ~/.ssh/config
Host *
  UseKeychain yes
  AddKeysToAgent yes
  IdentityFile ~/.ssh/id_rsa

Sie können beliebig viele IdentityFileEinträge hinzufügen , dies ist jedoch die Standardeinstellung. Dies ist die "Trend" -Antwort auf dem Openradar-Link oben, ebenfalls ATM.

zedd45
quelle
Der bearbeitete hat mein Problem gelöst. MacOS Mojave 10.14.3
Jose
4

Arbeitete in LinuxMint / Ubuntu

Führen Sie die folgenden Schritte aus

Schritt 1:

Gehe zu Datei => /.ssh/config

Speichern Sie die folgenden Zeilen in der Datei

Host bitbucket.org
    HostName bitbucket.org
    User git
    IdentityFile /home/apple/myssh-privatekey
    AddKeysToAgent yes

Vergessen Sie nicht, diese Zeile hinzuzufügen AddKeysToAgent yes

Schritt 2:

Öffnen Sie das Terminal und fügen Sie das Keyset zum ssh-add hinzu

$ ssh-add -k /home/apple/myssh-privatekey

Geben Sie die Passphrase ein.

DhineshJa
quelle
3

Ich hatte bereits eine Passphrase festgelegt, aber aus irgendeinem Grund wurde sie nicht mehr erkannt. Also habe ich die Identitätsdatei einfach wieder mit meinem Schlüsselbund hinzugefügt ssh-add -Kund sie hat aufgehört, nach meinem Passwort zu fragen.

André Herculano
quelle
Dies lädt nur Schlüssel und keine Zertifikate
numediaweb
3

Das hat bei mir funktioniert:

git config --global core.sshCommand "'C:\Windows\System32\OpenSSH\ssh.exe'"
daniel sp
quelle
2

Das Problem scheint zu sein, weil Sie von HTTPS und nicht von SSH klonen. Ich habe alle anderen Lösungen hier ausprobiert, hatte aber immer noch Probleme. Das hat es für mich getan.

Verwenden Sie das osxkeychain helperGleiche so:

  1. Finden Sie heraus, ob Sie es installiert haben.

    git credential-osxkeychain

  2. Wenn es nicht installiert ist, werden Sie aufgefordert, es als Teil der Xcode-Befehlszeilentools herunterzuladen.

  3. Wenn es installiert ist, weisen Sie Git an, es osxkeychain helpermit der globalen credential.helperKonfiguration zu verwenden:

    git config --global credential.helper osxkeychain

Wenn Sie das nächste Mal eine HTTPS-URL klonen, werden Sie aufgefordert, den Benutzernamen / das Kennwort einzugeben und den Zugriff auf den OSX-Schlüsselbund zu gewähren. Nachdem Sie dies das erste Mal getan haben, sollte es in Ihrem Schlüsselbund gespeichert sein und Sie müssen es nicht erneut eingeben.

Bryan Perez
quelle
2

Diese Antwort richtet sich in erster Linie an Windows-Benutzer und ist auch gleichermaßen relevant, wenn Sie Probleme beim Klonen mit tfs, github oder gitlab unter einem anderen Betriebssystem haben.

Der Standardauthentifizierungsmodus bei Verwendung von SSH ist der private Schlüssel. Wenn dies aus irgendeinem Grund fehlschlägt, greift der ssh-agent auf die auf Benutzername und Kennwort basierende Authentifizierung zurück.

Es gibt mehrere Gründe, warum die standardmäßige schlüsselbasierte Authentifizierung möglicherweise fehlgeschlagen ist. Im Folgenden sind die häufigsten Fälle aufgeführt:

a) Der ssh-Agent kann die private Standardschlüsseldatei id_rsa nicht finden , und es wird kein anderer Schlüsselpfad explizit angegeben.

b) Der auf dem Server gespeicherte öffentliche Schlüssel ist falsch.

c) Der Pfad, den Sie klonen möchten, ist falsch.

In jedem Fall führen Sie zur Behebung des Problems zunächst den Befehl git clone mit ausführlicher Protokollierung mit dem folgenden Befehl aus:

GIT_TRACE=1 GIT_SSH_COMMAND="ssh -vvv" git clone ssh://pathToYourRepo

Sie können jeden Schritt im Protokoll durchgehen, um eine Vorstellung davon zu erhalten, wo das Problem liegen könnte.


Fehlerbehebung bei (a)

  • Stellen Sie sicher, dass Sie den Standardschlüsselnamen id_rsa im Verzeichnis .ssh haben. Möglicherweise haben Sie beim Generieren des Schlüssels mit dem Befehl ssh-keygen einen anderen Schlüsselnamen angegeben, oder es ist überhaupt kein Schlüssel vorhanden.
  • Wenn Sie einen anderen Schlüssel für die Authentifizierung angeben möchten, verwenden Sie den folgenden Befehl:

    ssh-agent bash -c 'ssh-add ~/.ssh/anotherKey; git clone ssh://pathToYourRepo'
    

Fehlerbehebung bei (b)

  • Stellen Sie sicher, dass beim Speichern des öffentlichen Schlüssels auf dem Server keine zusätzlichen Leerzeichen vorhanden sind.

Fehlerbehebung bei (c)

  • Stellen Sie sicher, dass Sie nicht versuchen, mit der https-Version des Repository-Pfads zu klonen.
Chaosifier
quelle
1

Wenn Sie die SSH-URL für Git verwenden, geben Sie bei Aufforderung zur Eingabe des Kennworts für SSH den Benutzernamen als " Git " und das Kennwort als Anmeldekennwort Ihres Systems ein

Vinayak Deshpande
quelle
Das Ändern des Remote-URL-Typs des Repositorys von HTTPSauf hat SSHmein Problem behoben. Danke @MichaelR, Ihr Artikel war wirklich hilfreich, obwohl ich nichts davon gelesen habe: D
Geradlus_RU
1

Ich möchte eine Antwort für diejenigen hinzufügen, die möglicherweise noch das Kennwort eingeben müssen, da sie IdentitiesOnly als yes festgelegt haben. Dies kann dazu führen, dass mehrere Schlüssel und die Identitätsdatei Schlüssel für Git oder Server sind.

Nachdem ich den Schlüssel generiert und auf den Server kopiert habe:

ssh-keygen
ssh-copy-id -i ~/.ssh/12gpu_server.pub [email protected]

Ich fand es hat nicht funktioniert.

Dann ging ich, um die ~/.ssh/configDatei zu überprüfen , ich sah dies unten:

Host *
IdentitiesOnly yes

Dann füge ich das oben hinzu:

Host 12gpu
HostName 192.168.20.160
User lerner
IdentityFile ~/.ssh/12gpu_server

Ich kann mich einfach durch Eingabe anmelden ssh 12gpu.

Dann können Sie mehrere SSH-Schlüssel mit Ihren Lieblingsnamen hinzufügen und müssen nur die Einstellungen wie die obigen vier Zeilen zur Konfigurationsdatei hinzufügen.

Host ist der Name, den Sie eingeben möchten, wenn Sie später eine Verbindung zum Server herstellen. Der Hostname ist die IP- Adresse oder Domain des Servers wie github.com. Benutzer ist der Benutzername, den Sie auf dem Server anmelden, z. B. der Benutzername oder Git für Github oder Gitlab. und die IdentityFile ist die Datei, in der Sie den von Ihnen generierten Schlüssel speichern.

Lerner Zhang
quelle
1

Im Allgemeinen sind hier die Schritte aufgeführt, mit denen Sie mit ssh ohne Kennwort eine Remoteverbindung zu Ihrem Server herstellen können:

  • Erstellen Sie ein Paar privater und öffentlicher rsa-Schlüssel

    $ ssh-keygen -t rsa -b 4096 -C "your comments"
    
  • Kopieren Sie Ihren öffentlichen Schlüssel und melden Sie sich bei Ihrem Remote-Server an

  • Fügen Sie Ihren öffentlichen Schlüssel zu .ssh / authorized_keys hinzu

  • Wenn Sie mehrere SSH-Schlüssel in Ihrem Computer haben, können Sie Ihren Schlüssel mit SSH-Add hinzufügen

    $ ssh-add /path/to/private/key

  • Versuchen Sie dann ssh auf Ihrem Server

    $ ssh username@your_ip_address

Quelle: http://diary-of-programmer.blogspot.com/2018/08/tips-how-to-ssh-to-your-digitalocean.html

Anang Satria
quelle
0

Verwenden Sie sshdie von Github bereitgestellte Remote-URL nicht https.

Koder verloren
quelle
Das OP sagte eindeutig, dass er SSH anstelle von HTTPS verwendet.
Langsam
0

Wenn Sie Windows und GIT ohne Tools von Drittanbietern verwenden und Ihr Schlüssel nicht durch ein Kennwort / eine Passphrase gesichert ist, verwenden Sie Folgendes:

  1. Die Umgebungsvariable HOME muss auf Ihr Benutzerprofil eingestellt sein (z. B. C: \ Users \ Laptop).
  2. Gehen Sie zum Ordner C: \ Users \ Laptop \ .ssh \ und bearbeiten Sie die Datei "config" (oder erstellen Sie die Datei!). Beispiel: C: \ Users \ Laptop.ssh ​​\ config (Hinweis: Am Ende steht keine.)
  3. Fügen Sie Ihren Git-Server-Host wie folgt zur "config" -Datei hinzu:

    #Example host entry
    Host myhostname.com
        HostName myhostname.com
        User git
        IdentityFile c:/users/laptop/.ssh/id_rsa.pub
        PasswordAuthentication no
        Port 422
    
  4. Speichern Sie die Datei und klonen Sie das Repository wie folgt:

    Git-Klon ssh: //myhostname.com/git-server/repos/picalc.git

Sie können zusätzliche Konfigurationsparameter für den Hosteintrag "config" verwenden. Diese befinden sich in Ihrem lokalen Git-Installationsordner, z. B. " C: \ Programme \ Git \ etc \ ssh \ ssh_config ". Auszug:

# Host *
#   ForwardAgent no
#   ForwardX11 no
#   RhostsRSAAuthentication no
#   RSAAuthentication yes
#   PasswordAuthentication yes
#   HostbasedAuthentication no
#   GSSAPIAuthentication no
#   GSSAPIDelegateCredentials no
#   BatchMode no
#   CheckHostIP yes
#   AddressFamily any
#   ConnectTimeout 0
#   StrictHostKeyChecking ask
#   IdentityFile ~/.ssh/identity
#   IdentityFile ~/.ssh/id_rsa
#   IdentityFile ~/.ssh/id_dsa
#   IdentityFile ~/.ssh/id_ecdsa
#   IdentityFile ~/.ssh/id_ed25519
#   Port 22
#   Protocol 2
#   Cipher 3des
#   Ciphers aes128-ctr,aes192-ctr,aes256-ctr,arcfour256,arcfour128,aes128-cbc,3des-cbc
#   MACs hmac-md5,hmac-sha1,[email protected],hmac-ripemd160
#   EscapeChar ~
#   Tunnel no
#   TunnelDevice any:any
#   PermitLocalCommand no
#   VisualHostKey no
#   ProxyCommand ssh -q -W %h:%p gateway.example.com
#   RekeyLimit 1G 1h
Fabian Stern
quelle
0

Das gleiche Problem für mich und die Lösung war:

In diesem Github-Dokument können Sie die URL der Remote-Datei von https in ssh konvertieren. Verwenden Sie git remote -v, um zu überprüfen, ob die URL von remote ssh oder https lautet. So wechseln Sie von https zu ssh: git remote set-url origin [email protected]: USERNAME / REPOSITORY.git @jeeYem

Bruno Leite
quelle
0

Mobaxterme hatte eine UI-Oberfläche dafür

setting > configuration > SSH > SSH Agent > [check] Use internal SSH agent "moboAgent" > add [your id_rsa and restart mobaxterme to set changes]

Amir Heshmati
quelle
0

SSH-Schlüssel - Immer noch nach Passwort und Passphrase fragen

Unter Windows und unter Verwendung von PuTTY als SSH-Schlüsselgenerator erwies sich diese schnelle und einfache Lösung als die einzige funktionierende Lösung für mich, die eine einfache Windows-Befehlszeile verwendet:

  1. Ihre PuTTY Installation sollte mit mehreren ausführbaren unter anderem pageant.exeundplink.exe
  2. Beim Generieren eines SSH-Schlüssels mit PuttyGen wird der Schlüssel mit der .ppkErweiterung gespeichert
  3. Ausführen "full\path\to\your\pageant.exe" "full\path\to\your\key.ppk"( muss angegeben werden). Dadurch wird der pageantDienst ausgeführt und Ihr Schlüssel registriert (nach Eingabe des Passworts).
  4. Umgebungsvariable festlegen GIT_SSH=full\path\to\plink.exe( darf nicht in Anführungszeichen gesetzt werden). Dadurch werden git ssh-Kommunikations-bezogene Befehle umgeleitet plink, die den pageantDienst zur Authentifizierung verwenden, ohne erneut nach dem Kennwort zu fragen.

Erledigt!

Hinweis 1: Diese Dokumentation warnt vor einigen Besonderheiten beim Arbeiten mit den GIT_SHHEinstellungen für Umgebungsvariablen. Ich kann push, pull, fetchmit einer beliebigen Anzahl von zusätzlichen Parametern auf den Befehl und alles funktioniert gut für mich (ohne dass ein zusätzliches Skript zu schreiben , wie darin vorgeschlagen).

Hinweis 2: Der Pfad zur PuTTYInstallation befindet sich normalerweise in PATHund kann daher weggelassen werden. Wie auch immer, ich bevorzuge es, die vollständigen Pfade anzugeben.

Automatisierung:

Die folgende Batchdatei kann ausgeführt werden, bevor git über die Befehlszeile verwendet wird. Es zeigt die Verwendung der Einstellungen:

git-init.bat
   @ECHO OFF
   :: Use start since the call is blocking
   START "%ProgramFiles%\PuTTY\pageant.exe" "%HOMEDRIVE%%HOMEPATH%\.ssh\id_ed00000.ppk"
   SET GIT_SSH=%ProgramFiles%\PuTTY\plink.exe

Wie auch immer, ich habe die GIT_SSHVariable eingestellt SystemPropertiesAdvanced.exe > Environment variablesund die pageant.exeals RunRegistrierungsschlüssel (*) hinzugefügt .

(*) Schritte zum Hinzufügen eines RunRegistrierungsschlüssels>

  1. Lauf regedit.exe
  2. Navigieren Sie zu HKEY_CURRENT_USER > Software > Microsoft > Windows > CurrentVersion > Run
  3. Do (Menü) Edit > New > String Value
  4. Geben Sie einen beliebigen (aber eindeutigen) Namen ein
  5. Do (Menü) Edit > Modify...(oder Doppelklick)
  6. Geben Sie den in Anführungszeichen eingeschlossenen Pfad zu pageant.exeund ein public key, z. B. "C:\Program Files\PuTTY\pageant.exe" "C:\Users\username\.ssh\id_ed00000.ppk"(Beachten Sie, dass %ProgramFiles%Variablen usw. hier nur funktionieren, wenn Sie Expandable string valueanstelle von String valuein Schritt 3 auswählen .)
PavDub
quelle
0

Wie unter Klonen erklärt, fragt ein Git-Repo von VSTS über SSH nach einem Passwort! Unerwartet

Das Problem kann daran liegen, dass die Authentifizierung mit öffentlichem Schlüssel fehlschlägt. Anschließend wird nach dem Kennwort meines Unternehmenskontos gefragt.

Dies würde nicht passieren, wenn die Authentifizierung mit öffentlichem Schlüssel erfolgreich wäre.

Sie können also id_rsa.pub überprüfen und sogar eine neue erstellen.

Onat Korucu
quelle
-1

Ich denke, die Antwort von @sudo bangbang sollte akzeptiert werden.

Wenn Sie den SSH-Schlüssel generieren, drücken Sie einfach die Eingabetaste, um die Eingabe Ihres Passworts zu überspringen, wenn Sie aufgefordert werden, das Kennwort zu konfigurieren.

Das bedeutet, dass Sie bei Verwendung des SSH-Schlüssels KEIN Passwort benötigen. Denken Sie also daran, dass Sie beim Generieren des SSH-Schlüssels KEIN Passwort eingeben müssen. Drücken Sie einfach die Eingabetaste, um es zu überspringen.

andrava
quelle
1
Dies ist ein sehr schlechter Vorschlag. Siehe @ user456814's Kommentar
Sos