SSH + Agent (Key) unter Windows verwenden

In Windows 10 und höher ist es jetzt möglich SSH nativ zu verwenden und sogar Keys zu generieren.

dazu in einer Eingabeaufforderung folgenden Befehl eingeben, die Vorgaben mit Enter bestätigen oder wer es sicherer haben möchte ein Passwort für den Private-Key angeben, welches man sich natürlich auch merken muss):  ssh-keygen -t ed25519

Eingabeaufforderung
Eingabeaufforderung

Dadurch werden zwei Files (ein Private-Key und ein Public-Key) im Verzeichnis .ssh des Users erzeugt.

Um das ganze jetzt komfortabel nutzen zu können, muss man den Private-Key in den SSH-Agent importieren:

Dazu eine Powershell mit Administrativen Rechten starten (Als Administrator ausführen) und folgende Befehle einfügen und ausführen:

# By default the ssh-agent service is disabled. Configure it to start automatically.
# Make sure you're running as an Administrator.
Get-Service ssh-agent | Set-Service -StartupType Automatic

# Start the service
Start-Service ssh-agent

# This should return a status of Running
Get-Service ssh-agent

# Now load your key files into ssh-agent
ssh-add $env:USERPROFILE\.ssh\id_ed25519

PowerShell als Admin
Das sollte dann in etwa so aussehen

Nach dem Import, sollte der Private-Key (id_ed25519) auf einen USB-Stick kopiert und vom Rechner gelöscht werden. Den USB-Stick an einem sicheren Ort aufbewahren, die Datei ist sehr wichtig! Wer es noch sicherer haben will, aus welchen Gründen auch immer kann auch VeraCrypt verwenden um den gesamten USB-Stick zu Verschlüsseln und mit einem Passwort sichern.

Den Inhalt von der Datei id_ed25519.pub (zu finden im Verzeichnis .ssh im Userverzeichnis – z.B. \users\ak\.ssh) auf dem Zielrechner in das File authorized_keys in den Ordner .ssh im Homeverzeichnis des gewünschten Users kopieren (z.B. /home/pi/).

Jetzt sollte es möglich sein sich mit dem Key auf das Zielsystem per SSH zu verbinden. Dazu eine Eingabeaufforderung oder eine Powershell öffnen und folgendes eingeben:

ssh user@ip-adresse -p 3522 (z.B. pi@192.168.0.77) -p (der Port) ist optional und muss nur angegeben werden, wenn er sich vom Standport (22) unterscheidet.

Beim ersten Verbindungsversuch wird eine „Fehlermeldung“ erscheinen, diese einfach mit „yes“ bestätigen.

The authenticity of host '[192.168.0.77]:3522 ([192.168.0.77]:3522)' can't be established.
ECDSA key fingerprint is SHA256:NKDWHE4urTdCLItv0MV2vBxLvMw6+5hJN9kemHYn0zw.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes

Um es noch komfortabler zu machen, kann man im Verzeichnis .ssh (im Windows Userverzeichnis) eine Datei config mit folgendem Inhalt anlegen:

Host pi
  HostName 192.168.0.77
  User pi
  Port 22

Für jeden Host einen entsprechenden Block anlegen, obwohl die Einträge eigentlich selbsterklärend sind hier trotzdem eine kleine Hilfestellung.

  • Host = ein beliebiger Name, der als Alias zum Verbinden dient
  • HostName = die IP-Adresse oder der FQDN (Hostname)
  • User = der Username der für die Authentifizierung verwendet wird
  • Port = Der SSH Port muss auch angebene werden, wenn es der Defaultport (22) ist.

Wenn die config Datei angelegt ist kann man in einer normalen Eingabeaufforderung einfach ssh und den HOST (diesen beliebigen Namen) – z.B. ssh pi angeben um sich schnell zu verbinden.

Im Windows Terminal, welches man sich über den Microsoft-Store installieren kann, oder per WinGet (falls vorhanden) dazu einfach in einer Eingabeaufforderung
winget install microsoft.windowsterminal
eingeben. Dort gibt es sogenannte Profile um sich noch schneller und einfacher verbinden zu können.

Hier im Profil als ausführende Datei z.B. ssh pi (dazu ist aber eine config Datei notwendig) angeben. Das funktioniert aber nur wenn man den Private-Key vorher in den SSH-Agent importiert hat. Die alternative Methode ohne config mit ssh pi@192.168.0.77 -p 35022 -i c:\users\ak\.ssh\ id_ed25519 würde ich nicht empfehlen, da man hier den Private-Key auf dem System lassen muss und sollte der Key ein Passwort haben, dieses jedes mal eingeben muss.

Wer es noch mehr „fancy“ haben möchte, kann sich SSHS installieren, damit erhält man ein Menü um sich schnell auf unterschiedliche Rechner zu verbinden, sieht dann mehr nach Linux-Shell aus.

SSHS

Um SSHS zu installieren sind ein paar Schritte notwendig:

Eine Powershell mit Administrativen Rechten starten (Als Administrator ausführen) und folgende Zeile einfügen und ausführen:

Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://community.chocolatey.org/install.ps1'))

Danach choco install sshs eingeben und mit Enter bestätigen (eventuell muss man noch einmal y eingeben um die Installation abzuschließen.)

Um Choco und ssh auf den aktuellen Stand zu bringen, in einer Powershell (mit Adminrechten) folgendes eingeben: choco upgrade all

Unter C:\ProgramData\chocolatey\bin\ wurde das File sshs.exe angelegt, ab besten eine Verknüpfung davon auf dem Desktop erstellen für einen schnellen Zugriff.

Kommentar hinterlassen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert