Acces la server pentru colegi și dezvoltatori externi
Cum dați acces la server unui coleg sau unui freelancer fără să împărțiți contul, parola root sau token-urile: chei SSH, utilizatori separați, acces doar prin SFTP și retragerea accesului.
Pe această pagină
Ghidul arată cum dați acces la server unui coleg sau unui dezvoltator extern fără să împărțiți contul blackbox.md, parola root sau token-urile API. Cheia colegului pentru root o adăugați în panoul app.blackbox.md, pe cardul serverului din „Serverele mele” (app.blackbox.md/my-servers, meniul din stânga „Infrastructură” → „Serverele mele”). Utilizatorii separați și accesul doar prin SFTP se configurează pe server, prin SSH, ca root.
Disponibil pentru: titularul contului blackbox.md care a comandat serverul sau un cont căruia BLACKBOX i-a acordat drept de administrare pentru server (pașii din panou) și oricine are acces root prin SSH la server (pașii de pe server). Pe cardurile marcate „Administrat” butoanele „Adaugă cheie SSH” și „Resetează parola” nu apar; pentru aceste servere scrieți-ne.
Ce există în cont și în panou
- Contul blackbox.md și panoul nu au membri de echipă, sub-utilizatori, roluri sau invitații trimise de clienți. Fiecare persoană folosește propriul cont blackbox.md.
- Un coleg cu cont propriu nu vede comenzile, facturile, tichetele sau serverele dvs. și nu intră în panou în locul dvs. Pentru acces prin SSH sau SFTP nu are nevoie de cont.
- Accesul comun la serverele unei companii administrate de BLACKBOX (cardurile „Administrat”) se acordă doar la cerere, prin suport: Pagina „Prezentare generală” (Overview).
- Lista „Chei instalate” și butonul „Adaugă cheie SSH” lucrează doar cu fișierul
/root/.ssh/authorized_keys. Cheile altor utilizatori Linux le gestionați direct pe server.
Ce nu împărțiți niciodată
| Nu dați | De ce |
|---|---|
| Parola contului blackbox.md | Cu ea se plasează și se plătesc comenzi, se deschide panoul și se creează token-uri API. |
| Parola root | Dă control total asupra serverului, iar cu o parolă comună nu se vede cine a lucrat. |
Token-urile API (bbx_pat_…) |
Acționează ca titularul contului: cu permisiunea servers:exec rulează orice comandă ca root, iar cu orders:write plasează comenzi și plătește din sold (Permisiunile token-urilor (scopes)). |
| Codurile de recuperare 2FA | Înlocuiesc codul din aplicația de autentificare la intrarea în panou. |
| Cheile private SSH | O cheie privată nu pleacă de pe calculatorul proprietarului: nu o trimiteți pe a dvs. și nu acceptați cheia privată a altcuiva. |
Conform Termenilor și condițiilor (§3), răspundeți integral pentru activitatea tuturor persoanelor pe care le autorizați să acceseze serviciile (angajați, contractori) și pentru securizarea parolelor, cheilor SSH și token-urilor API.
Colegul își generează propria pereche de chei (Generarea unei chei SSH (Windows, macOS, Linux)) și vă trimite doar cheia publică: o singură linie din fișierul .pub. Rugați-l să-și pună numele în comentariul cheii, ca s-o recunoașteți în „Chei instalate”:
ssh-keygen -t ed25519 -C "NUME_COLEG"Cereți-i și amprenta cheii, ca s-o comparați cu cea instalată pe server. Pe macOS și Linux:
ssh-keygen -lf ~/.ssh/id_ed25519.pubPe Windows (PowerShell):
ssh-keygen -lf $env:USERPROFILE\.ssh\id_ed25519.pubCe acces alegeți
| De ce are nevoie colegul | Soluția | Unde |
|---|---|---|
| Administrare completă a serverului | Cheia lui publică pentru root, adăugată cu „Adaugă cheie SSH” → „Lipește o cheie nouă”; o ștergeți din „Chei instalate” |
panou |
| Administrare cu login propriu, ca să se vadă cine ce a făcut | Utilizator Linux separat, în grupul sudo (Ubuntu, Debian) sau wheel (AlmaLinux, CentOS Stream) |
server |
| Doar fișierele site-ului | Utilizator doar pentru SFTP, limitat la directorul site-ului | server |
| Doar baza de date | Utilizator separat fără sudo și tunel SSH (Baze de date: MariaDB/MySQL și PostgreSQL) |
server |
Cheia colegului pentru root, din panou
Pe cardul serverului din „Serverele mele”, apăsați „Adaugă cheie SSH”.
Alegeți „Lipește o cheie nouă” și lipiți linia primită de la coleg (
ssh-ed25519 AAAA… NUME_COLEG).Apăsați „Adaugă cheia”. Apare „Cheie adăugată.”, iar cheia apare în „Chei instalate”, cu comentariul ei.
Comparați începutul amprentei din listă cu amprenta trimisă de coleg.
Colegul se conectează:
ssh root@IP_SERVER
Cheia lipită se instalează doar pe acest server și nu se salvează în contul dvs. Lista și mesajele ei: Adăugarea și ștergerea cheilor SSH pe server.
Important O cheie pentru
rootînseamnă control total: colegul poate citi toate datele, poate adăuga alte chei și utilizatori și poate schimba orice setare. Rugați-l să nu șteargă „Cheie de administrare (blackbox.md)” și să nu setezePermitRootLogin no: oricare dintre aceste acțiuni oprește resetarea parolei, gestionarea cheilor și butoanele de autentificare cu parolă din panou (Cheile BLACKBOX de pe serverul dvs.).
Utilizator Linux separat pentru coleg
Un utilizator separat are login propriu: în jurnale apar numele lui și comenzile rulate cu sudo. Pașii seamănă cu pasul 5 din Securizarea unui server nou: lista de verificare, dar pe server ajunge cheia colegului, nu cheile lui root. Rulați comenzile ca root.
Ubuntu și Debian
adduser --disabled-password NUME_UTILIZATORComanda creează și directorul /home/NUME_UTILIZATOR. Câmpurile cerute (nume complet, telefon etc.) le puteți lăsa goale. Utilizatorul nu are parolă și se conectează doar cu cheia.
AlmaLinux și CentOS Stream
useradd -m NUME_UTILIZATORNici aici utilizatorul nu primește parolă: se conectează doar cu cheia.
Cheia publică a colegului
Creați directorul și deschideți fișierul cheilor:
mkdir -p /home/NUME_UTILIZATOR/.ssh nano /home/NUME_UTILIZATOR/.ssh/authorized_keysDacă
nanolipsește (se poate întâmpla pe AlmaLinux și CentOS Stream), instalați-l:dnf install -y nanoLipiți pe un singur rând cheia publică a colegului, salvați cu Ctrl + O și Enter, apoi ieșiți cu Ctrl + X.
Setați proprietarul și drepturile:
chown -R NUME_UTILIZATOR:NUME_UTILIZATOR /home/NUME_UTILIZATOR/.ssh chmod 700 /home/NUME_UTILIZATOR/.ssh chmod 600 /home/NUME_UTILIZATOR/.ssh/authorized_keysPe AlmaLinux și CentOS Stream refaceți și eticheta SELinux:
restorecon -R /home/NUME_UTILIZATOR/.sshComparați amprenta afișată cu cea trimisă de coleg:
ssh-keygen -lf /home/NUME_UTILIZATOR/.ssh/authorized_keys
Nu copiați /root/.ssh/authorized_keys la utilizatorul nou: acolo sunt cheile dvs. și cheile BLACKBOX.
Drepturi de administrare (doar dacă sunt necesare)
Membrii grupului sudo (Ubuntu, Debian) sau wheel (AlmaLinux, CentOS Stream) pot rula orice comandă ca root. sudo cere parola utilizatorului, așa că setați-i una.
Ubuntu și Debian:
passwd NUME_UTILIZATOR
usermod -aG sudo NUME_UTILIZATORPe Debian, dacă lipsește comanda sudo, instalați-o:
apt install -y sudoAlmaLinux și CentOS Stream:
passwd NUME_UTILIZATOR
usermod -aG wheel NUME_UTILIZATORTransmiteți parola separat de restul datelor de acces și rugați colegul s-o schimbe cu passwd la prima conectare. Pe un server „Parolă + cheie”, cu această parolă colegul s-ar putea conecta și prin SSH; trecerea la „Doar cheie”: Activarea și dezactivarea autentificării SSH cu parolă. Comenzile rulate cu sudo le vedeți în jurnal:
journalctl _COMM=sudoPrima conectare
Testați conectarea împreună cu colegul înainte să-i predați accesul, cu sesiunea dvs. root deschisă. În ea urmăriți jurnalul SSH. Pe Ubuntu și Debian:
journalctl -u ssh -fPe AlmaLinux și CentOS Stream:
journalctl -u sshd -fColegul se conectează:
ssh NUME_UTILIZATOR@IP_SERVERÎn jurnal apare o linie Accepted publickey for NUME_UTILIZATOR, cu amprenta cheii; opriți urmărirea cu Ctrl + C. Dacă i-ați dat drepturi de administrare, colegul rulează comanda de mai jos, care trebuie să afișeze root:
sudo whoamiPe un server „Doar cheie”, colegul se conectează doar cu cheia. Nu reactivați autentificarea cu parolă pentru el: „Activează login cu parolă” o pornește pentru toți utilizatorii, inclusiv root.
Doar baza de date
Creați utilizatorul ca mai sus, fără drepturi de administrare. Ca el să poată deschide doar tunelul, nu și un terminal:
usermod -s /usr/sbin/nologin NUME_UTILIZATORColegul pornește tunelul cu numele lui de utilizator (pentru PostgreSQL, înlocuiți 3306 cu 5432):
ssh -N -L 3306:127.0.0.1:3306 NUME_UTILIZATOR@IP_SERVERTunelul trece prin portul SSH (22), deci portul bazei de date nu trebuie deschis. În baza de date creați-i un utilizator separat, doar cu drepturile de care are nevoie: Baze de date: MariaDB/MySQL și PostgreSQL.
Acces doar prin SFTP la fișierele site-ului (opțional)
Colegul poate doar încărca și descărca fișiere în directorul site-ului: nu primește terminal și nu poate deschide tuneluri. Exemplul presupune site-ul în /var/www/DOMENIU. SSH îl limitează pe coleg la directorul /srv/sftp/NUME_UTILIZATOR, care aparține lui root și pe care colegul nu îl poate modifica. În el, subdirectorul site arată directorul site-ului, unde colegul poate scrie.
Pe planurile „VPS hosting”, întrebați întâi suportul: panoul de control de pe server poate avea propriile conturi și setări SFTP (Planurile „VPS hosting” cu panou de control).
Atenție Pașii 4 și 5 modifică setările SSH. Păstrați deschisă sesiunea
rootcurentă până vă conectați din nou carootdintr-un terminal nou. Clienții nu au consolă web sau VNC: dacă pierdeți accesul SSH, vă poate ajuta doar suportul.
Creați grupul (o singură dată, pentru toți utilizatorii SFTP) și utilizatorul.
Ubuntu și Debian:
groupadd sftponly adduser --disabled-password --shell /usr/sbin/nologin NUME_UTILIZATOR usermod -aG sftponly NUME_UTILIZATORAlmaLinux și CentOS Stream:
groupadd sftponly useradd -m -s /usr/sbin/nologin -G sftponly NUME_UTILIZATORAdăugați apoi cheia colegului ca în secțiunea „Cheia publică a colegului” de mai sus.
Creați directorul colegului și faceți o copie a fișierului
/etc/fstab:mkdir -p /srv/sftp/NUME_UTILIZATOR/site chown root:root /srv/sftp /srv/sftp/NUME_UTILIZATOR chmod 755 /srv/sftp /srv/sftp/NUME_UTILIZATOR cp /etc/fstab /etc/fstab.bak nano /etc/fstabLa sfârșitul fișierului
/etc/fstabadăugați linia de mai jos și salvați:/var/www/DOMENIU /srv/sftp/NUME_UTILIZATOR/site none bind,nofail 0 0Montați directorul site-ului și verificați că vedeți fișierele lui:
systemctl daemon-reload mount /srv/sftp/NUME_UTILIZATOR/site ls /srv/sftp/NUME_UTILIZATOR/siteLinia din
/etc/fstabrefăce montarea după fiecare repornire. Cunofail, o greșeală în ea nu oprește pornirea serverului.Permiteți scrierea în site. Fișierele site-ului trebuie să aparțină utilizatorului serverului web: Transferul fișierelor pe server (scp, rsync, SFTP), secțiunea „După încărcarea unui site: proprietarul și permisiunile”. Aflați grupul lor:
stat -c '%U:%G' /var/www/DOMENIUDe regulă rezultatul este
www-data:www-datape Ubuntu și Debian șiapache:apachesaunginx:nginxpe AlmaLinux și CentOS Stream. Dacă vedețiroot:root, schimbați întâi proprietarul ca în secțiunea indicată. Apoi rulați comenzile de mai jos, cu grupul de după:în loc deGRUP_WEB:usermod -aG GRUP_WEB NUME_UTILIZATOR chmod -R g+w /var/www/DOMENIU find /var/www/DOMENIU -type d -exec chmod g+s {} +Fișierele încărcate de coleg îi aparțin lui și grupului serverului web, care le poate citi. Dacă aplicația trebuie să le și modifice, refaceți proprietarul ca în ghidul de transfer, apoi rulați din nou ultimele două comenzi.
Faceți o copie a setărilor SSH și deschideți fișierul principal:
cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak nano /etc/ssh/sshd_configAdăugați la sfârșitul fișierului blocul de mai jos și salvați:
Match Group sftponly ChrootDirectory /srv/sftp/%u ForceCommand internal-sftp -d /site AllowTcpForwarding no X11Forwarding noBlocul trebuie să rămână ultimul din fișier: tot ce urmează după
Matchse aplică doar grupuluisftponly.%use înlocuiește cu numele utilizatorului, iar-d /siteîl deschide pe coleg direct în directorul site-ului.- Nu adăugați
PasswordAuthenticationîn bloc: autentificarea cu parolă o controlați din panou. - Nu setați
PermitRootLogin noși nu modificați fișierul scris de panou în/etc/ssh/sshd_config.d/.
- Nu adăugați
Verificați setările:
sshd -tDacă comanda nu afișează nimic, setările sunt corecte. Abia apoi reîncărcați SSH:
systemctl reload ssh || systemctl reload sshdDacă
sshd -tafișează o eroare, nu reîncărcați SSH: corectați fișierul sau restaurați copia, apoi verificați din nou cusshd -t.cp /etc/ssh/sshd_config.bak /etc/ssh/sshd_configDintr-un terminal nou, verificați că vă conectați în continuare ca
root. Apoi rugați colegul să se conecteze cu un client SFTP, de exemplu FileZilla sau WinSCP, cu utilizatorulNUME_UTILIZATORși cheia lui, sau din terminal:sftp NUME_UTILIZATOR@IP_SERVERColegul ajunge în
/siteși nu vede nimic în afara directorului/srv/sftp/NUME_UTILIZATOR. Dacă încearcăssh, primește „This service allows sftp connections only.” și conexiunea se închide.
Dacă ceva nu merge, citiți ultimele mesaje ale serviciului SSH. Pe Ubuntu și Debian:
journalctl -u ssh -n 50Pe AlmaLinux și CentOS Stream:
journalctl -u sshd -n 50| Problemă | Cauză | Ce faceți |
|---|---|---|
Conexiunea se închide imediat; în jurnal apare bad ownership or modes for chroot directory |
/srv/sftp sau /srv/sftp/NUME_UTILIZATOR nu aparține lui root ori poate fi modificat de alții |
Repetați comenzile chown și chmod de la pasul 2 |
Permission denied la încărcarea unui fișier |
Colegul nu este în grupul serverului web sau directorul nu permite scrierea grupului | Repetați pasul 3; colegul se reconectează, ca să i se aplice grupul nou |
Directorul /site este gol |
Directorul site-ului nu este montat | Rulați din nou comanda mount de la pasul 2 |
| AlmaLinux sau CentOS Stream: conectarea eșuează, fără mesajele de mai sus | Poate fi o blocare SELinux | Căutați cauza în jurnalul serviciului sshd (comanda de mai sus); dacă nu o găsiți, scrieți-ne |
Retragerea accesului
Când lucrarea s-a încheiat sau persoana pleacă, retrageți accesul imediat.
Cheia de pe root
- Pe cardul serverului, apăsați „Adaugă cheie SSH”.
- În „Chei instalate”, găsiți cheia colegului după comentariu și amprentă și apăsați „Șterge”.
- Confirmați „Ștergeți cheia SHA256:… de pe acest server?” cu „OK”. Apare „Cheie ștearsă.”
- Apăsați „Resetează parola” și confirmați „Resetați parola pentru NUME_SERVER? Parola curentă încetează să funcționeze imediat.”: cât a avut acces, colegul ar fi putut schimba parola root (Resetarea parolei root).
Utilizatorul separat
Închideți sesiunile lui deschise:
pkill -KILL -u NUME_UTILIZATORApoi ștergeți utilizatorul împreună cu directorul lui. Ubuntu și Debian:
deluser --remove-home NUME_UTILIZATORAlmaLinux și CentOS Stream (și Ubuntu sau Debian, dacă deluser cere pachetul perl):
userdel -r NUME_UTILIZATORUtilizatorul doar SFTP
Închideți întâi sesiunile lui cu pkill, ca mai sus. Înainte să ștergeți utilizatorul, demontați directorul site-ului, ștergeți linia lui din /etc/fstab și eliminați directoarele rămase goale:
umount /srv/sftp/NUME_UTILIZATOR/site
nano /etc/fstab
rmdir /srv/sftp/NUME_UTILIZATOR/site /srv/sftp/NUME_UTILIZATORRisc Nu folosiți
rm -rîn/srv/sftp. Cât timp directorul site-ului este montat acolo, comanda ar șterge chiar fișierele site-ului.rmdirșterge doar directoare goale, deci refuză dacă montarea este încă activă.
Verificări după plecare
Căutați chei, utilizatori și drepturi de administrare pe care nu le recunoașteți. „Chei instalate” arată doar cheile lui
root.cat /root/.ssh/authorized_keys ls -la /home/*/.ssh/authorized_keys ls -la /etc/sudoers.d/ getent group sudo wheelSchimbați secretele pe care persoana le-a cunoscut: parolele bazelor de date (ștergeți și utilizatorul bazei creat pentru ea), cheile aplicațiilor, de exemplu din
.envsauwp-config.php, parolele SMTP și cheile serviciilor externe.Verificați autentificările recente:
last -n 20Pe Ubuntu și Debian:
journalctl -u ssh --since "30 days ago" | grep AcceptedPe AlmaLinux și CentOS Stream:
journalctl -u sshd --since "30 days ago" | grep AcceptedLiniile
Acceptedarată utilizatorul, adresa IP și metoda de autentificare. Dacălastlipsește, folosiți doarjournalctl.
Dacă bănuiți că accesul a fost folosit abuziv, urmați Serverul a fost spart sau este atacat: ce faceți.
Întrebări frecvente
Poate colegul să vadă serverul în panoul lui? Nu. Un server comandat pe blackbox.md apare doar în contul care l-a comandat și nu se poate partaja în panou. Doar serverele unei companii administrate de BLACKBOX se pot partaja, la cerere, prin suport (Cum contactați suportul BLACKBOX).
Freelancerul îmi cere parola root sau datele contului. Ce fac?
Nu le dați. Adăugați-i cheia publică pentru root sau creați-i un utilizator separat. Dacă le-ați dat deja, apăsați „Resetează parola” pe cardul serverului și schimbați parola contului, ceea ce oprește și token-urile API create înainte (Recomandări de securitate pentru contul dvs.). Apoi faceți verificările din secțiunea „Verificări după plecare”.
Cum știu a cui este o cheie din „Chei instalate”? Lista arată începutul amprentei, tipul și comentariul cheii. Rugați colegul să-și pună numele în comentariu când generează cheia și comparați amprenta cu cea trimisă de el: comentariul îl poate scrie oricine, amprenta nu se poate falsifica.
Îi pot da colegului un token API pentru asistentul AI?
Nu o faceți. Token-ul acționează în numele dvs., ca titular al contului: cu servers:exec rulează comenzi ca root pe toate serverele dvs., iar cu orders:write plasează comenzi și plătește din sold. Colegul lucrează cu propriul acces SSH.
Colegul are nevoie de cont pe blackbox.md? Nu. Pentru SSH sau SFTP îi ajung cheia lui și accesul pe care i-l dați pe server. Un cont propriu nu îi arată serverele dvs.