Meniu

Ssh (Secure Shell) - program pentru logare la distanta

Ssh (Secure Shell) e un program pentru logare la distanta si pentru executarea comenzilor pe masina de la distanta. A fost facut pentru a inlocui rlogin si rsh si pentru a asigura comunicatiile criptate intre 2 gazde neincrezatoare dintr-o retea nesigura. Prin canalul oferit pot fi forwardate si conexiunile X11 si porturile arbitrare TCP/IP.


Pachetul ssh este compus din server (sshd ), client ( ssh ) si inca cateva utilitare pentru manevrarea cheilor. In genral sshd-ul se porneste din scripturile de initializare ale sistemul si ruleaza tot timpul in background. La fiecare conexiune noua, serverul face fork. Fiecare masina are o cheie RSA: host key (in mod normal pe 1024 de biti). In plus, cand e pornit demonul, el genereaza automat o cheie: server key (pe 768 de biti). Aceasta e regenerata din ora in ora daca a fost folosita si nu e pastrata niciodata pe disc. De fiecare data cand un client vrea o conexiune, demonul ii trimite host key si server key (publica). Clientul compara host key cu cea din baza lui de date, pentru a verifica daca nu s-a schimbat. Apoi clientul genereaza un numar aleator de 256 de biti. Cripteaza acest numar folosind host key si server key si trimite numarul criptat la server. In continuare ambele parti vor folosi numarul acest aleator ca o cheie de criptare. Sunt suportate urmatoarele metode de criptare: IDEA, DES, 3DES, ARCFOUR si TSS. Implicit se foloseste IDEA. Apoi serverul foloseste una din urmatoarele metode pentru a autentifica clientul:

Mai intai, daca masina de pe care se logheaza utilizatorul e scrisa in fisierul /etc/hosts.equiv sau /etc/shosts.equiv de pe masina de la distanta si numele utilizatorului e acelasi pe ambele masini, acesta se logheaza imediat. In plus, daca in directorul home al utilizatorului de pe masina de la distanta exista fisierul .rhosts sau .shosts si contine o linie cu numele masinii client si numele utilizatorului pe acea masina, acesta se logheaza imediat. In mod normal, doar aceasta metoda de autentificare nu e permisa, fiind nesigura.

A doua (de fapt prima) metoda de autentificare e metoda rhost sau hosts.equiv combinata cu autentificarea prin RSA. Adica logarea se poate face doar daca e permisa prin .rhosts, .shosts, /etc/hosts.equiv sau /etc/shosts.equiv si in plus se verifica si cheia gazdei.


Ca o a treia metoda de autentificare, ssh suporta autentificarea RSA. Fiecare utilizator isi creeaza o pereche de chei: publica si privata. Serverul cunoaste cheia publica si doar utilizatorul cunoaste cheia privata. In fisierul $HOME/.ssh/authorized_keys se afla lista cheilor publice care se pot loga. Cand utilizatorul se logheaza, programul ssh spune serverului care pereche de chei va fi folosita pentru autentificare. Serverul verifica daca aceasta cheie se afla printre cele carora li se permite logarea si, in caz afirmativ, trimite utilizatorului (de fapt programului ssh din spatele utilizatorului) o intrebare, un numar aleator, criptat cu cheia publica a utilizatorului. Aceasta intrebare poate fi decriptata doar cu cheia privata potrivita. Utilizatorul decripteaza intrebarea folosind cheia potrivita, dovedind astfel ca e corect. Ssh-ul implementeaza protocolul de autentificare RSA automat. Utilizatorul isi creeaza perechea de chei RSA automat, ruland ssh-keygen. Acesta pune cheia privata in .ssh/identity si cheia publica in .ssh/identity.pub in directorul home al utilizatorului. Utilizatorul trebuie sa copieze indentity.pub in .ssh/authorized_keys in directorul home de pe masina de la distanta (fisierul authorized_keys corespunde cu fisierul conventional .rhosts, avand o cheie pe o linie, chiar daca liniile sunt foarte lungi). Apoi utilizatorul de poate loga fara parola. Autentificarea prin RSA e mult mai sigura decat cea prin rhosts. Cel mai convenabil mod de a folosi autentificarea prin RSA e au agent de autentificare, ssh-agent.
Ca o a 4-a metoda, ssh-ul suporta autentificarea printr-un server TIS. Ideea e ca ssh-ul cere serverului de autentificare TIS sa autentifice utilizatorul. Uneori, numele utilizatorilor din baza de date TIS nu poate sa fie acelasi cu cel de pe masina locala. Aceasta se intampla cand utilizatorul se autentifica cu un smartcard sau Digipass. In acest caz, numele utilizatorului din baza de date e cunoscut ca numarul serial a device-ului de autentificare. Fisierul /etc/sshd_tis.map contine maparea intre utilizatorii locali si numele corespunzator lor din baza de date TIS. Daca fisierul nu exista sau utilizatorul nu e gasit, numele corespunzator din baza de date TIS e presupus acelasi.

Daca o alta metoda de autentificare esueaza, ssh-ul cere utilizatorului o parola. Parola e trimisa gazdei de la distanta pentru verificare, criptata. Cand identitatea utilizatorului a fost acceptata de server, acesta fie executa comanda data, fie se logheaza si transmite utilizatorului un shell normal pe masina de la distanta. Toate comunicatiile sunt criptate automat.

Dupa autentificare:
Procesul de login :Cand se logheaza cu succes un utilizator, sshd-ul face urmatoarele:

Daca login-ul e pe un tty si nu a fost specificata nici o comanda, afiseaza ultima logarea si /etc/motd
Daca login-ul e pe un tty, inregistreaza momentul logarii
Verifica /etc/nologin. Daca exista, ii afiseaza continutul si iese
Schimba sa ruleze cu privilegii normale de utilizator
Seteaza variabilele de mediu de baza
Citeste /etc/environment daca exista
Citeste $HOME/.ssh/environment daca exista
Trece in directorul de home al utilizatorului
Daca exista $HOME/.ssh/rc, il ruleaza; altfel, daca exista /etc/sshrc il ruleaza; daca nici acesta nu exista, ruleaza xauth.
Ruleaza shell-ul utlizatorului sau comanda

Daca a fost alocat un pseudo-terminal (sesiune normala de login), utilizatorul de poate deconecta cu "~.", sau poate suspenda ssh-ul cu "~^Z". Toate conexiunile forwardate pot fi afisate "~#" si, daca sesiunea se blocheaza asteptand sa se inchida conexiunile forwardate X11 sau TCP/IP, pot fi puse in background cu "~&" (nu trebuie folosit in timp ce shellul utilizatorului e activ). Toate comenzile care se pot da se afiseaza cu "~?". Un caracter "~" poate fi trimis "~~" (sau in clar, daca dupa ~ urmeaza altul decat caracterele speciale de mai sus). Caracterele speciale trebuie sa fie intotdeauna la inceputul liniei, pentru a fi speciale. Ele pot fi schimbate in fisierele de configurare sau de la linia de comanda. Daca nu a fost alocat un pseudoterminal, sesiunea e transparenta si poate fi folosita pentru transferuri de date in binar.
Sesiunea se termina cand comanda sau shellul de pe masina la distanta exista si toate conexiunile TCP/IP sau X11 au fost inchise. Codul de exit al programului de la distanta e acelasi cu codul de retur al ssh-ului.

Forwardarea X
Daca utilizatorul foloseste X11 (e setata variabila de mediu DISPLAY), conexiunea cu display-ul X11 e forwardata automat la distanta in asa fel incat orice program X11 pornit de la shell (sau prin comanda) e trecut prin canalul criptat si conexiunea cu adevaratul server X va fi facuta de pe masina locala. Utilizatorul nu trebuie sa seteze manual variabila DISPLAY. Forwardarea conexiunilor X11 poate fi configurata din linia de comanda sau din fisierele de configurare. Valoarea variabilei de mediu DISPLAY setata de ssh va trimite catre server, dar cu un display >0. Acest lucru e normal, deoarece ssh-ul creeaza un server X proxy pe server pentru a forwarda conexiunile prin canalul criptat. Ssh-ul va seta automat Xauthority pe masina server. In acest scop, va genera aleator un "cookie" de autentificare, pastrat in Xauthority pe server si va verifica toate conexiunile forwardate sa aiba acest "cookie", inlocuindu-l cu adevaratul "cookie" cand e deschisa conexiunea. Adevaratul "cookie" de autentificare nu e trimis niciodata pe masina server (si nici un "cookie" nu e trimis in clar). Daca utilizatorul foloseste un agent de autentificare, conexiunea cu agentul e forwardata automat la distanta, in afara de cazul dezactivarii din linia de comanda sau din fisierele de configurare.

Forwardarea TCP/IP
Forwardarea unei conexiuni TCP/IP prin canalul sigur poate fi specificata fie din linia de comanda, fie din fisierele de configurare. O aplicatie posibila a forwardarii TCP/IP e trecerea de un firewall in vederea citirii postei.

Ssh-ul mentine si verifica automat o baza de date cu identificarile bazate pe RSA ale tuturor masinilor pe care s-a facut logarea. Baza de date e tinuta in .ssh/known_hosts. In plus si fisierul /etc/ssh_known_hosts e verificat automat. Orice noua gazda e automat adaugata la fisierul utilizatorului. Daca o identificare a vre-unei gazde se schimba, ssh-ul trimite un avertisment si dezactiveaza autentificarea parolei pentru a preveni un atentat la parola utilizatorului. Optiunea StrictHostKey-Checking poate fi folosita pentru a preveni logarile pe masini ale caror chei nu sunt cunoscute sau au fost schimbate.

Utilitare pentru manuirea cheilor


SSH-KEYGEN
Genereaza chei pentru ssh. In mod normal orice utilizator care foloseste ssh cu autentificare RSA ruleaza aceasta comanda pentru a crea fisierul $HOME/.ssh/identity. In plus, administratorul poate folosi comanda pentru a genera host key. Programul genereaza o cheie si cere numele fisierul in care sa fie salvata cheia privata. Cheia publica e salvata intr-un fisier cu acelasi nume si cu extensia .pub. E ceruta si o passphrase, care poate sa fie vida. Passphrase bune au lungimea 10-30 caractere. Passphrase poate fi schimbata cu optiunea -d. Odata pierduta, nu mai poate fi recuperata. In fisier mai exista un comentariu, care poate fi schimbat cu optiunea -c. Algoritmul de criptare a cheilor folosind passphrase e definit in ssh.h. Cu optiunea -u, cheile criptate cu alt algoritm pot fi recriptate cu algoritmul curent. Optiuni -b bits - specifica numarul de biti din cheie (minimum 512). Implicit 1024. -c - schimba comentariul din fisierele cu cheia publica si cea privata -f - specifica numele fisierului in care va fi pastrata cheia -P - cere schimbarea passphrase fisierului cu cheia privata -u - schimba alg. de criptare -C - da noul comentariu -N - da noua passphrase Fisiere -$HOME/.ssh/random_seed -$HOME/.ssh/identity -$HOME/.ssh/identity.pub

SSH-AGENT
Ssh-agent e un program care pastreaza cheia privata de autentificare. Ssh-agentul e pornit la inceputul unei sesiuni X sau rlogin si toate celelalte ferestre sau programe sunt pornite ca si procese copii ale programului ssh-agent. Programul astfel pornit mosteneste o conexiune cu agentul, iar acesta e automat folosit pentru autentificarea RSA. Daca e pornit fara argumente, el va face fork si va porni in background. Agentul trimite comenzi care pot fi evaluate in shelluri ca sh sau csh si seteaza variabilele de mediu SSH_SUTH_SOCK si SSH_AGENT_PID. Aceasta din urma poate fi folosita pentru a omori agentul. Fara optiuni, ssh-agent detecteaza din variabila de mediu $SHELL ce shell e folosit. Optiunea -e forteaza folosirea csh, iar -s a sh. Optiunea -k e folosita pentru a omori automat agentul. Initial agentul nu are nici o cheie privata. Cheile sunt adaugate folosind ssh-add. Agentul ruleaza pe calculatorul local al utilizatorului. Datele de autentificare nu trebuie tinute pe alte masini, iar passphrase nu iese niciodata prin retea. Conexiunea cu agentul e forwardata prin ssh loginului de la distanta, iar utilizatorul poate folosi astfel privilegiile date de identitati in retea intr-un mod sigur. Programul copil mosteneste o conexiune cu agentul. Se creeaza un unix-domain socket (/tmp/ssh-$USER/agent_socket_pid). Numele acestui socket e tinut in SSH_AUTH_SOCK. Socketul e accesibil doar utilizatorului curent. Daca e data o comanda ca argument ssh-agentului, acesta iese automat cand comanda se termina. Aceasta se executa chiar daca agentul nu porneste.
SSH-ADD Ssh-add adauga identitati unui agent de autentificare, sshagent. Cand se ruleaza fara argumente, adauga fisierul $HOME/.ssh/identity. Daca vre-un fisier cere passphrase, ssh-add intreaba de aceasta. Cu optiunea -p passphrase se citeste de la stdin, altfel, daca utilizatorul foloseste X11, passphrase e ceruta cu ajutorul unui mic program; altfel e citita direct de la tty-ul utilizatorului. E necesar sa ruleze agentul de autentificare si trebuie sa fie un stramos al procesului curent. Optiuni -p - citeste passphrase de la stdin -l - afiseaza toate identitatile agentului -d - in loc sa adauge, sterge identitatea agentului -D - sterge toate identitatile

Optiuni, fisiere de configurare, etc:

SSH:

Optiuni :


Fisierele de configurare

Ssh-ul ia configurarile necesare din urmatoarele surse (in aceasta ordine):

-a dezactiveaza forwardarea conexiunilor cu agentul de autentificare
-c idea|des|3des|blowfish|arcfour|none selecteaza modul de criptare a sesiunii
-e ch|^ch|none seteaza caracterul escape pentru sesiunile cu pty (implicit ~)
-f cere ssh-ului sa treaca in background dupa ce autentificarea a fost facuta si conexiunile stabilite
-i identity_file seteaza fisierul din care va fi luata identitatea pentru autentificarea RSA (implicit .ssh/identity)
-k dezactiveaza forwardarea tichetelor kerberos -l login_name specifica numele sub care se va face logarea pe masina la distanta
-n redirecteaza stdin la /dev/null (previne citirea de la stdin); e foslosita cand ssh-ul ruleaza in background
-o 'option' folosita pentru a specifica optiunea in formatul folosit in fisierele de configurare
-p port specifica portul la care sa se faca conexiunea pe masina la distanta -q suprima warningurile si mesajele
-p foloseste portul "neprivilegiat"; nu se poate folosi rhosts sau rsahosts
-t forteaza alocarea pseudotty
-v modul verbose
-V afiseaza doar numarul versiunii si iese
-g permite gazdei de la distanta conectarea la portul local forwardand porturile
-x dezactiveaza forwardarea X11
-C cere comprimarea tuturor datelor
-L port:host:hostport portul dat de pe masina locala va fi forwardat pe masina host in portul port
-R port:host:hostport portul dat de pe masina de la distanta va fi forwardat pe masina host la portul port

de la linia de comanda,
din fisierele de configurare ale utilizatorului ($HOME/.ssh/config)
din fisierul de configurare al sistemului (/etc/ssh_config).

Pentru fiecare parametru va fi folosita prima valoare obtinuta. Fisierele de configurare contin sectiuni delimitate de "Host", sectiuni valabile doar pentru masinile din categoriile specificate. Numele hostului e dat prin linia de comanda. Deoarece sunt folosite primele valori intalnite pentru fiecare parametru folosit, declaratiile specifice fiecarui host trebuie facute la inceputul fisierului iar cele implicite la sfarsit.
Fisierele de configurare au urmatorul format:
Liniile goale sau incepand cu '#' sunt comentarii.
Altfel, o linie e formata din "keyword arguments" sau "keyword=arguments".
Posibilele cuvinte cheie si sensul lor e specificat in continuare (fisierele de configurare sunt case-sensitive, cuvintele cheie sunt case-insensitive):

Host restrictioneaza declaratiile care urmeaza (pana la urmatorul "Host") doar la acele masini care indeplinesc una din conditiile de dupa cuvantul Host. Se pot folosi "*" sau "?". Un singur "*" inseamna orice masina. Host e argumentul dat in linia de comanda.
BatchMode daca e setat "yes", nu va mai fi ceruta parola/passphrase. Optiunea e folositoare in scripturi.
Cipher specifica modul de criptare. Sunt suportate idea, des, 3des, blowfish, arcfour si none. Implicit e "idea" (sau "3des" daca "idea" nu e suportata de ambele masini). Optiunea "none" e pusa doar pentru depanare.
ClearAllForwardings sterge toate forwardarile dupa ce a citit fisierele de configurare si a parsat linia de comanda. E folositor pentru a dezactiva forwardarile in fisierul de configurare cand se doreste o a doua conexiune cu o masina care are forwardare in fisierele de configurare. Scp o seteaza implicit pe on.
Compression specifica daca sa se foloseasca sau nu compresia.
CompressionLevel specifica nivelul compresiei daca aceasta e activata. Argumentul trebuie sa fie un intreg de la 1(repede) la 9 (incet). Valoarea implicita e 6. Sensul valorilor e acelasi ca la GNU GZIP.
ConnectionAttempts specifica numarul de incercari (una pe secunda) facute inainte de a esua. Argumentul trebuie sa fie intreg.
EscapeChar seteaza caracterul de escape (implicit ~). Argumentul trebuie sa fie un singur caracter, "^" urmat de o litera sau "none" pentru a dezactiva complet caracterul de escape.
FallBackToRsh specifica daca in caz de esec la ssh sa fie folosit in loc rsh (dupa un warning referitor la insecuritatea conexiunii). Argumentul e "yes" sau "no".
ForwardAgent specifica daca conexiunea cu agentul de autentificare (daca exista) sa fie forwardata pe masina de la distanta. Argumentul trebuie sa fie "yes" sau "no".
ForwardX11 specifica daca conexiunile X11 vor fi redirectate automat prin canalul sigur. Argumentul trebuie sa fie "yes" sau "no".
GatewayPorts specifica ca si gazda de la distanta se poate conecta la porturile locale forwardate. Argumentul e "yes" sau "no"
GlobalKnownHostsFile specifica un fisier care va fi folosit in loc de /etc/ssh_known_hosts.
HostName specifica numele adevarat al masinii pe care se va face logarea. Optiunea e buna pentru a putea folosi porecle sau abrevieri pentru masini. Implicit e numele dat de la linia de comanda.
IdentityFile specifica fisierul din care e citita identitatea pentru autentificarea RSA (implicit .ssh/identity). E posibil sa existe mai multe fisiere cu identitati.
KeepAlive specifica daca sistemul sa trimita mesaje keepalive la cealalta masina. Daca sunt trimise, va fi anuntata caderea conexiunii sau craparea uneia din masini.
KerberosAuthentication specifica daca va fi folosita autentificarea Kerberos.
KerberosTgtPassing specifica daca Kerberos V5 TGT va fi forwardat catre server.
LocalForward specifica daca un port TCP/IPP de pe masina locala va fi forwardat prin canalul sigur pe masina de la distanta pe portul host:port. Primul argument va fi numarul portului, al doilea host:port.
NumberOfPasswordPrompts specifica numarul de parole care poate fi dat inainte sa se renunte la conexiune. Implicit e 1.
PasswordAuthentication specifica daca sa fie folosita autentificarea cu parola.
PasswordPrompHost specifica daca sa se includa numele masinii de la distanta in promptul care cere parola. Argumentul e "yes" sau "no".
PasswordPromptLogin specifica daca sa se includa numele de login de pe masina de la distanta in promptul de parola. Argumentul e "yes" sau "no".
Port specifica numarul portului la care se va face conexiunea pe masina de la distanta. Implicit e 22.
ProxyCommand specifica ce comanda va fi folosita pentru conectarea la server. In comanda %h va fi inlocuit cu numele masinii unde se face conexiunea, iar %p cu portul.
RemoteForward specifica daca un port TCP/IP de pe masina de la distanta sa fie forwardat prin canalul sigur pe masina locala, in portul host:port. Primul argument e numele portului, al doilea host:port.
RhostsAuthentication specifica daca se incearca autentificarea cu rhosts. Aceasta declaratie afecteaza doar partea clientului. Argumentul e "yes" sau "no".
RhostsRSAAuthentication specifica daca se incearca autentificarea cu rhosts combinata cu RSA. Argumentul e "yes" sau "no".
RSAAuthentication specifica daca se incearca autentificarea cu RSA. Argumentul e "yes" sau "no". Autentificarea prin RSA se va face doar daca exista fisierul identity.
StrictHostKeyChecking daca e setat cu "yes", ssh-ul nu va adauga hosturi noi in $HOME/.ssh/known_hosts si va refuza sa se conecteze la hosturi care si-au schimbat cheia. Argumentul este "yes", "no" sau "ask".
TISAuthentication specifica daca sa se incerce autentificarea cu TIS.
UsePrivilegedPort specifica daca sa se foloseasca un port privilegiat in cealalta parte cand se face conexiunea. Implicit e "yes" daca se folosesc autentificarile prin rhosts sau rsarhosts.
User specifica numele utilizatorului care se logheaza. E folositor daca utilizatorul are nume diferite pe diferite masini.
UserKnownHostsFile specifica un nume de fisier care va fi folosit in loc de $HOME/.ssh/known_hosts.
UserRsh spune sa fie folosit rlogin/rsh pentru aceasta gazda. E posibil ca gazda sa nu suporte protocolul ssh. In acest caz, ssh-ul va executa imedit rsh. Daca aceasta optiune e specificata, orice alta optiune (cu exceptia Host-Name) va fi ignorata. Argumentul e "yes" sau "no".
XAuhLocation specifica calea pentru programul xauh.


Variabile de mediu:

-DISPLAY - indica unde e serverul de X. Are valoarea hostname:n, unde hostname e masina unde ruleaza shellul, iar n e n intreg >=1.
-HOME - directorul de home al utilizatorului
-LOGNAME - sinonim cu USER
-MAIL - mailbox-ul utilizatorului
-PATH - calea implicita, specificata la compilarea ssh-ului, /etc/environment sau /etc/default/login.
-SSH_AUTH_SOCK - daca exista, indica calea unui unixdomainsocket folosit pentru a comunica cu agentul
-SSH_CLIENT
-SSH_ORIGINAL_COMMAND - va fi linia de comanda implicita daca se forteaza rularea unei comenzi
-SSH_TTY - pointeaza catre numele tty-ului asociat cu shell-ul sau comanda curenta. Daca sesiunea nu are tty, variabila nu e setata
-TZ - indica timezone, daca a fost setat cand a fost pornit demonul
-USER - numele utilizatorului care se logheaza


Fisiere

-$HOME/.ssh/known_hosts - cheile tuturor masinilor de pe care s-a facut vreo logare
-$HOME/.ssh/random_seed - creat cand a fost pornit pentru prima oara programul si acualizat automat
-$HOME/.ssh/identity - contine identitatea pentru autentificarea RSA. Daca la generarea cheii e specificata o "passphrase", aceasta va fi folosita la criptarea acestui fisier, folosind IDEA
-$HOME/.ssh/identity.pub - contine cheia publica pentru autentificare. Continutul acestui fisier trebuie adaugat in $HOME/.ssh/authorized_keys pe toate masinile unde doriti sa va logati cu autentificare RSA
-$HOME/.ssh/config - fisierul de configurare al utilizatorului
-$HOME/.ssh/authorized_keys - contine cheile RSA care pot fi folosite pentru logarea sub numele utilizatorului respectiv
-/etc/ssh_known_hosts - contine numele cheilor masinilor cunoscute. Acest fisier e pregatit de administrator
-/etc/ssh_config - fisierul de configurare al sistemului
-$HOME/.rhosts - e folosit pentru autentificarea .rhosts
-$HOME/.shosts - la fel ca si .rhosts. Scopul acestui fisier e de a permite folosirea autentificarii rhosts cu ssh fara a permite logarea cu rlogin sau rsh -/etc/hosts.equiv - folosit la autenificarea .rhosts -/etc/sshrc - comenzile din acest fisier vor fi executate de catre ssh chiar dupa logare, inainte sa se porneasca un shell
-$HOME/.ssh/rc - ca la /etc/sshrc

SSHD

Optiuni

-b bits -specifica numarul de biti din server key
-d - modul depanare. Serverul trimite mesaje de debug catre sistem si -nu trece in background. Nu face fork si va procesa o singura -conexiune
-f configuration-file -numele fis. de configurare (implicit /etc/sshd_config)
-g login grace time -specifica timpul in care se poate face autentificarea (implicit 600 s)
-h host key file -fisierul de unde e citit host key (implicit /etc/ssh_host_key)
-i -sshd-ul va fi rulat din inetd (in mod normal nu ruleaza din inetd, deoarece generarea server key ia cateva secunde)
-k key gen time -specifica cat de des sa fie generat server key (implicit 3660s)
-p port specifica portul la care asculta serverul (implicit 22)
-q -nu se trimite nimic catre system log (in mod normal se inregistreaza inceputul, autentificarea si terminarea fiecarei conexiuni)

Fisierul de configurare
Sshd-ul citeste datele de configurare din /etc/sshd_config. In acest fisier exista urmatoarele cuvinte cheie:

AllowGroups - urmat de unul sau mai multe grupuri, separate prin spatiu. Daca e specificata optiunea, se pot loga doar utilizatorii din grupurile respective. Se pot folosi "*" si "?".
AllowHosts - urmat de unul sau mai multe nume de masini, separate prin spatiu. Ca la AllowGroups. Daca nu se stie numele masinii, se foloseste IP-ul.
AccountExpireWarningDays - specifica dupa cat timp sa inceapa sa apara avertismente: contul va expira. Valoarea reprezinta numarul de zile inainte de expirare. Implicit e 14.
AllowSHosts - urmat de unul sau mai multe nume de masini, separate prin spatiu. Daca e specificata optiunea, se pot loga cu .shosts (si .rhosts si /etc/hosts.equiv) doar utilizatorii de pe misinile specificate.
AllowTcpForwarding
AllowUsers - urmat de user@host
CheckMail - specifica daca sshd-ul sa afiseze un mesaj de fiecare data cand utilizatorul se logheaza, mesaj referitor la mail
DenyGroups
DenyHosts
DenySHosts
DenyUsers
FascistLogging
ForcedEmptyPasswdChange - specifica daca e fortata schimbarea parolei daca aceasta e vida.
ForcedPasswdChange - specifica daca e fortata schimbarea parolei daca aceasta expira HostKey - fisierul cu host key (implicit /etc/ssh_host_key IdleTimeout time - specifica timpul mediu de timeout (daca nu s-a primit nici un semn de la procesul copil de atata timp, conexiunea se inchide)
IgnoreRhosts - specifica sa nu poata fi folosita autentificarea cu rhosts sau shosts
IgnoreRootRhosts KeepAlive - specifica daca sistemul trimite mesaje catre client. Daca e setata optiunea, va fi anuntata "craparea" uneia din masini si conexiunea se va inchide. De asemenea, daca reteaua nu merge un moment, conexiunea se inchide.
KerberosAuthentication - specifica daca e permisa autentificarea Kerberos V5. Daca PasswordAuthentication e "yes", parola va fi validata cu Kerberos KDC sau DCE Security Server.
KerberosOrLocalPasswd - daca e setata si autentificarea parolei cu Kerberos esueaza, parola va fi validata prin orice alt mecanism, cum ar fi /etc/passwd SecurID
KerberosTgtPassing - specifica daca sa fie forwardat catre un server Kerberos V5 TGT
KeyRegenerationInterval - specifica dupa cat timp sa fie regenerata cheia serverului
ListenAddress
LoginGraceTime - daca utilizatorul nu s-a logat, dupa acest timp serverul se deconecteaza. Implicit e 600s
PasswordAuthentication
PasswordExpireWarningsDays
PermitEmptyPasswords
PermitRootLogin - poate fi "yes", "nopwd" sau "no". "Nopwd" inseamna ca nu e permisa autentificarea cu parola
PidFile - fisierul care contine ID-ul procesului demonului sshd (implicit /etc/ssh.pid sau /var/run/sshd.pid)
Port PrintMotd - specifica daca sshd-ul sa afiseze /etc/motd la logarea unui utilizator
QuietMode
RandomSeed - implicit /etc/sshd_random_seed
RhostsAuthentication - specifica daca e suficienta autentificarea cu rhosts sau /etc/hosts.equiv
RhostsRSAAuthentication
RSAAuthentication ServerKeyBits - defineste numarul de biti din server key (implicit 768)
SilentDeny StrictModes - specifica daca ssh-ul sa verifice permisiunile si proprietarul directorului home si al fisierului rhosts inainte de a aceepta logarea
SyslogFacility - are valorile posibile DAEMON, USER, AUTH, LOCAL0, LOCAL1, LOCAL2, LOCAL4, LOCAL5, LOCAL6, LOCAL7
TISAuthentication Umask - seteaza masca implicita pentru sshd si procesele copil
X11Forwarding
X11DisplayOffset - specifica primul numar de display disponibil pentru forwardarea X11. Previne ciocnirea cu serverele reale
XAuthLocation - calea catre xauth


Formatul fisierului authorized_keys

Fisierul contine cheile RSA permise pentru autentificarea RSA. Fiecare linie contine urmatoarele campuri, separate prin spatii: optiuni, biti, exponent, modul, comentarii. Primul camp e optional; prezenta lui se determina daca linia incepe cu un numar sau nu(daca da, nu exista campul respectiv).
Sunt suportate urmatoarele optiuni:

from="pattern-list" - specifica faptul ca, in plus fata de autentificarea RSA, numele gazdei trebuie sa fie prezent in lista "pattern-list"
command="command" - specifica comanda care va fi executata cand cheia respectiva e folosita environment="NAME=value"
idle-timeout=time
no-port-forwarding - nu permite forwardarea porturilor TCP/IP
no-X11-forwarding
no-agent-forwarding
no-pty

Fisiere

/etc/sshd_config
/etc/ssh_host_key - contine partea privata a host key. Fisierul e creat automat cu make-install, dar poate fi creat si de mana cu ssh-keygen
/etc/ssh_host_key.pub - contine partea publica a host key
/etc/ssh_random_seed
/var/run/ssh.pid
$HOME/.ssh/authorized_keys
/etc/ssh_known_hosts si $HOME/.ssh/known_hosts
/etc/nologin - daca fisierul exista, sshd-ul refuza logarea oricarui utilizator, cu exceptia root
$HOME/.rhosts - utilizatorii cu hosturile lor specificati aici au dreptul sa intre fara parola. Ssh-ul difera de rlogin si rshd prin faptul ca cere autentificare RSA
$HOME/.shosts
/etc/hosts.equiv - e folosit la autentificarea .rhosts. In forma cea mai simpla, fisierul contine nume de masini, cate una pe linie. Utilizatorii de pe aceste masini se pot loga fara parola, daca au acelasi nume pe ambele masini. Fisierul poate contine si nume de utilizatori; acesti utilizatori se pot loga sub orice nume, cu exceptia root. Nu se recomanda specificarea numelor de utilizatori (se pot loga ca adm, daemon, etc)
/etc/shosts.equiv
/etc/environment - daca exista, fisierul acesta e citit la logare
/$HOME/.ssh/environment
$HOME/.ssh/rc
/etc/ssrc
/etc/sshd_tis.map - stabileste o legatura intre un nume de utilizator local si numele corespunzator lui intr-o baza de date TIS

John Doe

Articole publicate de la contributori ce nu detin un cont pe gnulinux.ro. Continutul este verificat sumar, iar raspunderea apartine contributorilor.
  • | 340 articole

Nici un comentariu inca. Fii primul!
  • powered by Verysign