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
457 lines
26 KiB
Markdown
457 lines
26 KiB
Markdown
# Acces SSH la clienti cu chei publice/private — procedura pentru angajati noi
|
|
|
|
De ce: conexiunile catre clientii ROMFAST merg prin **Bitvise SSH Server** (la client) si
|
|
**Bitvise SSH Client** (la noi), iar pana acum totul a mers pe **user + parola** salvata in
|
|
profil. Cand un angajat nou (aici: VM 303, Windows 11) are nevoie de tunelurile SSH catre
|
|
clienti, i se da acces pe **chei** — avantaj: la plecarea lui revoci o singura cheie pe fiecare
|
|
server, fara sa schimbi parola la toti clientii.
|
|
|
|
Context conex: `docs/diagnostic-spatiu-clienti.md` sectiunea 6 (cum se deschide un tunel si
|
|
capcanele lui).
|
|
|
|
## 1. VM 303 (angajatul) — generarea perechii de chei
|
|
|
|
1. Instaleaza **Bitvise SSH Client**.
|
|
2. Tab **Login** → **User keypair manager** → **Generate New**:
|
|
- algoritm **Ed25519** (fallback: RSA 2048 doar daca serverul de la client e versiune foarte
|
|
veche si refuza Ed25519);
|
|
- **passphrase** puternica — cheia fara passphrase e echivalentul unei parole lipite pe monitor.
|
|
3. **Export public key** (format OpenSSH sau Bitvise) → trimite doar fisierul `.pub` spre
|
|
administrator (eu). Cheia privata **ramane pe VM 303** — nu circula niciodata prin
|
|
email/Drive/mesagerie.
|
|
|
|
### Varianta: cheie generata deja prin alta metoda (ex. OpenSSH)
|
|
|
|
Daca pe VM 303 exista deja `C:\Users\romfast\.ssh\id_ed25519` (generata cu `ssh-keygen` pentru
|
|
git sau alt client OpenSSH), **se poate folosi aceeasi cheie si in Bitvise** — nu trebuie una
|
|
noua:
|
|
|
|
1. **User keypair manager** → **Import** → alege fisierul de cheie privata `id_ed25519` (cel
|
|
fara `.pub`); Bitvise importa formatul OpenSSH (inclusiv formatul nou
|
|
`-----BEGIN OPENSSH PRIVATE KEY-----` si Ed25519) si formatul PuTTYgen (`.ppk`). Daca cheia
|
|
are passphrase, il cere la import.
|
|
2. Importul face o **copie** in managerul Bitvise — fisierul original din `.ssh` ramane
|
|
neatingut, deci `ssh.exe`/git continua sa il foloseasca in paralel.
|
|
3. Pentru serverul de la client se foloseste direct `id_ed25519.pub` existent — Bitvise SSH
|
|
Server importa format OpenSSH, fara conversie.
|
|
|
|
Capcanele variantei:
|
|
|
|
- Cheia **fara passphrase** ramane fara passphrase si dupa import — daca vrei protectie,
|
|
ruleaza inainte `ssh-keygen -p -f C:\Users\romfast\.ssh\id_ed25519`.
|
|
- O cheie comuna pentru git/OpenSSH/Bitvise = un singur punct de compromitere. Acceptabil, dar
|
|
idealul e o **cheie dedicata** doar pentru tunelurile catre clienti (generezi separat si
|
|
revoci separat).
|
|
- Nu uita capcana din sectiunea 3: keypair-ul importat in manager sta in **registry per-user**
|
|
si nu e vazut de `stnlc -noRegistry=y` — pentru rulari scriptate foloseste `-keypairFile=`
|
|
cu fisierul original, sau copiaza keypair-ul in profil.
|
|
|
|
## 2. Serverul clientului — autorizarea cheii
|
|
|
|
### 2a. Am acces la Bitvise SSH Server Control Panel
|
|
|
|
1. **Easy Settings** (sau Advanced Settings → **Accounts**) → contul folosit de noi (ex.
|
|
`romfast`) → tab **Authentication** → **Public keys** → **Import** cheia publica a angajatului.
|
|
2. Un cont poate avea **mai multe chei publice** — parola existenta ramane valabila, iar regulile
|
|
de forwarding de pe server (ex. `ROA Oracle` = `127.0.0.1:1521`) nu se ating.
|
|
3. Varianta cu audit mai clar (optional): cont **separat** pentru angajat, mapat pe acelasi user
|
|
Windows, in care se reproduc manual regulile c2s. Costa munca in plus; varianta simpla (cheia
|
|
pe contul existent) e ok — in logurile Bitvise se vede metoda de autentificare si fingerprint-ul
|
|
cheii folosite.
|
|
|
|
### 2b. Fara acces la Control Panel — doar parola + acces la fisiere (SFTP)
|
|
|
|
Bitvise SSH Server are doua mecanisme prin care utilizatorul isi administreaza singur cheile
|
|
publice, fara administrator (FAQ Q350). Ambele actioneaza asupra contului cu care ma conectez eu
|
|
(`romfast`) — deci cheia adaugata il lasa pe angajat sa intre pe acelasi cont.
|
|
|
|
**Important — tipul contului de pe server**: daca `romfast` e un **cont virtual Bitvise** (nu un
|
|
cont Windows), varianta A nu se aplica deloc (fara profil Windows, `.ssh` nu apare in SFTP —
|
|
vederea doar a partitiilor C/D/E la un client e semnul) → sari direct la varianta B, care
|
|
functioneaza pentru conturi virtuale. Bonus: conturile virtuale nici nu sunt afectate de
|
|
capcana LSA protection de la finalul sectiunii.
|
|
|
|
#### Varianta A — `.ssh/authorized_keys` (de incercat prima)
|
|
|
|
1. Conecteaza-te cu profilul existent (parola) si deschide fereastra SFTP.
|
|
2. Cauta in **radacina SFTP** (langa C:, D:, E:) un director **`.ssh`** — e un mount point
|
|
special al serverului, *nu* un folder real pe disc si nu se gaseste navigand pe partitii
|
|
(crearea manuala a lui `C:\Users\<cont>\.ssh` nu ajuta: fara setarea activa, serverul
|
|
ignora fisierul). Daca **nu apare** in radacina, sincronizarea cu authorized_keys e
|
|
dezactivata pe serverul respectiv → treci la varianta B.
|
|
3. Daca exista deja fisierul `authorized_keys` in `.ssh`, descarca-l si **adauga** cheia
|
|
angajatului ca linie noua (format OpenSSH, o cheie pe linie). Nu-l suprascrie: la logout,
|
|
serverul **inlocuieste toate** cheile configurate pe cont cu continutul fisierului.
|
|
4. Uploadeaza fisierul `authorized_keys` in `.ssh`, apoi **deconecteaza-te curat** (Logout, nu
|
|
inchiderea fortata a clientului) — serverul citeste fisierul abia la sfarsitul sesiunii.
|
|
5. Angajatul testeaza loginul cu cheia.
|
|
|
|
Functioneaza doar pentru **conturi Windows** (nu conturi virtuale Bitvise).
|
|
|
|
#### Varianta B — SPKS / "Upload to server" (activat implicit pe server)
|
|
|
|
Functioneaza si pentru conturi virtuale, si pentru conturi Windows; nu depinde de niciun mount
|
|
point in SFTP. Atentie la semantica "Add": pentru contul curent se adauga cheia — exact ce vrem
|
|
(angajatul intra pe acelasi cont).
|
|
|
|
1. Incearca intai urcarea directa a cheii publice a angajatului, din linia de comanda:
|
|
|
|
```powershell
|
|
& 'C:\Program Files (x86)\Bitvise SSH Client\spksc.exe' --% -profile=d:\GoogleDrive\<client>.tlp -cmd="Add File C:\temp\angajat.pub"
|
|
```
|
|
|
|
Cod de retur 200 = serverul nu suporta SPKS (prea vechi) → ramane doar Control Panel-ul.
|
|
2. Daca `Add File` refuza un fisier doar cu cheie publica: angajatul se conecteaza **o singura
|
|
data** cu parola (fluxul oficial Bitvise, FAQ Q330) → **Client key manager** → importă keypair-ul
|
|
lui → click dreapta → **Upload to server**. De acum cheia lui functioneaza.
|
|
Contras: angajatul a vazut parola contului — daca e inacceptabil, ramane varianta A sau
|
|
accesul la Control Panel.
|
|
|
|
#### Cand oricum e nevoie de admin
|
|
|
|
- Server vechi: nici `.ssh` in SFTP, nici SPKS (cod 200 la `spksc`).
|
|
- **Windows recent (~2025+) cu Bitvise SSH Server < 9.51**: LSA protection (RunAsPPL), activ
|
|
implicit, blocheaza pachetul de autentificare BvLsa → loginul cu cheia pe conturi **Windows**
|
|
esueaza chiar daca cheia e instalata corect (FAQ Q370). Remedii, toate de admin: update server
|
|
la 9.51+, password cache sau dezactivare LSA protection. Simptom: parola merge, cheia nu.
|
|
Versiunea serverului se vede in mesajele de login ale clientului Bitvise.
|
|
**Conturile virtuale nu sunt afectate** de LSA protection — la ele, cheia functioneaza indiferent
|
|
de versiune.
|
|
- Tunelurile spre `127.0.0.1:1521` functioneaza si cu autentificare prin cheie pe cont virtual
|
|
cu context de securitate implicit (FAQ Q450): doar resursele de retea (shares, EFS) ar cere
|
|
configurarea password cache — nu e cazul nostru.
|
|
|
|
#### Depanare: cheia e pe server, dar loginul cere parola (FAQ Q320)
|
|
|
|
"Cere parola" inseamna doar ca autentificarea a esuat — nu si ca publickey ar fi dezactivat. Cea
|
|
mai frecventa cauza e ca **clientul nici nu ofera cheia**. Izolarea se face cu propria cheie, de
|
|
pe calculatorul meu (nu cel al angajatului):
|
|
|
|
```powershell
|
|
# 0. daca nu am keypair: BvSsh -> Login -> Client key manager -> Generate New (devine g1)
|
|
|
|
# 1. adauga cheia mea pe contul de la client (login cu parola din profil)
|
|
& 'C:\Program Files (x86)\Bitvise SSH Client\spksc.exe' --% -profile=d:\GoogleDrive\<client>.tlp -cmd="Add Global 1"
|
|
|
|
# 2. login DOAR cu cheia (SPKS merge unattended: nu cade inapoi pe parola)
|
|
& 'C:\Program Files (x86)\Bitvise SSH Client\spksc.exe' --% -profile=d:\GoogleDrive\<client>.tlp -pk=g1 -cmd="List Server"
|
|
|
|
# 3. curatenie: scoate cheia mea de pe server
|
|
& 'C:\Program Files (x86)\Bitvise SSH Client\spksc.exe' --% -profile=d:\GoogleDrive\<client>.tlp -cmd="Remove Global 1"
|
|
```
|
|
|
|
Interpretare:
|
|
|
|
- **Cum se citeste output-ul de respingere**: linia `Remaining authentication methods` arata
|
|
metodele inca disponibile pe cont — daca `publickey` apare acolo, metoda **e activa** pe
|
|
server si respingerea inseamna "cheia nu e recunoscuta pe acest cont" (nu a fost adaugata /
|
|
a fost adaugata pe alt cont / alt keypair decat cel oferit). Daca `publickey` lipseste din
|
|
lista, metoda e dezactivata in setarile contului — doar adminul o poate activa.
|
|
- **Pasul 2 reusește** → serverul accepta publickey pe cont; problema e la angajat (vezi mai jos).
|
|
- **Pasul 2 esueaza cu cod 103** → serverul refuza publickey:
|
|
- server foarte vechi, fara suport Ed25519 → angajatul genereaza RSA 2048/3072 si se reface
|
|
`Add File`; versiunea serverului se vede in mesajele de login ale clientului;
|
|
- publickey dezactivat in intrarea contului/grupului virtual (Advanced settings → Access
|
|
control → Virtual accounts → grupul/contul → Authentication) → cere acces la Control Panel;
|
|
**semnul diagnostic**: `publickey` lipseste din `Remaining authentication methods` la login;
|
|
- **loguri prin SFTP**: `C:\Program Files (x86)\Bitvise SSH Server\Logs` — fisierul textual de
|
|
log spune explicit de ce a picat (cheie necunoscuta / metoda nepermisa / metoda nici macar
|
|
nu s-a incercat). Serverul EMS e 9.66 — versiune curenta, deci cauzele "server prea vechi"
|
|
(fara Ed25519, fara SPKS, LSA protection) nu se aplica la el.
|
|
- **Cauze client-side** (daca serverul e OK): profilul nu are Login → Authentication →
|
|
**Initial method = publickey** si **Client key = keypair-ul lui**; parola salvata in profil
|
|
"câstiga" tacut inainte de cheie; keypair-ul e in registry-ul altui user Windows (managerul e
|
|
per-user); promptul de **passphrase** (protectia locala a cheii) nu e parola serverului;
|
|
`-noRegistry=y` fara `-keypairFile=`/profil (vezi sectiunea 3).
|
|
|
|
## 3. Profilul de client pentru angajat
|
|
|
|
Regula: **nu se copiaza profilele mele din `D:\GoogleDrive\<client>.tlp`** — au parola salvata
|
|
in `.tlp`. Cheia angajatului se adauga pe server **de pe calculatorul meu** (sectiunea 2b,
|
|
`Add File`), deci angajatul nu are nevoie de nimic de la mine in afara de: host, port, username
|
|
si fingerprint-ul host key-ului.
|
|
|
|
### Varianta principala: profil de la zero (pe VM 303)
|
|
|
|
1. Tab **Login**: host + port + username (numele contului virtual de la client).
|
|
2. Authentication: **Initial method = publickey**, **Client key = keypair-ul angajatului**
|
|
(importat in User keypair manager — a se vedea sectiunea 1). Fara parola salvata.
|
|
3. La prima conectare apare promptul de **host key**: angajatul verifica fingerprint-ul cu cel
|
|
transmis de mine pe alt canal si abia apoi accepta. Fingerprint-ul se vede in mesajele de
|
|
login ale oricarui client Bitvise (ex. output-ul `spksc`: `SHA-256 fingerprint: ...`) sau in
|
|
profilul meu, la Login → **Host key manager** → click dreapta pe cheie.
|
|
4. Save profile (ex. `ems.tlp` al lui) — de acum se conecteaza doar cu cheia.
|
|
|
|
### Varianta alternativa: copie din profilul meu
|
|
|
|
Copiaza profilul (ex. `sigma.tlp` → `sigma_angajat.tlp`), apoi in tabul Login: la Authentication
|
|
debifeaza/sterge **parola salvata**, seteaza publickey + keypair-ul angajatului. Host key-ul
|
|
ramane din copie (fara prompt de verificare). Avantaj: niciun transfer de fingerprint; risc:
|
|
daca uiți sa stergi parola, o livrez odata cu profilul — de aceea e doar alternativa.
|
|
|
|
Pentru toate profilele deodata, cu verificare care prinde parola uitata: **sectiunea 7**.
|
|
|
|
### Scripturi neinteractive (comun ambelor variante)
|
|
|
|
Daca angajatul va rula si scripturi neinteractive (ca in `docs/diagnostic-spatiu-clienti.md`):
|
|
cu `stnlc -noRegistry=y` keypair-urile "globale" din
|
|
registry **nu sunt vazute** — keypair-ul trebuie sa fie **fisier** (exportat din keypair
|
|
manager sau chiar `id_ed25519` din `.ssh`, via `-keypairFile=`), sau **copiat in profil**
|
|
(User keypair manager → click dreapta pe keypair → **Copy to profile**, apoi in profil
|
|
Login → Authentication → Client key = `Profile 1`; echivalent CLI: `-pk=p1`).
|
|
|
|
## 4. Testul de validare
|
|
|
|
Din VM 303, dupa conectare:
|
|
|
|
```powershell
|
|
# 0. verifica intai ca nu e deja un tunel deschis spre ALT client
|
|
Get-NetTCPConnection -State Listen -LocalPort 1521
|
|
|
|
# 1. prima interogare dupa conectarea prin tunel — confirma clientul corect
|
|
select instance_name, host_name from v$instance;
|
|
```
|
|
|
|
Regulile de forwarding vin **de la server** (profilul nu da `-c2s`), deci tunelul gresit se
|
|
detecteaza doar cu verificarea de mai sus — nu trece nimeni direct la SQL.
|
|
|
|
## 5. Revocarea accesului
|
|
|
|
La plecarea angajatului:
|
|
|
|
1. Pe **fiecare** server de client: stergi cheia lui publica din tabul **Authentication** al
|
|
contului. Atat — parola ramane neschimbata, deci nimic din accesul existent nu se strica.
|
|
2. La clientii **fara Control Panel**: revocarea se face prin acelasi mecanism cu care a fost
|
|
adaugata cheia:
|
|
- varianta A: sterge linia angajatului din `.ssh/authorized_keys`, re-uploadeaza, deconecteaza-te
|
|
curat — sincronizarea de la logout inlatura cheia;
|
|
- varianta B: `spksc ... -cmd="Remove File C:\temp\angajat.pub"` (sau `Remove Fingerprint ...`);
|
|
pe toate serverele deodata: `scripts\bitvise-chei.ps1 -Actiune Remove` — sectiunea 6.
|
|
3. Optional: verifica in logurile Bitvise SSH Server ultima conectare cu fingerprint-ul lui,
|
|
ca sa sti ce a accesat in perioada de gratie.
|
|
|
|
## 6. Unde stau cheile publice si pe ce servere sunt copiate
|
|
|
|
### Unde se salveaza cheia publica a unui angajat
|
|
|
|
`docs/chei-publice/<vm>.pub`, in acest repo. Cheile **publice** nu sunt secrete — se tin
|
|
versionate tocmai ca sa se stie, peste un an, exact ce sir trebuie revocat. Cheia **privata** nu
|
|
ajunge niciodata aici (vezi Capcane).
|
|
|
|
Fisierul e si sursa pentru revocare: `Remove File <acelasi .pub>` sterge exact ce a adaugat
|
|
`Add File`, fara sa fie nevoie de fingerprint copiat de mana.
|
|
|
|
```powershell
|
|
ssh-keygen -lf docs\chei-publice\vm304.pub # amprenta, pentru corelare cu logurile serverului
|
|
```
|
|
|
|
| Fisier | Amprenta SHA-256 | Cine |
|
|
|---|---|---|
|
|
| `docs/chei-publice/vm303.pub` | `BDidUbM24Do2ySosEeVuP9wYSRo2+soOg4UhlNcUzTQ` | angajat, `romfast@VM-303` |
|
|
| `docs/chei-publice/vm304.pub` | `g1HHsnnqmbwEas7SFJuaUDcQLdsZKwNTklSXZO2mbLw` | angajat, `romfast@VM-304` (clona lui 303) |
|
|
| `docs/chei-publice/marius-lenovo-birou.pub` | `Rp4QdhbGw1G7eNY4T66VAeRSMbb8kMgdWExvOCwn7Wg` | admin, statia de birou (`C:\Users\mmari\.ssh\id_ed25519`) |
|
|
| `docs/chei-publice/marius-lenovo-birou-rsa.pub` | `3LTMHACTsF21CfoHwG6oHlmNgynoOl43zPGz1exe87w` | admin, aceeasi statie — RSA 4096, doar pentru serverele care refuza Ed25519 |
|
|
| `docs/chei-publice/marius-hx90g.pub` | `XxLBMaYY0BhhOnYnIsnboLEswEGDoRic+0ZGDIuJo6Q` | admin, `marius@Marius-HX90G` |
|
|
|
|
VM 304 e clona lui VM 303, deci a pornit cu **aceeasi** cheie privata; a fost regenerata pe VM
|
|
304 (`ssh-keygen -t ed25519 -C "romfast@VM-304"`, plus stergerea keypair-ului mostenit din
|
|
**Bitvise User keypair manager** si regenerarea cheilor de host `C:\ProgramData\ssh\ssh_host_*`
|
|
daca VM-ul ruleaza sshd). Fara pasul din keypair manager, clona continua sa se autentifice cu
|
|
identitatea VM 303 si nu se vede diferenta in loguri.
|
|
|
|
### Serverele pe care sunt copiate cheile
|
|
|
|
Lista traieste in `scripts/bitvise-chei.ps1` (variabila `$Servere`) — se actualizeaza acolo,
|
|
nu aici, ca sa nu existe doua adevaruri. Tabelul de mai jos e starea verificata la 2026-09-01
|
|
cu `-Actiune List` (comparatie pe amprenta, nu pe comentariu — comentariile se repeta).
|
|
|
|
| Server (profil din `D:\GoogleDrive`) | VM-303 | VM-304 | birou Ed | birou RSA | HX90G |
|
|
|---|---|---|---|---|---|
|
|
| `automotive.tlp` | da | da | da | — | da |
|
|
| `avis.tlp` | da | da | da | — | da |
|
|
| `clever-motors.tlp` | da | da | da | — | da |
|
|
| `conpress_romfast.tlp` | da | da | da | — | da |
|
|
| `eduard.tlp` | da | da | da | — | da |
|
|
| `ems.tlp` | da | da | da | — | da |
|
|
| `romconstruct.bscp` | da | da | da | — | da |
|
|
| `sigma.tlp` | da | da | da | — | da |
|
|
| `vadeco.tlp` | da | da | da | — | da |
|
|
| `vending.tlp` | da | da | da | — | da |
|
|
| `10.0.20.36:22122` (Oracle productie) | da | da | da | — | da |
|
|
| `abcval.tlp` | nu | nu | nu | **da** | nu |
|
|
|
|
`abcval` ruleaza Bitvise SSH Server 9.32 si respinge Ed25519 cu `KeyNotSupported` — pe el intra
|
|
doar chei RSA. De aceea coloana "birou RSA" exista: e aceeasi statie, alta pereche de chei.
|
|
Un angajat care are nevoie de `abcval` isi genereaza in paralel o pereche RSA 3072/4096.
|
|
|
|
`romfast_bitvise.tlp` (`roadigi.romfast.ro:22122` = `188.26.14.103`) si `10.0.20.36:22122` sunt
|
|
**acelasi server**, vazut din exterior si din reteaua interna — listele de chei sunt identice.
|
|
Profilul extern **nu mai autentifica neinteractiv** (`Attempting none authentication` → nicio
|
|
metoda disponibila, deci nici parola stocata, nici keypair global valid); pana se repara din GUI,
|
|
ruta interna `10.0.20.36` este cea care functioneaza, si e cea din script.
|
|
|
|
Restul profilelor din `D:\GoogleDrive` sunt clienti expirati (timeout / conexiune refuzata) sau
|
|
servere Linux/OpenSSH, unde SPKS nu exista (`cod 201: Failed to request PublicKey subsystem`) —
|
|
acolo cheia se pune direct in `~/.ssh/authorized_keys`.
|
|
|
|
### Adaugare si revocare in masa
|
|
|
|
```powershell
|
|
cd E:\proiecte\ROMFASTSQL\scripts
|
|
|
|
.\bitvise-chei.ps1 -Actiune List # ce chei sunt pe fiecare server
|
|
.\bitvise-chei.ps1 -Actiune Add -Cheie ..\docs\chei-publice\vm304.pub
|
|
.\bitvise-chei.ps1 -Actiune Remove -Cheie ..\docs\chei-publice\vm304.pub # revocare la plecare
|
|
```
|
|
|
|
Scriptul ruleaza `spksc` cu `-unat=y`, deci nu se blocheaza niciodata intr-un prompt: orice
|
|
server picat iese cu un cod de retur, nu cu o fereastra care asteapta. Coduri utile:
|
|
`101` conexiune esuata, `102` host key neacceptat in profil, `103` autentificare respinsa,
|
|
`201` serverul nu suporta SPKS, `233` algoritm de cheie nesuportat.
|
|
|
|
**Verificarea de dupa revocare nu e optionala**: `-Actiune List` si cauta comentariul cheii.
|
|
Un `Remove` care raporteaza "cheie inexistenta" pe un server unde cheia chiar era inseamna ca
|
|
te-ai conectat pe alt cont decat cel pe care a fost adaugata.
|
|
|
|
## 7. Mutarea profilelor mele pe VM 303, convertite la publickey
|
|
|
|
Profilele mele de client se conecteaza cu **parola salvata in fisier**. Copiate ca atare pe VM
|
|
303, angajatul primeste parolele tuturor clientilor. Conversia la publickey se face pe **copii**,
|
|
nu pe profilele de lucru.
|
|
|
|
De ce merita copiate in loc de reconstruite de la zero: **host key-ul calatoreste in profil**
|
|
(verificat pe toate cele 11 cu `-noRegistry=y` — niciun "host key rejected"), deci angajatul nu
|
|
mai are de verificat manual cate un fingerprint per client.
|
|
|
|
### Ce contine de fapt fiecare profil
|
|
|
|
Se afla fara sa deschizi nimic in GUI, ruland comanda cu `-noRegistry=y` (blocheaza registry-ul,
|
|
deci ce reuseste vine din fisier):
|
|
|
|
```powershell
|
|
$spksc = 'C:\Program Files (x86)\Bitvise SSH Client\spksc.exe'
|
|
foreach ($f in Get-ChildItem 'D:\vm303-profile') {
|
|
$o = & $spksc "-profile=$($f.FullName)" -noRegistry=y -unat=y -initialKexTimeout=20 "-cmd=List Server" 2>&1 | Out-String
|
|
'{0,-24} {1}' -f $f.Name, (($o -split "`n" | Select-String 'Attempting|Signing with client key' | Select-Object -First 2) -join ' / ')
|
|
}
|
|
```
|
|
|
|
Starea la 2026-09-01, inainte de conversie:
|
|
|
|
- 9 profile → `Attempting password authentication` = **parola in fisier, portabila** (nu e legata
|
|
de contul meu Windows, deci pleaca odata cu fisierul);
|
|
- `vadeco.tlp` → `Signing with client key 'Profile 1'` = **cheie privata Ed25519 salvata in
|
|
profil**. Copiat asa, angajatul primeste cheia mea privata — singurul lucru din procedura care
|
|
chiar are consecinte;
|
|
- `romfast_bitvise.tlp` → nimic. Initial am citit asta ca "foloseste o cheie globala din
|
|
registry", dar verificarea ulterioara (`-pk=a`, care ar incerca orice cheie globala) arata
|
|
`Attempting none authentication` si apoi nicio metoda: profilul **nu are nicio credentiala
|
|
utilizabila**. Nu e gata de copiat — trebuie deschis in GUI si reparat inainte, altfel
|
|
angajatul primeste un profil care doar cere parola.
|
|
|
|
### Pasul 1 — folderul de pregatire
|
|
|
|
```powershell
|
|
$dest = 'D:\vm303-profile'
|
|
New-Item -ItemType Directory -Force $dest | Out-Null
|
|
'automotive.tlp','avis.tlp','clever-motors.tlp','conpress_romfast.tlp','eduard.tlp',
|
|
'ems.tlp','romconstruct.bscp','romfast_bitvise.tlp','sigma.tlp','vadeco.tlp','vending.tlp' |
|
|
ForEach-Object { Copy-Item "D:\GoogleDrive\$_" $dest -Force }
|
|
```
|
|
|
|
Folderul e **in afara** lui `D:\GoogleDrive` intentionat: pana la pasul 2 copiile inca au parolele
|
|
inauntru si n-au ce cauta in sincronizarea cu cloud-ul.
|
|
|
|
Lipsesc din lista, cu motiv: `abcval.tlp` (Bitvise 9.32, respinge Ed25519) si
|
|
`bitvise_10.0.20.36.bscp` (acelasi server cu `romfast_bitvise.tlp`, cu parola expirata).
|
|
|
|
|
|
### Lista profilelor pregatite, cu numele scurte
|
|
|
|
Numele au fost scurtate la copiere; astea sunt fisierele care pleaca pe VM 303 / VM 304 (pe VM
|
|
304 stau in `D:\roa\BITVISE\`). Coloana "server" e citita din fisier, fara conectare.
|
|
|
|
| Fisier (copie) | Original din `D:\GoogleDrive` | Server | Utilizator |
|
|
|---|---|---|---|
|
|
| `automotive.tlp` | `automotive.tlp` | `78.96.115.213:22122` | `automotive` |
|
|
| `avis.tlp` | `avis.tlp` | `86.124.94.107` | `romfast` |
|
|
| `clever.tlp` | `clever-motors.tlp` | `clever-motors.go.ro` | `romfast` |
|
|
| `conpress.tlp` | `conpress_romfast.tlp` | `185.132.173.105:22322` | `romfast` |
|
|
| `eduard.tlp` | `eduard.tlp` | `extra.edituraeduard.ro` | `romfast` |
|
|
| `ems.tlp` | `ems.tlp` | `185.132.173.240` | `romfast` |
|
|
| `romconstruct.bscp` | `romconstruct.bscp` | `82.76.217.177` | `romfast` |
|
|
| `romfast.tlp` | `romfast_bitvise.tlp` | `roadigi.romfast.ro:22122` | `romfast` |
|
|
| `sigma.tlp` | `sigma.tlp` | `82.137.26.46` | `romfast` |
|
|
| `vadeco.tlp` | `vadeco.tlp` | `100.93.100.75` (Tailscale) | `romfast` |
|
|
| `vending.tlp` | `vending.tlp` | `79.119.86.134` | `romfast` |
|
|
|
|
Trei fisiere au fost redenumite: `clever-motors` → `clever`, `conpress_romfast` → `conpress`,
|
|
`romfast_bitvise` → `romfast`. Restul si-au pastrat numele. `romfast.tlp` merge pe copie (a fost
|
|
reparat acolo), desi originalul din `D:\GoogleDrive` a ramas fara credentiala.
|
|
|
|
### Pasul 2 — conversia (GUI, obligatoriu manual)
|
|
|
|
`-storePw=n` scoate parola, `-pk=a` pune metoda initiala pe publickey cu "orice cheie accepta
|
|
serverul" — asa profilul nu depinde de pozitia cheii in managerul angajatului. Ambele sunt
|
|
*profile modifications*: se aplica la incarcare, dar **Bitvise nu salveaza profilul din linia de
|
|
comanda** ("it will not be saved unless the user manually saves it"), deci Ctrl+S e al tau.
|
|
|
|
```powershell
|
|
Get-ChildItem 'D:\vm303-profile' | ForEach-Object {
|
|
Start-Process -Wait 'C:\Program Files (x86)\Bitvise SSH Client\BvSsh.exe' `
|
|
-ArgumentList "-profile=$($_.FullName)", '-storePw=n', '-pk=a'
|
|
}
|
|
```
|
|
|
|
In fiecare fereastra: **Ctrl+S**, apoi inchizi — `-Wait` face bucla sa treaca la urmatorul.
|
|
|
|
La **`vadeco.tlp`**, inainte de Ctrl+S: Login → **User keypair manager** → scope **Profile** →
|
|
sterge keypair-ul de acolo.
|
|
|
|
### Pasul 3 — verificarea, inainte sa plece ceva spre VM 303
|
|
|
|
Aceeasi comanda ca la inceputul sectiunii. Dupa conversie, pe **niciun** profil nu mai are voie
|
|
sa apara `Attempting password authentication` sau `Signing with client key 'Profile 1'`. Daca
|
|
apar, Ctrl+S nu s-a facut pe acel profil — verificarea e singurul lucru care prinde asta, fiindca
|
|
fereastra inchisa fara salvare nu da niciun semnal.
|
|
|
|
|
|
Stare la 2026-09-01, dupa conversie: cele 11 copii nu mai incearca nicio metoda pe cont propriu
|
|
(parola scoasa, keypair de profil sters la `vadeco`), host key-ul e in continuare in fisier
|
|
(`hostkey_prompt=0`), iar cu o cheie furnizata explicit — `-keypairFile=...`, exact ce va face
|
|
managerul de keypair-uri al angajatului — **10 din 11 se autentifica**. Al 11-lea, `conpress`,
|
|
nu e o problema de profil: si originalul, si copia primesc EOF de la `185.132.173.105:22322`,
|
|
adica serverul ne blocheaza temporar IP-ul dupa conexiunile de azi. Se reia mai tarziu.
|
|
|
|
Atentie la un efect secundar: stergerea keypair-urilor **globale** din User keypair manager (utila
|
|
ca sa nu plece cheia mea cu profilele) lasa fara credentiala orice profil care se baza pe ele —
|
|
in cazul nostru originalul `romfast_bitvise.tlp`. Se repara importand cheia la loc, sau se
|
|
foloseste ruta interna `10.0.20.36:22122` catre acelasi server.
|
|
|
|
### Pasul 4 — pe VM 303
|
|
|
|
1. Copiezi folderul (ex. in `C:\profile`).
|
|
2. BvSsh → Login → **User keypair manager** → **Import** `C:\Users\romfast\.ssh\id_ed25519`,
|
|
scope **Global**.
|
|
3. Test per client — trebuie `Attempting publickey authentication` + `Authentication completed`:
|
|
|
|
```powershell
|
|
& 'C:\Program Files (x86)\Bitvise SSH Client\spksc.exe' -profile=C:\profile\ems.tlp -unat=y -cmd="List Server"
|
|
```
|
|
|
|
### Ce nu rezolva conversia
|
|
|
|
Stergerea parolei din profil **nu revoca nimic** — parola contului ramane valida pe serverul
|
|
clientului si oricine o stie intra in continuare. Daca angajatul nu trebuie sa poata intra cu
|
|
parola deloc, parola se schimba pe server sau se dezactiveaza metoda `password` pe cont
|
|
(Control Panel → intrarea contului/grupului → Authentication).
|
|
|
|
## Capcane
|
|
|
|
- Cheia privata nu se primeste niciodata "in avans" de la angajat ca backup — daca se pierde, se
|
|
genereaza una noua si se repeta pasul 2.
|
|
- `-noRegistry=y` + keypair doar in registry = autentificare care cere parola sau esueaza; testul
|
|
scripturilor se face cu acelasi stil de comanda cu care vor rula in productie.
|
|
- Profilele noi (.tlp) se dau angajatului **fara parola salvata**; daca a mostenit una din copie,
|
|
se sterge din Authentication methods inainte de predare.
|