Ich habe es etwas ertragen, dass Github immer nach meinem Benutzernamen und Passwort gefragt hat, wenn ich ein Repository klone. Ich möchte diesen Schritt umgehen, da er mich in meinem Workflow stört.
Ich habe versucht, mithilfe dieser Anleitung einen SSH-Schlüssel einzurichten (was ich erfolgreich getan habe). https://help.github.com/articles/generating-ssh-keys und ich war erfolgreich.
Mein Problem ist, dass ich immer noch nach meinem Github-Passwort und meiner Passphrase gefragt werde, wenn ich ein Repository klone (mit SSH). Nachdem ich diesen SSH-Schlüssel eingerichtet hatte, musste ich das meines Erachtens nicht mehr tun.
Ich bin ein bisschen unsicher, was ich fragen soll, also werde ich nur mein Ziel angeben.
Ich möchte Repositorys klonen können, ohne ständig meine Github-Informationen eingeben zu müssen .
Was fehle ich mit meinem SSH-Schlüssel? Wenn irgendjemand Anleitungen oder Ressourcen zur Verfügung stellen kann, würde ich es begrüßen, da ich mich bei der SSH-Authentifizierung in GitHub immer etwas verloren gefühlt habe.
Soweit ich weiß, ist dies ein Befehl, der testet, ob die Dinge richtig funktionieren. Hier ist die Ausgabe 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.
Wenn ich mein Passwort eingebe, sollte das zuerst fehlschlagen? Wenn ich dann meine Passphrase eingebe, ist sie gültig.
Wenn Sie mit HTTPs
URLs arbeiten, werden Sie immer nach Ihrem Benutzernamen/Passwort gefragt.
Wenn Sie SSH
beim Klonen/Einstellen von Fernbedienungen korrekt verwenden. Stellen Sie dann sicher, dass Sie einen SSH-Agenten haben, der sich Ihr Passwort merken kann. Auf diese Weise geben Sie Ihre Passphrase nur einmal pro Terminalsitzung ein.
Wenn es Ihnen immer noch zu ärgerlich ist, legen Sie einfach einen SSH-Schlüssel ohne Passphrase fest.
Es kann Zeiten geben, in denen Sie die Passphrase nicht im Schlüsselbund speichern möchten, die Passphrase jedoch nicht immer wieder eingeben müssen möchten.
Das können Sie so machen:
ssh-add ~/.ssh/id_rsa
Dadurch werden Sie nach der Passphrase gefragt, geben Sie sie ein und werden erst nach einem Neustart erneut gefragt.
Wie @dennis in den Kommentaren ausführt, können Sie die Option -K
(-k
für Ubuntu) verwenden, um die Passphrase durch Speichern in Ihrem Schlüsselbund für einen Neustart beizubehalten:
ssh-add -K ~/.ssh/id_rsa
Erneut werden Sie aufgefordert, die Passphrase einzugeben, und dieses Mal werden Sie nie wieder nach dieser Identität gefragt.
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 hat:
ssh-add -K ~/.ssh/id_rsa
Sie werden dann aufgefordert, Ihr Kennwort einzugeben, das in Ihrem Schlüsselbund gespeichert wird.
Edit - Handle restart
Damit Sie Ihr Passwort auch nach einem Neustart nicht eingeben müssen, fügen Sie Folgendes zu Ihrer ssh-Konfigurationsdatei hinzu (im Allgemeinen unter ~/.ssh/config).
Host *
UseKeychain yes
AddKeysToAgent yes
IdentityFile ~/.ssh/id_rsa
Ich habe alle Antworten hier ausprobiert und keine dieser Antworten hat funktioniert ! Mein Passwort würde zwischen Sitzungen/Neustarts meines Mac nicht bestehen bleiben.
Was ich beim Lesen von dieses OpenRadar und diese Twitter-Diskussion herausgefunden habe, war Apple hat das Verhalten absichtlich geändert für ssh-agent in macOS 10.12 Sierra auf no länger automatisch die vorherigen SSH-Schlüssel laden. Um das gleiche Verhalten wie El Cap beizubehalten, habe ich Folgendes getan:
ssh-add -K ~/.ssh/id_rsa
ssh-add -A
Erstellen (oder bearbeiten, falls vorhanden) Sie die folgende ~/.ssh/config
-Datei:
Host *
UseKeychain yes
AddKeysToAgent yes
IdentityFile ~/.ssh/id_rsa
Und jetzt wird mein Passwort zwischen Neustarts meines Macs gespeichert!
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 ist es ~/.ssh/id_rsa
, drücken Sie also die Eingabetaste
Sie werden aufgefordert, die aktuelle Passphrase einzugeben.
Dann wird nach einer neuen Passphrase gefragt. Drücken Sie die Eingabetaste
Führen Sie einfach den folgenden Befehl aus:
ssh-add -K
Sie werden nie wieder aufgefordert, das Passwort einzugeben.
Stellen Sie sicher, dass Sie ssh auch für Ihr Repository verwenden
[email protected]:~/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)
Verwenden Sie kein https. Wenn Ihre Fernbedienung https verwendet, fragt sie weiterhin nach dem Kennwort, auch wenn Sie den öffentlichen Schlüssel zu Github und den privaten Schlüssel zu ssh-agent hinzugefügt haben. Unten wird immer nach einem Passwort gefragt
[email protected]:~/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)
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.
Ich musste ausführen:
eval `ssh-agent -s`
ssh-add
Hinweis : Dies müssen Sie nach jedem Neustart erneut tun. Wenn Sie dies vermeiden möchten, geben Sie es in Ihre Datei ". Bashrc " ein, die sich unter Windows in C:\Users\<<USERNAME>>\.bashrc
befindet. Es ist wahrscheinlich versteckt, stellen Sie also sicher, dass Sie versteckte Dateien sehen können.
Lösung gefunden hier .
Versuchen Sie ssh-agent
wie dort erklärt: https://help.github.com/articles/working-with-ssh-key-passphrases
Diese Antwort hat für mich in Ubuntu
funktioniert.
In diesem GitHub-Dokument können Sie die URL der Fernbedienung von https in ssh konvertieren. https://help.github.com/articles/changing-a-remote-s-url/
Um zu überprüfen, ob die URL der Fernbedienung ssh oder https lautet, verwenden Sie git remote -v
.
So wechseln Sie von https zu ssh:git remote set-url Origin [email protected]:USERNAME/REPOSITORY.git
Unter Mac OS X Sierra stellte ich fest, dass die im Github-Problem für Open Radar vorgeschlagenen Korrekturen mein Problem behoben haben. Sierra hat anscheinend das Standardverhalten geändert (dieses Problem trat nach dem Upgrade auf).
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 hatte
ssh-add -K {/path/to/key}
Zusammenfassend in OSX.12:
ssh-add -K {/path/to/key}
ssh-add -A
sollte ergeben:
Identity added: {/path/to/file} ({/path/to/file})
BEARBEITEN: Ich bemerkte, dass das nächste Mal, wenn ich einen vollständigen Neustart durchführte (der Agent wurde angehalten und neu gestartet), dies nicht mehr funktionierte. Die vollständigere Lösung ist die oben erwähnte @ChrisJF: Erstellen einer ~/.ssh/config
-Datei. Hier ist meine Ausgabe:
$ cat ~/.ssh/config
Host *
UseKeychain yes
AddKeysToAgent yes
IdentityFile ~/.ssh/id_rsa
Sie können beliebig viele IdentityFile
Einträge hinzufügen, dies ist jedoch die Standardeinstellung. Dies ist auch die "Trend" -Antwort auf dem Openradar-Link oben, ATM.
Ich habe kürzlich ein Upgrade auf macOS Mojave durchgeführt und einige Tools über Homebrew installiert, bei denen anscheinend Apples Version von ssh-add
gegen die andere ausgetauscht wurde. Meine Standardversion von ssh-add
hatte nicht die Option -K
. Dies führte zu folgendem Fehler:
# ssh-add: illegal option -- K
Sie können sehen, welche Version von ssh-add
Sie haben, indem Sie which ssh-add
ausführen.
(Meine wurde in /usr/local/bin/ssh-add
gespeichert.)
Um dies zu beheben, musste ich den Schlüssel auf Apples Version verweisen :
/usr/bin/ssh-add -K ~/.ssh/id_rsa
Git/GitHub hat danach einwandfrei funktioniert. Weitere Informationen finden Sie unter: Fehler: ssh-add: unzulässige Option - K
Ich hatte bereits eine Passphrase festgelegt, aber aus irgendeinem Grund wurde sie nicht mehr erkannt. Also habe ich die Identitätsdatei mit ssh-add -K
erneut zu meinem Schlüsselbund hinzugefügt und nicht mehr nach meinem Passwort gefragt.
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 den Keyset zum ssh-add hinzu
$ ssh-add -k /home/Apple/myssh-privatekey
geben Sie die Passphrase ein.
Das Problem scheint darin zu liegen, dass Sie von HTTPS und nicht von SSH klonen. Ich habe alle anderen Lösungen ausprobiert, hatte aber immer noch Probleme. Das hat es für mich getan.
Verwenden Sie den osxkeychain helper
wie folgt:
Finden Sie heraus, ob Sie es installiert haben.
git credential-osxkeychain
Wenn es nicht installiert ist, werden Sie aufgefordert, es als Teil der Xcode-Befehlszeilentools herunterzuladen.
Wenn es installiert ist, weisen Sie Git an, osxkeychain helper
mit der globalen credential.helper
-Konfiguration 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.
Wenn Sie die ssh-URL für git verwenden, geben Sie bei der Aufforderung zur Eingabe des Kennworts für ssh den Benutzernamen als " git " und das Kennwort als das Anmeldekennwort Ihres Systems ein
Im Allgemeinen führen Sie die folgenden Schritte aus, um mithilfe von ssh ohne Kennwort eine Remoteverbindung zu Ihrem Server herzustellen:
Erstellen Sie ein Paar aus einem privaten und einem öffentlichen 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
Dann versuche ssh auf deinem Server
$ ssh [email protected]_ip_address
Quelle: http://diary-of-programmer.blogspot.com/2018/08/tips-how-to-ssh-to-your-digitalocean.html
Ich möchte eine Antwort für diejenigen hinzufügen, die das Kennwort möglicherweise noch eingeben müssen, weil sie IdentitiesOnly als Ja 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 habe ich die ~/.ssh/config
-Datei überprüft. Ich habe das unten gesehen:
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 nur anmelden, indem ich ssh 12gpu
eingebe.
Dann können Sie mehrere SSH-Schlüssel mit Ihren Lieblingsnamen hinzufügen, und Sie 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. das Hostname ist die IP oder Domain des Servers wie github.com; Benutzer ist der Benutzername, den Sie auf dem Server wie den Benutzernamen oder git für github oder gitlab anmelden. und IdentityFile ist die Datei, in der Sie den von Ihnen generierten Schlüssel speichern.
Verwenden Sie die ssh
Remote-URL von Github, nicht https
.
Ich denke, @ Sudo Bangbang Antwort sollte akzeptieren werden.
Wenn Sie einen SSH-Schlüssel generieren, drücken Sie einfach die Eingabetaste, um die Eingabe Ihres Kennworts zu überspringen, wenn Sie zur Eingabe des Konfigurationskennworts aufgefordert werden.
Das bedeutet, dass Sie KEIN Passwort BENÖTIGEN, wenn Sie den SSH-Schlüssel verwenden. Denken Sie also daran, dass Sie beim Generieren des SSH-Schlüssels KEIN Passwort eingeben. Drücken Sie einfach die Eingabetaste, um das Passwort zu überspringen.
Mobaxterme hatte eine Benutzeroberfläche dafür
setting > configuration > SSH > SSH Agent > [check] Use internal SSH agent "moboAgent" > add [your id_rsa and restart mobaxterme to set changes]
Das gleiche Problem für mich und die Lösung war:
Sehen Sie sich dieses Github-Dokument an, um die URL der Fernbedienung von https in ssh zu konvertieren. Verwenden Sie git remote -v, um zu überprüfen, ob die URL der Fernbedienung ssh oder https lautet. So wechseln Sie von https zu ssh: git remote set-url Herkunft [email protected]: USERNAME/REPOSITORY.git @jeeYem
Das hat bei mir funktioniert: git config --global core.sshCommand "'C:\Windows\System32\OpenSSH\ssh.exe'"
Wenn Sie mit Windows und GIT ohne Tools von Drittanbietern sind und Ihr Schlüssel nicht gesichert durch ein Passwort/eine Passphrase ist, verwenden Sie Folgendes:
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
Speichern Sie die Datei und klonen Sie das Repository wie folgt:
git clone ssh: //myhostname.com/git-server/repos/picalc.git
Sie können zusätzliche Konfigurationsparameter für den Host-Eintrag der "config" -Datei verwenden. Diese finden Sie in Ihrem lokalen Git-Installationsordner, z. "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