it-swarm.com.de

Ausführen des SSH-Agenten beim Starten von Git Bash unter Windows

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!

107
zchholmes

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.

105
VonC

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:

Vielen Dank.

24
Jignesh Gohel

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).

5
Alasdair

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:

  • ssh-agent im Pfad
  • shh-add in path (beide durch Wahl der Option "RED" bei der Installation von git
  • private Schlüssel befinden sich im Ordner% USERPROFILE% /. ssh
  • namen privater Schlüssel beginnen mit id (z. B. id_rsa)
2
Erez A. Korn

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

0
user2711262

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`
0
oklas