SSHD(8)

NUME
sshd - Demonul OpenSSH

SINOPSIS
sshd [-46DdeGiqTtV] [-C specificare-conectare] [-c fișier-certificat-gazdă] [-E fișier-jurnal] [-f fișier-configurare] [-g timp-de-grație-autentificare] [-h fișier-cheie-gazdă] [-o opțiune] [-p port] [-u lungime]

DESCRIERE
sshd (Demonul OpenSSH) este programul demon pentru ssh(1). Acesta oferă comunicații criptate sigure între două gazde „neîncrezătoare” printr-o rețea nesigură.

sshd ascultă conexiunile de la clienți. În mod normal, este inițiat la pornire din /etc/init.d/ssh. Acesta creează un nou demon pentru fiecare conexiune primită. Demonii bifurcați gestionează schimbul de chei, criptarea, autentificarea, executarea comenzilor și schimbul de date.

sshd poate fi configurat folosind opțiuni din linia de comandă sau un fișier de configurare (implicit sshd_config(5)); opțiunile din linia de comandă prevalează asupra valorilor specificate în fișierul de configurare. sshd își recitește fișierul de configurare atunci când primește un semnal de întrerupere, SIGHUP, executându-se cu numele și opțiunile cu care a fost pornit, de exemplu /usr/sbin/sshd.

Opțiunile sunt următoarele:

-4  Forțează sshd să utilizeze numai adrese IPv4.

-6  Forțează sshd să utilizeze numai adrese IPv6.

-C specificare-conectare
    Specifică parametrii de conectare care urmează să fie utilizați pentru modul de testare extinsă -T. Dacă sunt furnizate, orice directive Match din fișierul de configurare care s-ar aplica sunt aplicate înainte ca configurația să fie scrisă la ieșirea standard. Parametrii conexiunii sunt furnizați ca perechi cuvânt cheie=valoare și pot fi furnizați în orice ordine, fie cu mai multe opțiuni -C, fie ca o listă separată prin virgule. Cuvintele-cheie sunt “addr”, “user”, “host”, “laddr”, “lport” și “rdomain” și corespund adresei sursă, utilizatorului, numelui gazdei sursă rezolvate, adresei locale, numărului portului local și, respectiv, domeniului de rutare. În plus, fanionul “invalid-user” (care nu are un argument de valoare) poate fi specificat pentru a simula o conexiune de la un nume de utilizator nerecunoscut.

-c fișier-certificat-gazdă
    Specifică o rută către un fișier de certificat pentru a identifica sshd în timpul schimbului de chei. Fișierul de certificat trebuie să corespundă unui fișier de cheie gazdă specificat cu ajutorul opțiunii -h sau al directivei de configurare HostKey.

-D  Când este specificată această opțiune, sshd nu se va detașa și nu va deveni un demon. Acest lucru permite monitorizarea ușoară a sshd.

-d  Modul de depanare. Serverul trimite ieșirea de depanare detaliată la ieșirea de eroare standard și nu se pune în fundal. De asemenea, serverul nu va executa fork(2) și va procesa o singură conexiune. Această opțiune este destinată numai pentru depanare pentru server. Opțiunile multiple -d măresc nivelul de depanare. Maximul este 3.

-E fișier-jurnal
    Adaugă jurnalele de depanare la fișierul- jurnal în loc de jurnalul de sistem.

-e  Scrie jurnalele de depanare la ieșirea din eroare standard în loc de jurnalul de sistem.

-f fișier-configurare
    Specifică numele fișierului de configurare. Valoarea implicită este /etc/ssh/sshd_config. sshd refuză să pornească dacă nu există niciun fișier de configurare.

-G  Analizează și imprimă fișierul de configurare. Verifică validitatea fișierului de configurare, emite configurația efectivă la ieșirea standard și apoi iese. Opțional, regulile Match pot fi aplicate prin specificarea parametrilor de conexiune folosind una sau mai multe opțiuni -C.

-g timp-de-grație-autentificare
    Acordă timp de grație clienților pentru a se autentifica (implicit 120 de secunde). Dacă clientul nu reușește să autentifice utilizatorul în acest număr de secunde, serverul se deconectează și iese. O valoare de zero indică lipsa unei limite.

-h fișier-cheie-gazdă
    Specifică un fișier din care este citită o cheie de gazdă. Această opțiune trebuie furnizată dacă sshd nu este rulat ca root (deoarece fișierele de chei de gazdă normale nu pot fi citite decât de root). Valoarea implicită este /etc/ssh/ssh_host_ecdsa_key, /etc/ssh/ssh_host_ed25519_key și /etc/ssh/ssh_host_rsa_key. Este posibil să aveți mai multe fișiere de chei de gazdă pentru diferiți algoritmi de chei de gazdă.

-i  Specifică faptul că sshd este rulat din inetd(8).

-o opțiune
    Poate fi utilizată pentru a oferi opțiuni în formatul utilizat în fișierul de configurare. Acest lucru este util pentru specificarea opțiunilor pentru care nu există un indicator de linie de comandă separat. Pentru detalii complete privind opțiunile și valorile acestora, consultați sshd_config(5).

-p port
    Specifică portul pe care serverul ascultă conexiunile (implicit 22). Sunt permise mai multe opțiuni de port. Porturile specificate în fișierul de configurare cu opțiunea Port sunt ignorate atunci când este specificat un port în linia de comandă. Porturile specificate cu ajutorul opțiunii ListenAddress prevalează asupra porturilor din linia de comandă.

-q  Modul silențios. Nimic nu este trimis în jurnalul de sistem. În mod normal, începutul, autentificarea și încheierea fiecărei conexiuni sunt înregistrate.

-T  Modul de testare extinsă. Verifică validitatea fișierului de configurare, emite configurația efectivă la ieșirea standard și apoi iese. Opțional, regulile Match pot fi aplicate prin specificarea parametrilor conexiunii folosind una sau mai multe opțiuni -C. Aceasta este similară cu opțiunea -G, dar include testarea suplimentară efectuată de opțiunea -t.

-t  Modul de testare. Verifică doar validitatea fișierului de configurare și corectitudinea cheilor. Acest lucru este util pentru actualizarea fiabilă a sshd, deoarece opțiunile de configurare se pot schimba.

-u lungime
    Această opțiune este utilizată pentru a specifica dimensiunea câmpului din structura utmp care conține numele gazdei la distanță. Dacă numele de gazdă rezolvat este mai lung decât len, se va utiliza în schimb valoarea zecimală punctată.(XXX.XXX.XXX.XXX) Acest lucru permite gazdelor cu nume de gazdă foarte lungi care depășesc acest câmp să fie totuși identificate în mod unic. Specificarea -u0 indică faptul că în fișierul utmp ar trebui introduse numai adrese zecimale punctate. -u0 poate fi utilizat și pentru a împiedica sshd să efectueze cereri DNS, cu excepția cazului în care mecanismul de autentificare sau configurația o solicită. Mecanismele de autentificare care pot necesita DNS includ HostbasedAuthentication și utilizarea unei opțiuni from="listă-modele" într-un fișier cheie. Opțiunile de configurare care necesită DNS includ utilizarea unui model UTILIZATOR@GAZDĂ în AllowUsers sau DenyUsers.

-V  Afișează numărul versiunii, și iese.

AUTENTIFICARE
Demonul SSH OpenSSH acceptă numai protocolul SSH 2. Fiecare gazdă are o cheie specifică gazdei, utilizată pentru identificarea gazdei. Ori de câte ori un client se conectează, demonul răspunde cu cheia sa publică de gazdă. Clientul compară cheia gazdei cu propria sa bază de date pentru a verifica dacă aceasta nu s-a modificat. Secretul de transmitere este asigurat prin intermediul unui acord de chei Diffie-Hellman. Acest acord de chei are ca rezultat o cheie de sesiune partajată. Restul sesiunii este criptat utilizând un cifru simetric. Clientul selectează algoritmul de criptare de utilizat dintre cele oferite de server. În plus, integritatea sesiunii este asigurată printr-un cod criptografic de autentificare a mesajului („Message Authentication Code”: MAC).

În final, serverul și clientul intră într-un dialog de autentificare. Clientul încearcă să se autentifice folosind autentificarea bazată pe gazdă, autentificarea prin cheie publică, autentificarea prin provocare-răspuns sau autentificarea prin parolă.

Indiferent de tipul de autentificare, contul este verificat pentru a se asigura că este accesibil. Un cont nu este accesibil dacă este blocat, listat în DenyUsers sau grupul său este listat în DenyGroups . Definiția unui cont blocat depinde de sistem. Unele platforme au propria bază de date a conturilor (de exemplu AIX), iar altele modifică câmpul passwd ( ‘*LK*’ pe Solaris și UnixWare, ‘*’ pe HP-UX, conținând ‘Nologin’ pe Tru64, un ‘*LOCKED*’ pe FreeBSD și un ‘’! pe majoritatea Linux-urilor). Dacă există o cerință de a dezactiva autentificarea prin parolă pentru cont, permițând în același timp utilizarea cheii publice, atunci câmpul passwd trebuie să fie definit la altceva decât aceste valori (de exemplu ‘NP’ sau ‘*NP*’).

Dacă clientul se autentifică cu succes, se deschide un dialog pentru pregătirea sesiunii. În acest moment, clientul poate solicita lucruri precum alocarea unui pseudo-tty, redirecționarea conexiunilor X11, redirecționarea conexiunilor TCP sau redirecționarea conexiunii agentului de autentificare pe canalul securizat.

După aceasta, clientul solicită fie un shell interactiv, fie executarea unei comenzi non-interactive, pe care sshd o va executa prin intermediul shell-ului utilizatorului folosind opțiunea -c. Cele două părți intră apoi în modul sesiune. În acest mod, fiecare parte poate trimite date în orice moment, iar aceste date sunt transmise către/de la shell sau comandă pe partea serverului și de la terminalul utilizatorului pe partea clientului.

Atunci când programul utilizatorului se încheie și toate conexiunile X11 transmise și alte conexiuni au fost închise, serverul trimite starea de ieșire a comenzii către client și ambele părți ies.

PROCESUL DE AUTENTIFICARE
Atunci când un utilizator se autentifică cu succes, sshd face următoarele:

1.  Dacă autentificarea se face pe un tty și nu a fost specificată nicio comandă, imprimă ora ultimei autentificări și /etc/motd (cu excepția cazului în care este împiedicată în fișierul de configurare sau prin ~/.hushlogin; consultați secțiunea FILES).

2.  Dacă autentificarea se face pe un tty, înregistrează ora autentificării.

3.  Verifică /etc/nologin; dacă există, imprimă conținutul și iese (dacă utilizatorul nu este root).

4.  Modificări pentru a rula cu privilegii normale de utilizator.

5.  Definește un mediu bazic.

6.  Citește fișierul ~/.ssh/environment, dacă există, iar utilizatorilor li se permite să își schimbe mediul. Consultați opțiunea PermitUserEnvironment din sshd_config(5).

7.  Se plasează în directorul personal al utilizatorului.

8.  Dacă ~/.ssh/rc există și opțiunea sshd_config(5) PermitUserRC este definită, îl execută; altfel, dacă /etc/ssh/sshrc există, îl execută; altfel, execută xauth(1). Fișierele “rc” primesc protocolul de autentificare X11 și cookie-ul în intrarea standard. A se vedea SSHRC, mai jos.

9.  Rulează shell-ul sau comanda utilizatorului. Toate comenzile sunt executate în shell-ul de conectare al utilizatorului, astfel cum este specificat în baza de date cu parole a sistemului.

SSHRC
Dacă fișierul ~/.ssh/rc există, sh(1) îl execută după citirea fișierelor de mediu, dar înainte de a porni shell-ul sau comanda utilizatorului. Acesta nu trebuie să producă niciun rezultat la ieșirea standard (stdout); în schimb, trebuie utilizată ieșirea de erori standard (stderr). Dacă este utilizată redirecționarea X11, acesta va primi perechea „proto cookie” în intrarea sa standard (și DISPLAY în mediul său). Scriptul trebuie să apeleze xauth(1) deoarece sshd nu va rula xauth automat pentru a adăuga cookie-uri X11.

Scopul principal al acestui fișier este de a rula orice rutine de inițializare care pot fi necesare înainte ca directorul personal al utilizatorului să devină accesibil; AFS este un exemplu particular al unui astfel de mediu.

Acest fișier va conține probabil un cod de inițializare urmat de ceva similar cu:

    if read proto cookie && [ -n "$DISPLAY" ]; then
    	if [ `echo $DISPLAY | cut -c1-10` = 'localhost:' ]; then
    		# X11UseLocalhost=yes
    		echo add unix:`echo $DISPLAY |
    		    cut -c11-` $proto $cookie
    	else
    		# X11UseLocalhost=no
    		echo add $DISPLAY $proto $cookie
    	fi | xauth -q -
    fi

Dacă acest fișier nu există, se execută /etc/ssh/sshrc, iar dacă nici acesta nu există, se utilizează xauth pentru a adăuga cookie-ul.

FORMATUL FIȘIERULUI AUTHORIZED_KEYS
AuthorizedKeysFile specifică fișierele care conțin cheile publice pentru autentificarea cu cheie publică; dacă această opțiune nu este specificată, valoarea implicită este ~/.ssh/authorized_keys și ~/.ssh/authorized_keys2. Fiecare linie a fișierului conține o cheie (liniile goale și liniile care încep cu un ‘#’ sunt ignorate ca comentarii). Cheile publice sunt formate din următoarele câmpuri separate prin spații: opțiuni, tipul cheii, cheia codificată în baza64, comentariu. Câmpul opțiuni este opțional. Tipurile de chei acceptate sunt:

sk-ecdsa-sha2-nistp256@openssh.com
ecdsa-sha2-nistp256
ecdsa-sha2-nistp384
ecdsa-sha2-nistp521
sk-ssh-ed25519@openssh.com
ssh-ed25519
ssh-rsa

Câmpul de comentarii nu este utilizat pentru nimic (dar poate fi convenabil pentru utilizator să identifice cheia).

Rețineți că liniile din acest fișier pot fi lungi de câteva sute de octeți (din cauza dimensiunii codificării cheii publice) până la o limită de 8 kiloocteți, ceea ce permite chei RSA de până la 16 kilobiți. Nu doriți să le introduceți; în schimb, copiați fișierul id_ecdsa.pub, id_ecdsa_sk.pub, id_ed25519.pub, id_ed25519_sk.pub sau id_rsa.pub și editați-l.

sshd impune o dimensiune minimă a modulului cheii RSA de 1024 biți.

Opțiunile (dacă sunt prezente) constau în specificații de opțiuni separate prin virgule. Nu sunt permise spațiile, cu excepția celor între ghilimele duble. Sunt acceptate următoarele specificații ale opțiunilor (a se observa că cuvintele cheie ale opțiunilor nu țin cont de majuscule și minuscule):

agent-forwarding
    Activează redirecționarea agentului de autentificare dezactivată anterior de opțiunea restrict.

cert-authority
    Specifică faptul că cheia listată este o autoritate de certificare (CA) de încredere pentru validarea certificatelor semnate pentru autentificarea utilizatorului.

    Certificatele pot codifica restricții de acces similare cu aceste opțiuni ale cheii. În cazul în care sunt prezente atât restricții ale certificatului, cât și opțiuni ale cheii, se aplică cea mai restrictivă combinație dintre cele două.

command="comanda"
    Specifică faptul că comanda este executată ori de câte ori această cheie este utilizată pentru autentificare. Comanda furnizată de utilizator (dacă există) este ignorată. Comanda este executată pe un pty dacă clientul solicită un pty; în caz contrar, este executată fără un tty. Dacă este necesar un canal curat pe 8 biți, nu trebuie solicitat un pty sau trebuie specificat no-pty. Un citat poate fi inclus în comandă prin citarea sa cu o bară inversă.

    Această opțiune poate fi utilă pentru a restricționa anumite chei publice pentru a efectua doar o anumită operație. Un exemplu ar putea fi o cheie care permite salvări de la distanță, dar nimic altceva. Rețineți că clientul poate specifica redirecționarea TCP și/sau X11, cu excepția cazului în care acestea sunt interzise în mod explicit, de exemplu folosind opțiunea de cheie restrict.

    Comanda furnizată inițial de client este disponibilă în variabila de mediu SSH_ORIGINAL_COMMAND. Rețineți că această opțiune se aplică executării shell-ului, comenzii sau subsistemului. De asemenea, rețineți că această comandă poate fi înlocuită de o directivă sshd_config(5) ForceCommand.

    Dacă este specificată o comandă și o comandă forțată este încorporată într-un certificat utilizat pentru autentificare, atunci certificatul va fi acceptat numai dacă cele două comenzi sunt identice.

environment="NUME=valoare"
    Specifică faptul că șirul de caractere trebuie adăugat mediului atunci când vă conectați utilizând această cheie. Variabilele de mediu definite în acest mod prevalează asupra altor valori de mediu implicite. Sunt permise opțiuni multiple de acest tip. Procesarea mediului este dezactivată în mod implicit și este controlată prin intermediul opțiunii PermitUserEnvironment.

expiry-time="specificare-timp"
    Specifică un interval de timp după care cheia nu va fi acceptată. Ora poate fi specificată ca o dată AAAALLZZ[Z] sau ca o oră AAAALLZZHHMM[SS][Z]. Datele și orele vor fi interpretate în fusul orar al sistemului, cu excepția cazului în care sunt sufixate de un caracter Z, caz în care vor fi interpretate în fusul orar UTC.

from="listă-modele"
    Specifică faptul că, pe lângă autentificarea prin cheie publică, fie numele canonic al gazdei de la distanță, fie adresa IP a acesteia trebuie să fie prezente în lista de modele separate prin virgule. Consultați MODELE în ssh_config(5) pentru mai multe informații despre modele.

    În plus față de potrivirea de tip caracter joker care poate fi aplicată numelor de gazdă sau adreselor, o secțiune from poate potrivi adresele IP utilizând notația CIDR adresă/masklen.

    Scopul acestei opțiuni este de a spori opțional securitatea: autentificarea cu cheie publică în sine nu are încredere în rețea sau în serverele de nume sau în nimic altceva (în afară de cheie); cu toate acestea, dacă cineva fură cumva cheia, cheia permite unui intrus să se conecteze de oriunde din lume. Această opțiune suplimentară face ca utilizarea unei chei furate să fie mai dificilă (serverele de nume și/sau router-ele ar trebui să fie compromise în plus față de cheie).

no-agent-forwarding
    Interzice redirecționarea agentului de autentificare atunci când această cheie este utilizată pentru autentificare.

no-port-forwarding
    Interzice redirecționarea TCP atunci când această cheie este utilizată pentru autentificare. Orice solicitare de redirecționare a portului de către client va returna o eroare. Aceasta poate fi utilizată, de exemplu, în combinație cu opțiunea command.

no-pty
    Împiedică alocarea tty (o cerere de alocare a unui pty va eșua).

no-user-rc
    Dezactivează executarea ~/.ssh/rc.

no-X11-forwarding
    Interzice redirecționarea X11 atunci când această cheie este utilizată pentru autentificare. Orice solicitare de redirecționare X11 din partea clientului va returna o eroare.

permitlisten="[gazdă:]port"
    Limitează redirecționarea porturilor la distanță cu opțiunea ssh(1) -R astfel încât să poată asculta numai pe gazda (opțional) și portul specificate. Adresele IPv6 pot fi specificate prin includerea adresei între paranteze drepte. Pot fi aplicate mai multe opțiuni permitlisten separate prin virgule. Numele de gazdă pot include caractere joker, astfel cum sunt descrise în secțiunea MODELE din ssh_config(5). O specificație de port * se potrivește oricărui port. Rețineți că opțiunea GatewayPorts poate restricționa și mai mult adresele de ascultare. Rețineți că ssh(1) va trimite un nume de gazdă “localhost” dacă nu a fost specificată o gazdă de ascultare atunci când a fost solicitată redirecționarea și că acest nume este tratat diferit față de adresele explicite de gazdă locală “127.0.0.1” și “::1”.

permitopen="gazdă:port"
    Limitează redirecționarea porturilor locale cu opțiunea ssh(1) -L astfel încât să se poată conecta numai la gazda și portul specificate. Adresele IPv6 pot fi specificate prin includerea adresei între paranteze drepte. Pot fi aplicate mai multe opțiuni permitopen separate prin virgule. Nu se efectuează nicio potrivire de model sau căutare de nume pe numele de gazdă specificate, acestea trebuie să fie nume de gazdă și/sau adrese literale. O specificație de port * se potrivește oricărui port.

port-forwarding
    Activează redirecționarea porturilor dezactivată anterior de opțiunea restrict.

principals="principale"
    Pe o linie cert-authority, specifică principalii „principals” permise pentru autentificarea certificatului sub forma unei liste separate prin virgule. Cel puțin un nume din listă trebuie să apară în lista de principali a certificatului pentru ca certificatul să fie acceptat. Această opțiune este ignorată pentru cheile care nu sunt marcate ca semnatari de certificate de încredere utilizând opțiunea cert-authority.

pty Permite alocarea tty dezactivată anterior de opțiunea restrict.

no-touch-required
    Nu solicită demonstrarea prezenței utilizatorului pentru semnăturile realizate utilizând această cheie. Această opțiune are sens numai pentru algoritmii de autentificare FIDO ecdsa-sk și ed25519-sk.

verify-required
    Solicită ca semnăturile realizate utilizând această cheie să ateste că au verificat utilizatorul, de exemplu prin intermediul unui cod PIN. Această opțiune are sens numai pentru algoritmii de autentificare FIDO ecdsa-sk și ed25519-sk.

restrict
    Activează toate restricțiile, adică dezactivează redirecționarea porturilor, agenților și X11, precum și dezactivarea alocării PTY și a executării ~/.ssh/rc. Dacă în viitor vor fi adăugate capacități de restricționare la fișierele authorized_keys, acestea vor fi incluse în acest set.

tunnel="n"
    Forțează un dispozitiv tun(4) pe server. Fără această opțiune, următorul dispozitiv disponibil va fi utilizat dacă clientul solicită un tunel.

user-rc
    Activează executarea ~/.ssh/rc dezactivată anterior de opțiunea restrict.

X11-forwarding
    Permite redirecționarea X11 dezactivată anterior de opțiunea restrict.

Un exemplu de fișier authorized_keys:

    # Comentariile sunt permise la începutul liniei. Sunt permise liniile goale.
    # Cheie simplă, fără restricții
    ssh-rsa ...
    # Comandă forțată, dezactivează PTY și toate redirecționările
    restrict,command="dump /home" ssh-rsa ...
    # Restricționarea destinațiilor de redirecționare ssh -L
    permitopen="192.0.2.1:80",permitopen="192.0.2.2:25" ssh-rsa ...
    # Restricționarea ascultătorilor ssh -R forwarding
    permitlisten="localhost:8080",permitlisten="[::1]:22000" ssh-rsa ...
    # Configurație pentru redirecționarea prin tunel
    tunnel="0",command="sh /etc/netstart tun0" ssh-rsa ...
    # Anularea restricției pentru a permite alocarea PTY
    restrict,pty,command="nethack" ssh-rsa ...
    # Permite utilizarea cheii FIDO fără a fi necesară interacționarea cu utilizatorul
    no-touch-required sk-ecdsa-sha2-nistp256@openssh.com ...
    # Solicită verificarea utilizatorului (de exemplu, PIN sau biometric)
    # pentru cheia FIDO
    verify-required sk-ecdsa-sha2-nistp256@openssh.com ...
    # Cheie CA de încredere, permite FIDO fără interacționarea cu utilizatorul dacă
    # este solicitat în certificat
    cert-authority,no-touch-required,principals="user_a" ssh-rsa ...

FORMATUL FIȘIERULUI SSH_KNOWN_HOSTS
Fișierele /etc/ssh/ssh_known_hosts și ~/.ssh/known_hosts conțin cheile publice ale gazdelor pentru toate gazdele cunoscute. Fișierul global trebuie pregătit de administrator (opțional), iar fișierul per utilizator este menținut automat: ori de câte ori utilizatorul se conectează la o gazdă necunoscută, cheia acesteia este adăugată la fișierul per utilizator.

Fiecare linie din aceste fișiere conține următoarele câmpuri: marcaj (opțional), nume de gazdă, tip de cheie, cheie codificată în baza 64, comentariu. Câmpurile sunt separate prin spații.

Marcajul este opțional, dar dacă este prezent, atunci trebuie să fie unul dintre “@cert-authority”, pentru a indica faptul că linia conține o cheie de autoritate de certificare (CA), sau “@revoked”, pentru a indica faptul că cheia conținută pe linie este revocată și nu trebuie acceptată niciodată. Pe o linie de cheie trebuie utilizat un singur marcaj.

Numele de gazde este o listă de modele separate prin virgule (‘*’ și ‘’? acționează ca jokeri); fiecare model în parte este comparat cu numele de gazdă. Atunci când sshd autentifică un client, cum ar fi atunci când utilizează HostbasedAuthentication, acesta va fi numele canonic al gazdei clientului. Atunci când ssh(1) autentifică un server, acesta va fi numele de gazdă dat de utilizator, valoarea ssh(1) HostkeyAlias dacă a fost specificată, sau numele de gazdă canonic al serverului dacă a fost utilizată opțiunea ssh(1) CanonicalizeHostname.

Un model poate fi, de asemenea, precedat de ‘’! pentru a indica negarea: dacă numele de gazdă se potrivește cu un model negat, acesta nu este acceptat (de linia respectivă) chiar dacă se potrivește cu un alt model de pe linie. Un nume de gazdă sau o adresă poate fi inclusă opțional între parantezele ‘[’ și ‘’], urmate apoi de ‘’: și un număr de port nestandard.

Alternativ, numele de gazde pot fi stocate într-o format de sumă de control care ascunde numele de gazde și adresele în cazul în care conținutul fișierului ar fi divulgat. Numele de gazde în format de sumă de control încep cu un caracter ‘|’. Un singur nume de gazdă în format de sumă de control poate apărea pe o singură linie și nu poate fi aplicat niciunul dintre operatorii de negare sau de caractere joker de mai sus.

Tipul de cheie și cheia codificată în baza64 sunt preluate direct din cheia gazdei; acestea pot fi obținute, de exemplu, din /etc/ssh/ssh_host_rsa_key.pub. Câmpul de comentariu opțional continuă până la sfârșitul liniei și nu este utilizat.

Liniile care încep cu ‘#’ și liniile goale sunt ignorate ca comentarii.

Atunci când se efectuează autentificarea gazdei, autentificarea este acceptată dacă orice linie corespunzătoare are cheia corespunzătoare; fie una care corespunde exact, fie, dacă serverul a prezentat un certificat pentru autentificare, cheia autorității de certificare care a semnat certificatul. Pentru ca o cheie să fie de încredere ca autoritate de certificare, aceasta trebuie să utilizeze marcajul “@cert-authority” descris mai sus.

Fișierul de gazde cunoscute oferă, de asemenea, posibilitatea de a marca cheile ca fiind revocate, de exemplu atunci când se știe că cheia privată asociată a fost furată. Cheile revocate sunt specificate prin includerea marcajului “@revoked” la începutul liniei cheii și nu sunt niciodată acceptate pentru autentificare sau ca autorități de certificare, ci vor produce un avertisment din partea ssh(1) atunci când sunt întâlnite.

Este permis (dar nu recomandat) să existe mai multe linii sau chei de gazdă diferite pentru aceleași nume. Acest lucru se va întâmpla în mod inevitabil atunci când formele scurte ale numelor de gazdă din domenii diferite sunt introduse în fișier. Este posibil ca fișierele să conțină informații contradictorii; autentificarea este acceptată dacă pot fi găsite informații valide în oricare dintre fișiere.

Rețineți că liniile din aceste fișiere sunt de obicei lungi de sute de caractere și cu siguranță nu doriți să introduceți cheile de gazdă de mână. Mai degrabă, generați-le printr-un script, ssh-keyscan(1) sau luând, de exemplu, /etc/ssh/ssh_host_rsa_key.pub și adăugând numele de gazdă în față. ssh-keygen(1) oferă, de asemenea, o editare automată de bază pentru ~/.ssh/known_hosts, inclusiv eliminarea gazdelor care corespund unui nume de gazdă și convertirea tuturor numelor de gazdă în reprezentările lor de sumă de control.

Un exemplu de fișier ssh_known_hosts:

    # Comentarii permise la începutul liniei
    cvs.example.net,192.0.2.10 ssh-rsa AAAA1234.....=
    # Un nume de gazdă în format sumă de control
    |1|JfKTdBh7rNbXkVAQCRp4OQoPfmI=|USECr3SWf1JUPsms5AqfD5QfxkM= ssh-rsa
    AAAA1234.....=
    # O cheie revocată
    @revoked * ssh-rsa AAAAB5W...
    # O cheie CA, acceptată pentru orice gazdă din *.mydomain.com sau *.mydomain.org
    @cert-authority *.mydomain.org,*.mydomain.com ssh-rsa AAAAB5W...

FIȘIERE
~/.hushlogin
    Acest fișier este utilizat pentru a suprima imprimarea ultimei autentificări și /etc/motd, dacă sunt activate PrintLastLog și, respectiv, PrintMotd. Aceasta nu suprimă afișarea anunțului specificat de Banner.

~/.rhosts
    Acest fișier este utilizat pentru autentificarea bazată pe gazdă (consultați ssh(1) pentru mai multe informații). Pe unele mașini, este posibil ca acest fișier să trebuiască să poată fi citit de toată lumea dacă directorul personal al utilizatorului este pe o partiție NFS, deoarece sshd îl citește ca root. În plus, acest fișier trebuie să fie deținut de utilizator și nu trebuie să aibă permisiuni de scriere pentru nimeni altcineva. Permisiunea recomandată pentru majoritatea mașinilor este de citire/scriere pentru utilizator și neaccesibilă altor persoane.

~/.shosts
    Acest fișier este utilizat exact în același mod ca .rhosts, dar permite autentificarea bazată pe gazdă fără a permite autentificarea cu rlogin/rsh.

~/.ssh/
    Acest director este locația implicită pentru toate informațiile de configurare și autentificare specifice utilizatorului. Nu există nicio cerință generală de a păstra secret întregul conținut al acestui director, dar permisiunile recomandate sunt de citire/scriere/executare pentru utilizator și neaccesibil pentru alții.

~/.ssh/authorized_keys
    Listează cheile publice (ECDSA, Ed25519, RSA) care pot fi utilizate pentru conectarea ca utilizator. Formatul acestui fișier este descris mai sus. Conținutul fișierului nu este extrem de sensibil, dar permisiunile recomandate sunt de citire/scriere pentru utilizator și neaccesibile altor persoane.

    Dacă acest fișier, directorul ~/.ssh sau directorul personal al utilizatorului pot fi scrise de alți utilizatori, fișierul poate fi modificat sau înlocuit de utilizatori neautorizați. În acest caz, sshd nu va permite utilizarea acestuia decât dacă opțiunea StrictModes a fost stabilită la “no”.

~/.ssh/environment
    Acest fișier este citit în mediu la autentificare (dacă există). Acesta poate conține numai linii goale, linii de comentariu (care încep cu ‘#’) și linii de atribuire de forma nume=valoare. Fișierul trebuie să poată fi scris numai de către utilizator; nu trebuie să poată fi citit de nimeni altcineva. Procesarea mediului este dezactivată implicit și este controlată prin intermediul opțiunii PermitUserEnvironment.

~/.ssh/known_hosts
    Conține o listă de chei de gazdă pentru toate gazdele la care utilizatorul s-a conectat și care nu sunt deja în lista de chei de gazdă cunoscute la nivel de sistem. Formatul acestui fișier este descris mai sus. Acest fișier ar trebui să poată fi scris numai de către root/proprietar și poate, dar nu este necesar, să poată fi citit de toată lumea.

~/.ssh/rc
    Conține rutinele de inițializare care trebuie executate înainte ca directorul personal al utilizatorului să devină accesibil. Acest fișier trebuie să poată fi scris numai de către utilizator și nu trebuie să poată fi citit de nimeni altcineva.

/etc/hosts.allow
/etc/hosts.deny
    Controalele de acces care ar trebui aplicate de tcp-wrappers sunt definite aici. Detalii suplimentare sunt descrise în hosts_access(5).

/etc/hosts.equiv
    Acest fișier este pentru autentificarea bazată pe gazdă (a se vedea ssh(1)). Ar trebui să poată fi scris numai de către root.

/etc/ssh/moduli
    Conține grupurile Diffie-Hellman utilizate pentru metoda de schimb de chei „Diffie-Hellman Group Exchange”. Formatul fișierului este descris în moduli(5). Dacă nu se găsesc grupuri utilizabile în acest fișier, atunci se vor utiliza grupurile interne fixe.

/etc/motd
    A se vedea motd(5).

/etc/nologin
    Dacă acest fișier există, sshd refuză să permită oricărei persoane, cu excepția utilizatorului root, să se conecteze. Conținutul fișierului este afișat oricărei persoane care încearcă să se conecteze, iar conexiunile non-root sunt refuzate. Fișierul trebuie să poată fi citit de toată lumea.

/etc/ssh/shosts.equiv
    Acest fișier este utilizat exact în același mod ca hosts.equiv, dar permite autentificarea pe bază de gazdă fără a permite autentificarea cu rlogin/rsh.

/etc/ssh/ssh_host_ecdsa_key
/etc/ssh/ssh_host_ed25519_key
/etc/ssh/ssh_host_rsa_key
    Aceste fișiere conțin părțile private ale cheilor de gazdă. Aceste fișiere ar trebui să fie deținute numai de root, să poată fi citite numai de root și să nu fie accesibile altor persoane. Rețineți că sshd nu pornește dacă aceste fișiere sunt accesibile grupului/ lumii.

/etc/ssh/ssh_host_ecdsa_key.pub
/etc/ssh/ssh_host_ed25519_key.pub
/etc/ssh/ssh_host_rsa_key.pub
    Aceste fișiere conțin părțile publice ale cheilor gazdei. Aceste fișiere ar trebui să poată fi citite de toată lumea, dar să poată fi scrise numai de către root. Conținutul lor trebuie să corespundă părților private respective. Aceste fișiere nu sunt utilizate cu adevărat pentru nimic; ele sunt furnizate pentru confortul utilizatorului, astfel încât conținutul lor să poată fi copiat în fișiere gazdă cunoscute. Aceste fișiere sunt create utilizând ssh-keygen(1).

/etc/ssh/ssh_known_hosts
    Lista la nivel de sistem a cheilor de gazdă cunoscute. Acest fișier trebuie pregătit de administratorul sistemului pentru a conține cheile publice de gazdă ale tuturor echipamentelor din organizație. Formatul acestui fișier este descris mai sus. Acest fișier trebuie să poată fi scris numai de către root/proprietar și trebuie să poată fi citit de toată lumea.

/etc/ssh/sshd_config
    Conține date de configurare pentru sshd. Formatul fișierului și opțiunile de configurare sunt descrise în sshd_config(5).

/etc/ssh/sshrc
    Similar cu ~/.ssh/rc, acesta poate fi utilizat pentru a specifica inițializările de conectare specifice mașinii la nivel global. Acest fișier ar trebui să poată fi scris numai de către root și ar trebui să poată fi citit de toată lumea.

/run/sshd
    Directorul chroot(2) utilizat de sshd în timpul separării privilegiilor în faza de pre-autentificare. Directorul nu trebuie să conțină niciun fișier și trebuie să fie deținut de root și să nu poată fi scris de grup sau de alții.

/run/sshd.pid
    Conține ID-ul procesului sshd care ascultă conexiunile (în cazul în care există mai mulți demoni care rulează concomitent pentru porturi diferite, acesta conține ID-ul procesului celui pornit ultima dată). Conținutul acestui fișier nu este sensibil; el poate fi citit de toată lumea.

CONSULTAȚI ȘI
scp(1), sftp(1), ssh(1), ssh-add(1), ssh-agent(1), ssh-keygen(1), ssh-keyscan(1), chroot(2), hosts_access(5), moduli(5), sshd_config(5), inetd(8), sftp-server(8)

AUTORI
OpenSSH este un derivat al versiunii originale și libere ssh 1.2.12 de Tatu Ylonen. Aaron Campbell, Bob Beck, Markus Friedl, Niels Provos, Theo de Raadt și Dug Song au eliminat multe erori, au adăugat caracteristici noi și au creat OpenSSH. Markus Friedl a contribuit la suportul pentru versiunile 1.5 și 2.0 ale protocolului SSH. Niels Provos și Markus Friedl au contribuit la suportul pentru separarea privilegiilor.

TRADUCERE
Traducerea în limba română a acestui manual a fost făcută de Remus-Gabriel Chelu <remusgabriel.chelu@disroot.org>

Această traducere este documentație gratuită; citiți Licența publică generală GNU Versiunea 3: https://www.gnu.org/licenses/gpl-3.0.html sau o versiune ulterioară cu privire la condiții privind drepturile de autor. NU se asumă NICIO RESPONSABILITATE.

Dacă găsiți erori în traducerea acestui manual, vă rugăm să trimiteți un e-mail la translation-team-ro@lists.sourceforge.net.