poshy-sshconfig.psm1
#!/usr/bin/env pwsh $ErrorActionPreference = "Stop" Set-StrictMode -Version Latest <# .SYNOPSIS Add entry to ssh config. .COMPONENT ssh #> function add_ssh { param( [Parameter(Mandatory=$true)] [ValidateNotNullOrEmpty()] [string] $sshhost, [Parameter(Mandatory=$true)] [ValidateNotNullOrEmpty()] [string] $hostname, [Parameter(Mandatory=$true)] [ValidateNotNullOrEmpty()] [string] $user ) if (-not (Test-Path ~/.ssh -ErrorAction SilentlyContinue)) { New-Item -Path ~/.ssh -ItemType Directory | Out-Null if (-not $IsWindows) { Set-ItemNixMode -Path ~/.ssh -Mode 700 } } if (-not (Test-Path ~/.ssh/config -ErrorAction SilentlyContinue)) { New-Item -Path ~/.ssh/config -ItemType File | Out-Null if (-not $IsWindows) { Set-ItemNixMode -Path ~/.ssh/config -Mode 600 } } " Host $sshhost HostName $hostname User $user ServerAliveInterval 30 ServerAliveCountMax 120 " | Out-File -Append -FilePath ~/.ssh/config } <# .SYNOPSIS List hosts defined in ssh config. .COMPONENT ssh #> function sshlist { if (Test-Path ~/.ssh/config -ErrorAction SilentlyContinue) { Get-Content ~/.ssh/config | ForEach-Object { if ($_ -match "^Host\s+(.+)$") { $matches[1] } } } } <# .SYNOPSIS Add all ssh private keys to agent. .COMPONENT ssh #> function ssh-add-all { if (Test-Command ssh-add) { [string[]] $privateKeys = Get-Content ~/.ssh/config | ForEach-Object { if ($_ -match "PRIVATE") { $matches[1] } } foreach ($privateKey in $privateKeys) { ssh-add $privateKey } } } Export-ModuleMember -Function * |