<# .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') } # romfast_bitvise = roadigi.romfast.ro:22122 (188.26.14.103), ruta externa catre ACELASI # server ca 10.0.20.36 de mai jos. Din 2026-09-01 nu mai autentifica neinteractiv: era # singurul profil care folosea un keypair GLOBAL, iar keypair-urile globale au fost sterse # din User keypair manager. Pana se importa cheia la loc, intrarea 10.0.20.36 e cea care # duce cheile pe acest server. @{ 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) — pe el se ruleaza separat, cu un # .pub RSA (ex. docs\chei-publice\marius-lenovo-birou-rsa.pub) @{ 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() } } }