Heute hatte ich mal eine Anfrage von einem Mitarbeiter eines relativ neuen Kunden, er hatte ein neues Notebook und musste sich einige Tools (u.a. Visual Studio Code) einrichten. Dazu gehörte auch, ein Git-Repository des Kunden entsprechend abzurufen.

Ich persönlich nutze ja immer das Windows Subsystem for Linux 2, mit dem ich einfach mit einer Ubuntu-Kommandozeile dann die ganzen Git-Dinge mache.
Das funktioniert auch ganz gut, bis eben auf die Integration in Visual Studio Code, bei dem z.B. ein pull oder push eben nicht funktioniert, da das Git-Repository über SSH und Private/Public-Key angebunden ist.

Beim Push/Pull wird dann eben nicht der Schlüssel erkannt / gefunden und die Aktion schlägt entsprechend fehl.

Früher musste man ja immer Git und SSH über externe Tools (z.B. putty) installieren, was ziemlich genervt und manchmal etwas umständlich war. Inzwischen hat Windows 10 seit Version 1809 aber SSH integriert, was mir heute auch neu war, aber was natürlich der Hammer ist.

Das ganze installiert man am besten über die Powershell.

Startet daher als erstes die Powershell als Administrator (Start-Menü -> Powershell eintippen -> “Windows Powershell” -> rechts klicken -> “Als Administrator ausführen”).

Damit verschiedene Services SSH nutzen können, aktiviert am besten erst einmal den SSH-Agent. Dieser sorgt dafür, dass SSH-Verbindungen, die aufgebaut werden sollen an die Schlüsselpaare kommen.

Führt dazu folgende Befehle aus:

Set-Service ssh-agent -StartupType Automatic
Start-Service ssh-agent
Get-Service ssh-agent

Die letzte Zeile sollte Euch entsprechend Infos andrucken:

Status Name DisplayName
—— —- ———–
Running ssh-agent OpenSSH Authentication Agent

Sollte das nicht funktionieren, stellt sicher, dass ihr die Powershell wirklich mit Administrator-Rechten gestartet habt!!

Nun generiert ihr Euer Schlüsselpärchen mit folgendem Befehl:

ssh-keygen

Sobald ihr den Befehl abgeschickt habt, fragt Euch ssh-keygen, an welcher Stelle das Key-Pärchen abgelegt werden soll. Lasst es am besten im Standardverzeichnis (Nutzerverzeichnis C:\Users\xxx\.ssh\id_rsa)  (ersetzt xxx durch euren Nutzernamen).
Anschließend wird man nach einer Passphrase gefragt, lasst diese am besten leer. Dann wird noch einmal nach der Passphrase gefragt (als Bestätigung), lasst auch diese leer.
Sobald ihr das bestätigt habt, werden public und private Key erzeugt.

Nun können wir das generierte Schlüsselpärchen einfach dem ssh-agent bekannt machen. Gebt dazu einfach folgenden Befehl ein:

ssh-add

Das sollte dann:

Identity added: C:/Users/xxx/.ssh/id_rsa (C:\Users\xxx/.ssh/id_rsa)

andrucken.

Prima, euer SSH-Key ist jetzt erzeugt und beim ssh-agent hinterlegt.

Damit euer Schlüssel dann auf dem Server angenommen wird, müsst ihr den public key in der authorized_keys-Datei auf dem Server hinterlegen. Leider bietet Windows im Gegensatz zu Linux nicht den eleganten Weg mit dem ssh-copy-id-Tool, sondern man muss das manuell machen.
Öffnet im Verzeichnis C:\Users\xxx\.ssh die Datei: id_rsa.pub im Editor oder Wordpad und kopiert Euch den gesamten Inhalt der Datei in der Zwischenablage.
Baut dann eine Verbindung zu dem Zielserver auf und loggt Euch (einmalig) mit Nutzername / Kennwort ein.
Wechselt dann in das .ssh-Verzeichnis des Server-Benutzers:


cd .ssh

und editiert die authorized_keys-Datei mit einem Editor eurer Wahl (nano, pico, vi, …)
Hängt einfach eine Zeile an und kopiert dort den Schlüssel aus der id_rsa.pub in diese Zeile und speichert die Datei.

Sollte die authorized_keys-Datei noch nicht existiert haben (d.h. wurde neu angelegt), muss bei dieser noch die Berechtigung korrekt gesetzt werden. Macht das mit folgendem Befehl:

chmod 600 authorized_keys

Beendet die Sitzung und versucht noch einmal, eine SSH-Verbindung aufzubauen. Das sollte nun grundsätzlich funktionieren, auch ohne Passwort.

Et voila, eure SSH-Sitzung funktioniert nun.

Nun richten wir noch git ein. Ebenfalls seit einer neueren Windows-Version könnt ihr Git auch direkt über die Powershell installieren. Wenn ihr Git für alle Nutzer installieren möchtet, nutzt wiederum eine Powershell mit Administrator-Rechten, grundsätzlich könnt ihr die Installation aber auch vornehmen, ohne spezielle Admin-Rechte, dann wird Git nur für Euren Nutzer installiert.

Führt in der Powershell folgenden Befehl aus:

winget install --id Git.Git -e --source winget

Für den unwahrscheinlichen Fall, dass das nicht funkioniert, sondern ihr folgende Meldung (in rot) bekommt:

winget : The term ‘winget’ is not recognized as the name of a cmdlet, function, script file, or operable program.
Check the spelling of the name, or if a path was included, verify that the path is correct and try again.
At line:1 char:1
+ winget
+ ~~~~~~
+ CategoryInfo : ObjectNotFound: (winget:String) [], CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException

installiert bitte die App: “App Installer” aus dem Windows Store. Nach der Installation sollte winget als Befehl zur Verfügung stehen.

Nach dem Download von Git solltet ihr die entsprechenden Einträge im Start-Menü haben (Git Gui, Git CMD (Deprecated), Git Bash).
Installiert ihr das ganze als Administrator, sollte Git bereits in Eurem Pfad hinterlegt sein. Im anderen Fall, passt bitte die Einstellungen des Systempfads an und fügt das Git-Verzeichnis hinzu, so dass git dann entsprechend ohne Angabe des Pfads aufgerufen werden kann.

Nun könnt ihr in euer Verzeichnis gehen und:

git clone <URL>

starten, wenn alles gut gelaufen ist, sollte euer SSH-Key angenommen werden und euer Repository ausgecheckt werden können. Ersetzt die URL natürlich durch den Namen / den Login eures Servers am besten in der Form: <username>@<domainname> z.B. git@meinserver.org.

Jetzt könnt ihr in Visual Studio Code einfach den Ordner als Projekt öffnen und über die Sourcecode-Verwaltungs-Funktionen von Visual Studio Code entsprechend euren Sourcecode, Branches, etc. managen.

Dieser Beitrag hat einen Kommentar

  1. Adrian

    Hallo Carsten,

    Danke für die Tipps, insb. das SSH direkt in Windows integriert ist, was mir auch neu (ich nutze es aber auch eher gekapselt und selten die Shell direkt) …

    Für Konsolen-Nutzer kann ich noch das neue „Windows Terminal“ empfehlen.

    Sehr viel Software lässt sich auch gut über Chocolatey installieren (z. B. auch Git) und vor allem aktualisieren. Finde ich wesentlich komfortabler und intuitiver als die PowerShell.

    Viele Grüße

    Adrian

Schreibe einen Kommentar

Artikel, die Dir auch gefallen könnten

Remote-Desktop unter Manjaro

Hallo da draußen, Leute die mich etwas besser kennen, wissen, dass ich ein großer Fan von Manjaro Linux bin. Ich nutze das schon seit etlichen

mehr...

Linux und Active Directory

Hallo Welt da draußen, heute bin ich mal wieder fast verzweifelt. Ein bisschen habe ich mich an meine Zeiten als Angestellter mit dem Projekt der

mehr...