Ich benutze git bash. Ich muss benutzen
eval `ssh-agent.exe`
ssh-add /my/ssh/location/
jedes mal wenn ich eine neue git bash starte.
Gibt es eine Möglichkeit, den SSH-Agenten dauerhaft festzulegen? Oder hat Windows eine gute Möglichkeit, die SSH-Tasten zu verwalten?
Ich bin ein neuer Kerl, bitte gib mir ein ausführliches Tutorial, danke!
In einer git bash-Sitzung können Sie ein Skript zu ~/.profile
oder ~/.bashrc
hinzufügen ( wobei ~
normalerweise auf %USERPROFILE%
eingestellt ist), damit die Sitzung automatisch den ssh-agent
startet. Wenn die Datei nicht existiert, erstellen Sie sie einfach.
Dies beschreibt GitHub in " Mit SSH-Schlüsselpassphrasen arbeiten ".
Der Abschnitt " Automatischer Start des ssh-agent auf Git für Windows " dieses Artikels enthält ein robustes Skript, das überprüft, ob der Agent ausgeführt wird oder nicht. Nachfolgend finden Sie nur einen Ausschnitt. Die vollständige Lösung finden Sie im GitHub-Artikel.
# This is just a snippet. See the article above.
if ! agent_is_running; then
agent_start
ssh-add
Elif ! agent_has_keys; then
ssh-add
fi
Andere Ressourcen:
" Den ssh-agent mit git run vom Windows-Befehl Shell " arbeiten zu lassen, hat ein ähnliches Skript, aber ich würde hauptsächlich auf den GitHub-Artikel oben verweisen, der robuster und aktueller ist.
P.S: Diese Anweisungen beziehen sich auf eine Bash-Shell, die in Windows 10 Linux Subsystem geöffnet wurde, und enthalten keine Informationen zum Verknüpfen von in Windows generierten SSH-Schlüsseln mit Bash unter Ubuntu unter Windows .
1) Aktualisieren Sie Ihren . Bashrc , indem Sie Folgendes hinzufügen
# Set up ssh-agent
SSH_ENV="$HOME/.ssh/environment"
function start_agent {
echo "Initializing new SSH agent..."
touch $SSH_ENV
chmod 600 "${SSH_ENV}"
/usr/bin/ssh-agent | sed 's/^echo/#echo/' >> "${SSH_ENV}"
. "${SSH_ENV}" > /dev/null
/usr/bin/ssh-add
}
# Source SSH settings, if applicable
if [ -f "${SSH_ENV}" ]; then
. "${SSH_ENV}" > /dev/null
kill -0 $SSH_AGENT_PID 2>/dev/null || {
start_agent
}
else
start_agent
fi
2) Führen Sie dann $ source ~/.bashrc
Aus, um Ihre Konfiguration neu zu laden.
Die oben genannten Schritte wurden von https://github.com/abergs/ubuntuonwindows#2-start-an-bash-ssh-agent-on-launch ausgeführt
3) Erstellen Sie eine SSH-Konfigurationsdatei, falls nicht vorhanden. Verwenden Sie den folgenden Befehl, um einen neuen zu erstellen: .ssh$ touch config
4) Füge folgendes zu ~/.ssh/config
Hinzu
Host github.com-<YOUR_GITHUB_USERNAME>
HostName github.com
User git
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_work_gmail # path to your private key
AddKeysToAgent yes
Host csexperimental.abc.com
IdentityFile ~/.ssh/id_work_gmail # path to your private key
AddKeysToAgent yes
<More hosts and github configs can be added in similar manner mentioned above>
5) Fügen Sie Ihren Schlüssel mit dem Befehl $ ssh-add ~/.ssh/id_work_gmail
Zum SSH-Agenten hinzu. Anschließend sollten Sie in der Lage sein, mit ssh eine Verbindung zu Ihrem github-Konto oder Remote-Host herzustellen. Für z.B. im Kontext der obigen Codebeispiele:
$ ssh github.com-<YOUR_GITHUB_USERNAME>
oder
$ ssh <USER>@csexperimental.abc.com
Dieses Hinzufügen des Schlüssels zum SSH-Agenten sollte nur einmalig erforderlich sein.
6) Melden Sie sich jetzt von Ihrer Bash-Sitzung auf dem Windows Linux-Subsystem ab, dh beenden Sie alle Bash-Konsolen erneut und starten Sie eine neue Konsole erneut. Versuchen Sie, SSH auf Ihrem Github-Host oder einem anderen Host auszuführen, wie in der SSH-Konfigurationsdatei konfiguriert Schritte.
Hinweis:
Wenn Sie auf Bad owner or permissions on ~/.ssh/config
Stoßen, aktualisieren Sie die Berechtigungen mit dem Befehl chmod 600 ~/.ssh/config
. Referenz: https://serverfault.com/a/253314/9891
Für die obigen Schritte benötigen Sie OpenSSH v 7.2 und neuer . Wenn Sie eine ältere Version haben, können Sie diese mithilfe der unter https://stackoverflow.com/a/41555393/936494 genannten Schritte aktualisieren
Die gleichen Details finden Sie in der Gist Windows 10 Linux Subsystem SSH-Agent Probleme
Vielen Dank.
Der einfachste Weg, dies zu erreichen, war die Verwendung von Pageant als SSH-Agent und Plink.
Sie müssen eine PuTTY-Sitzung für den Hostnamen konfigurieren, der in Ihrer Fernbedienung verwendet wird.
Sie benötigen auch plink.exe, das von derselben Site wie PuTTY heruntergeladen werden kann.
Und Sie brauchen Pageant, wenn Ihr Schlüssel geladen ist. Ich habe in meinem Startordner eine Verknüpfung zum Festlegen, die meinen SSH-Schlüssel lädt, wenn ich mich anmelde.
Wenn Sie git-scm installieren, können Sie es so definieren, dass es Schildkröte/Plink anstelle von OpenSSH verwendet.
Der Nettoeffekt ist, dass Sie Git-bash jederzeit öffnen können und Push/Pull, ohne für Passphrasen herausgefordert zu werden.
Dasselbe gilt für PuTTY- und WinSCP-Sitzungen, wenn der Festzug Ihren Schlüssel geladen hat. Das macht das Leben um einiges einfacher (und sicherer).
Da ich PuTTY nicht als Workaround unter Windows verwenden möchte, habe ich ein sehr einfaches Dienstprogramm ssh-agent-wrapper erstellt. Es durchsucht Ihre .ssh-Ordner und fügt dem Agenten alle Ihre Schlüssel hinzu. Sie müssen es nur im Windows-Startordner ablegen, damit es funktioniert.
Annahmen:
Erstellen Sie eine neue Datei .bashrc in Ihrem ~ Verzeichnis.
Dort können Sie Ihre Befehle einfügen, die Sie bei jedem Start der Bash ausführen möchten
Einfache Zwei-String-Lösung aus diese Antwort :
Für sh, bash usw.:
# ~/.profile
if ! pgrep -q -U `whoami` -x 'ssh-agent'; then ssh-agent -s > ~/.ssh-agent.sh; fi
. ~/.ssh-agent.sh
Für csh, tcsh usw.:
# ~/.schrc
sh -c 'if ! pgrep -q -U `whoami` -x 'ssh-agent'; then ssh-agent -c > ~/.ssh-agent.tcsh; fi'
eval `cat ~/.ssh-agent.tcsh`