| 23. März 2026
Die Administration kritischer Plattformen wie Jazz (CORS-Verwaltung, EWM-Widget-Deployment, DB2-Datenbankwartung) erfordert eine reaktionsschnelle Oberfläche und eine reibungslose Handhabung sicherer Datenflüsse. Bei Syncheo sind wir von schwerfälligen Drittanbieter-Tools wie mRemoteNG auf einen 100 % nativen Windows-Stack migriert.
Dieser Leitfaden beschreibt, wie Sie Ihre Windows-Umgebung in eine optimierte, kostenfreie und sichere DevOps-Workstation verwandeln.
1. Standardisierte Konnektivität: OpenSSH & Bastion
Der native Windows SSH-Client macht Sie unabhängig von proprietären Formaten (wie PuTTys .ppk). Wir zentralisieren die gesamte Konfiguration in %USERPROFILE%\.ssh\config.
Architektur mit Jump Server (Bastion)
Für den Zugriff auf isolierte Server verwenden wir einen Bastion-Host auf Port 2222. Die Direktive ProxyJump macht diesen Sprung für den Benutzer vollständig transparent.
# Bastion-Definition
Host bastion-scw
HostName <BASTION_IP>
User bastion
Port 2222
IdentityFile C:\Users\<IhrUser>\Keys\bastion.pem
# Jazz-Hauptserver über den Bastion
Host jazz-prod
HostName <JAZZ_IP>
User root
ProxyJump bastion-scw
IdentityFile C:\Users\<IhrUser>\Keys\jazz_prod.pem
# DB2-Instanz über den Bastion
Host jazz-db2
HostName <DB2_IP>
User root
ProxyJump bastion-scw
IdentityFile C:\Users\<IhrUser>\Keys\db2_key.pem
Mit dieser Konfiguration tunnelt der Befehl ssh jazz-prod automatisch über den Bastion ohne zusätzliche Einrichtung. Die Option ProxyJump verwaltet den Tunnel nativ und sicher.
2. Windows Terminal: Kontextbasierte Organisation
Um die Ordnerstruktur von mRemoteNG zu ersetzen, nutzen wir die Befehlspalette (Ctrl+Shift+P) des Windows Terminals. Dies ermöglicht eine wesentlich schnellere „Search-first"-Navigation.
Speicherort der Konfigurationsdatei
Die Datei settings.json ist direkt über Windows Terminal unter Einstellungen → JSON-Datei öffnen zugänglich oder unter folgendem Pfad:
%LOCALAPPDATA%\Packages\Microsoft.WindowsTerminal_8wekyb3d8bbwe\LocalState\settings.json
Profilkonfiguration (settings.json)
Fügen Sie unter "profiles" > "list" ein dediziertes Profil hinzu, um ein PowerShell-Profil mit aktivierter Skriptausführung zu erhalten:
{
"guid": "{ihre-eindeutige-guid}",
"name": "PowerShell Jazz Admin",
"commandline": "powershell.exe -ExecutionPolicy Bypass -NoLogo",
"startingDirectory": "%USERPROFILE%",
"hidden": false
}
Aktionskonfiguration (settings.json)
Fügen Sie diesen Block in den Abschnitt "actions": [...] ein, um virtuelle Dropdown-Menüs zu erstellen, die über die Befehlspalette zugänglich sind:
{
"name": "📂 JAZZ PROJEKT",
"commands": [
{ "name": "Jazz Main", "command": { "action": "runCommandline", "commandline": "ssh jazz-prod" } },
{ "name": "Jazz DB2", "command": { "action": "runCommandline", "commandline": "ssh jazz-db2" } }
]
},
{
"name": "📂 SCALEWAY INFRA",
"commands": [
{ "name": "Bastion", "command": { "action": "runCommandline", "commandline": "ssh bastion-scw" } },
{ "name": "Server 1", "command": { "action": "runCommandline", "commandline": "ssh scw-1" } }
]
}
3. Produktivität: Intelligente Autovervollständigung
Um den Linux-Komfort zu erhalten (Tab-Taste zur Vervollständigung von Servernamen), injizieren wir einen Helper in das PowerShell-Profil ($PROFILE).
Autovervollständigungs-Skript
# Helper zum Lesen der Hosts aus der SSH-Config-Datei
$sshHelper = {
param($wordToComplete, $commandAst, $cursorPosition)
$configPath = "$env:USERPROFILE\.ssh\config"
if (Test-Path $configPath) {
$hosts = Get-Content $configPath | Select-String "^Host\s+(.*)" | ForEach-Object {
$_.Matches.Groups[1].Value.Trim() -split "\s+"
} | Where-Object { $_ -notmatch "\*" }
$hosts | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
[System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterValue', $_)
}
}
}
Register-ArgumentCompleter -Native -CommandName ssh,scp,sftp -ScriptBlock $sshHelper
# Tab-Taste im Menümodus aktivieren
Import-Module PSReadLine
Set-PSReadLineKeyHandler -Key Tab -Function MenuComplete
try { Set-PSReadLineOption -PredictionSource History } catch { }
Um dieses Skript beim Start zu aktivieren, fügen Sie es in Ihre $PROFILE-Datei ein (normalerweise Dokumente\PowerShell\Microsoft.PowerShell_profile.ps1).
4. Sicherheit und Integrität
PEM-Schlüsselverwaltung
Windows erzwingt strenge Berechtigungen für .pem-Dateien. Wenden Sie folgende Rechte an, um den Fehler “Unprotected Private Key” zu vermeiden:
icacls "mein_schluessel.pem" /inheritance:r
icacls "mein_schluessel.pem" /grant:r "${env:UserName}:(R)"
Isolierte Ausführungsrichtlinie
Um das Laden Ihres PowerShell-Profils zu ermöglichen, ohne die globale Systemsicherheit zu senken, konfigurieren Sie das Profil in settings.json mit -ExecutionPolicy Bypass (siehe Abschnitt 2). Dieser Ansatz ist einer globalen Richtlinienänderung über Set-ExecutionPolicy vorzuziehen, da er auf das Administrations-Terminal beschränkt bleibt.
Fazit
Dieser „Lean"-Ansatz garantiert eine robuste, portable und extrem schnelle Administrationsinfrastruktur. Durch die Zentralisierung der Logik in ~/.ssh/config und der Oberfläche im Windows Terminal verfügen Syncheo-Ingenieure über ein professionelles Werkzeug, das perfekt auf die Anforderungen der modernen Cloud ausgerichtet ist — ohne Drittanbieter-Abhängigkeiten und ohne Lizenzkosten.