| March 23, 2026
Administering critical platforms like Jazz (CORS management, EWM widget deployment, DB2 database maintenance) demands a responsive interface and smooth handling of secure data flows. At Syncheo, we migrated from heavy third-party tools like mRemoteNG to a 100% native Windows stack.
This guide details how to transform your Windows environment into an optimised, free and secure DevOps workstation.
1. Standardised Connectivity: OpenSSH & Bastion
Using the native Windows SSH client eliminates dependency on proprietary formats (such as PuTTY’s .ppk). We centralise all configuration in %USERPROFILE%\.ssh\config.
Architecture with Jump Server (Bastion)
To access isolated servers, we use a bastion on port 2222. The ProxyJump directive makes this hop completely transparent for the user.
# Bastion definition
Host bastion-scw
HostName <BASTION_IP>
User bastion
Port 2222
IdentityFile C:\Users\<YourUser>\Keys\bastion.pem
# Jazz main server via Bastion
Host jazz-prod
HostName <JAZZ_IP>
User root
ProxyJump bastion-scw
IdentityFile C:\Users\<YourUser>\Keys\jazz_prod.pem
# DB2 instance via Bastion
Host jazz-db2
HostName <DB2_IP>
User root
ProxyJump bastion-scw
IdentityFile C:\Users\<YourUser>\Keys\db2_key.pem
With this configuration, the command ssh jazz-prod automatically tunnels through the bastion with no additional setup. The ProxyJump option handles the tunnel natively and securely.
2. Windows Terminal: Context-Based Organisation
To replace mRemoteNG’s folder tree, we use the Command Palette (Ctrl+Shift+P) in Windows Terminal. This enables a much faster “Search-first” navigation experience.
Configuration file location
The settings.json file is accessible directly from Windows Terminal via Settings β Open JSON file, or at the following path:
%LOCALAPPDATA%\Packages\Microsoft.WindowsTerminal_8wekyb3d8bbwe\LocalState\settings.json
Profile configuration (settings.json)
Add a dedicated profile under "profiles" > "list" to get a PowerShell profile with script execution enabled:
{
"guid": "{your-unique-guid}",
"name": "PowerShell Jazz Admin",
"commandline": "powershell.exe -ExecutionPolicy Bypass -NoLogo",
"startingDirectory": "%USERPROFILE%",
"hidden": false
}
Action configuration (settings.json)
Add this block to the "actions": [...] section to create virtual dropdown menus accessible via the Command Palette:
{
"name": "π JAZZ PROJECT",
"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. Productivity: Intelligent Autocomplete
To get Linux-like comfort (Tab key to complete server names), we inject a helper into the PowerShell profile ($PROFILE).
Autocomplete script
# Helper to read hosts from SSH Config file
$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
# Enable Menu mode for the Tab key
Import-Module PSReadLine
Set-PSReadLineKeyHandler -Key Tab -Function MenuComplete
try { Set-PSReadLineOption -PredictionSource History } catch { }
To activate this script at startup, add it to your $PROFILE file (typically Documents\PowerShell\Microsoft.PowerShell_profile.ps1).
4. Security and Integrity
PEM Key Management
Windows enforces strict permissions on .pem files. Apply the following rights to avoid the “Unprotected Private Key” error:
icacls "my_key.pem" /inheritance:r
icacls "my_key.pem" /grant:r "${env:UserName}:(R)"
Isolated execution policy
To allow loading your PowerShell profile without lowering the system’s overall security, configure the profile in settings.json with -ExecutionPolicy Bypass (see section 2). This approach is preferable to a global policy change via Set-ExecutionPolicy, as it is scoped to the administration terminal only.
Conclusion
This “Lean” approach guarantees a robust, portable and extremely fast administration infrastructure. By centralising logic in ~/.ssh/config and the interface in Windows Terminal, Syncheo engineers have a professional-grade tool perfectly suited to modern Cloud requirements β with no third-party dependency and no licence cost.