Cheile publice ale angajatilor (VM 303, VM 304) se tin versionate in docs/chei-publice/ — acelasi fisier serveste si pentru "Add File", si pentru "Remove File", deci revocarea nu mai depinde de un fingerprint copiat de mana. scripts/bitvise-chei.ps1 tine lista celor 11 servere Bitvise valide si ruleaza spksc cu -unat=y (List / Add / Remove) fara sa se blocheze in prompturi. Doua lucruri descoperite si notate in doc: - romfast_bitvise.tlp si 10.0.20.36:22122 sunt acelasi server (liste de chei identice); intrarea a doua ramane ca ruta de rezerva, fiindca parola din bitvise_10.0.20.36.bscp a expirat si se conecteaza cu -keypairFile; - abcval (Bitvise SSH Server 9.32) respinge Ed25519 cu KeyNotSupported — acolo e nevoie de o pereche RSA. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01FnMP82sffxQYxWRjy5sfKo
70 lines
3.3 KiB
PowerShell
70 lines
3.3 KiB
PowerShell
<#
|
|
.SYNOPSIS
|
|
Adauga / listeaza / revoca o cheie publica pe toate serverele Bitvise ale angajatilor.
|
|
|
|
.DESCRIPTION
|
|
Serverele sunt cele din $Servere de mai jos — profilele Bitvise din D:\GoogleDrive, plus
|
|
serverul Oracle de productie 10.0.20.36 care are parola expirata in profil si se conecteaza
|
|
cu cheia mea OpenSSH. Lista se actualizeaza aici cand apare/dispare un client.
|
|
|
|
Cheile publice ale angajatilor stau in docs\chei-publice\*.pub (nu sunt secrete) — de acolo
|
|
se ia fisierul si pentru adaugare, si pentru revocare.
|
|
|
|
.EXAMPLE
|
|
.\bitvise-chei.ps1 -Actiune List
|
|
.\bitvise-chei.ps1 -Actiune Add -Cheie ..\docs\chei-publice\vm304.pub
|
|
.\bitvise-chei.ps1 -Actiune Remove -Cheie ..\docs\chei-publice\vm304.pub
|
|
#>
|
|
[CmdletBinding()]
|
|
param(
|
|
[Parameter(Mandatory)][ValidateSet('Add','Remove','List')][string]$Actiune,
|
|
[string]$Cheie
|
|
)
|
|
|
|
$spksc = 'C:\Program Files (x86)\Bitvise SSH Client\spksc.exe'
|
|
|
|
# Fiecare intrare: eticheta + argumentele de conexiune pentru spksc.
|
|
$Servere = @(
|
|
@{ N='automotive'; A=@('-profile=D:\GoogleDrive\automotive.tlp') }
|
|
@{ N='avis'; A=@('-profile=D:\GoogleDrive\avis.tlp') }
|
|
@{ N='clever-motors'; A=@('-profile=D:\GoogleDrive\clever-motors.tlp') }
|
|
@{ N='conpress_romfast'; A=@('-profile=D:\GoogleDrive\conpress_romfast.tlp') }
|
|
@{ N='eduard'; A=@('-profile=D:\GoogleDrive\eduard.tlp') }
|
|
@{ N='ems'; A=@('-profile=D:\GoogleDrive\ems.tlp') }
|
|
@{ N='romconstruct'; A=@('-profile=D:\GoogleDrive\romconstruct.bscp') }
|
|
@{ N='romfast_bitvise'; A=@('-profile=D:\GoogleDrive\romfast_bitvise.tlp') }
|
|
@{ N='sigma'; A=@('-profile=D:\GoogleDrive\sigma.tlp') }
|
|
@{ N='vadeco'; A=@('-profile=D:\GoogleDrive\vadeco.tlp') }
|
|
@{ N='vending'; A=@('-profile=D:\GoogleDrive\vending.tlp') }
|
|
# abcval: Bitvise 9.32, refuza Ed25519 (KeyNotSupported) — doar cu cheie RSA
|
|
@{ N='abcval'; A=@('-profile=D:\GoogleDrive\abcval.tlp') }
|
|
# Oracle prod = ACELASI server ca romfast_bitvise.tlp (verificat: liste de chei identice).
|
|
# Ramane in lista ca ruta de rezerva: parola din profil e expirata, deci host/port/user
|
|
# expliciti + cheia mea OpenSSH. La Remove, a doua trecere raporteaza "cheie inexistenta".
|
|
@{ N='10.0.20.36 Oracle'; A=@('-host=10.0.20.36','-port=22122','-user=romfast',
|
|
'-hostKeyFp=UijzzgAZVz+xOSZ8de/6BEAkyogQL+6hzp55jl8VDXc',
|
|
'-keypairFile=C:\Users\mmari\.ssh\id_ed25519') }
|
|
)
|
|
|
|
if ($Actiune -ne 'List') {
|
|
if (-not $Cheie) { throw "-Cheie e obligatoriu pentru actiunea $Actiune" }
|
|
$Cheie = (Resolve-Path $Cheie).Path
|
|
$comanda = "$Actiune File $Cheie"
|
|
$amprenta = (ssh-keygen -lf $Cheie)
|
|
Write-Host "$Actiune $amprenta" -ForegroundColor Cyan
|
|
} else {
|
|
$comanda = 'List Server'
|
|
}
|
|
|
|
foreach ($s in $Servere) {
|
|
$out = & $spksc @($s.A) -initialKexTimeout=20 -unat=y "-cmd=$comanda" 2>&1 | Out-String
|
|
$rc = $LASTEXITCODE
|
|
$err = ($out -split "`n" | Where-Object { $_ -match 'ERROR' } | Select-Object -Last 1)
|
|
if ($err) { $err = $err.Trim() } else { $err = '' }
|
|
$stare = if ($rc -eq 0) { 'OK' } else { "rc=$rc" }
|
|
'{0,-6} {1,-20} {2}' -f $stare, $s.N, $err
|
|
if ($Actiune -eq 'List') {
|
|
$out -split "`n" | Select-String 'Comment:' | ForEach-Object { ' ' + $_.ToString().Trim() }
|
|
}
|
|
}
|