Files
ROMFASTSQL/scripts/bitvise-chei.ps1
Marius dee3d1d2f5 docs(chei-ssh): procedura de mutare a profilelor pe VM 303/304 si cheile de admin
Sectiunea 7 acopera tot drumul: ce contine de fapt fiecare profil (parola in
fisier, keypair de profil, keypair global — se afla cu -noRegistry=y, fara GUI),
folderul de pregatire, conversia la publickey cu -storePw=n / -pk=a, verificarea
care prinde un Ctrl+S uitat, si importul cheii pe VM 303. Include lista celor 11
profile cu numele scurtate la copiere si serverul fiecaruia.

Sectiunea 6 tine acum toate cele 5 chei publice (doi angajati, trei ale statiei
de birou) si tabelul pe servere, verificat pe amprenta, nu pe comentariu.

Capcane platite pe drum, notate ca atare:
- stergerea keypair-urilor GLOBALE din User keypair manager lasa fara
  credentiala orice profil care se baza pe ele — asa a ramas mut
  romfast_bitvise.tlp;
- vadeco.tlp avea cheia privata salvata in profil, deci s-ar fi dus cu fisierul;
- abcval (Bitvise 9.32) respinge Ed25519, acolo intra doar RSA;
- conpress blocheaza IP-ul la conexiuni repetate: se exclude in Access control,
  nu doar se sterge din lista de blocati.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01FnMP82sffxQYxWRjy5sfKo
2026-09-02 00:08:46 +03:00

76 lines
3.7 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') }
# 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() }
}
}