Komanda Linux / Unix: sshd

emër

sshd - Daemon SSH OpenSSH

përmbledhje

[- f key_gen_time ] [- opcion o ] [- p port ] [- u len ] [- hajtim ] [-

Përshkrim

sshd (Daemon SSH) është programi daemon për ssh (1). Së bashku këto programe zëvendësojnë rlogin dhe rsh , dhe sigurojnë komunikime të sigurta të koduara midis dy hostëve të pabotuar mbi një rrjet të pasigurt. Programet synojnë të jenë aq të lehta për t'u instaluar dhe për të përdorur sa më shumë që të jetë e mundur.

sshd është daemon që dëgjon lidhjet nga klientët. Zakonisht fillon me nisjen nga / etc / rc Ajo kërkon një demo të re për çdo lidhje hyrëse. Demonet e forta merren me shkëmbimin kryesor, encryption, authentication, ekzekutimin e komandës, dhe shkëmbimin e të dhënave. Ky implementim i sshd mbështet të dy versionet e protokollit SSH 1 dhe 2 në të njëjtën kohë.

SSH Protokolli Version 1

Çdo host ka një çelës RSA specifike të host-it (normalisht 1024 bit) që përdoret për të identifikuar hostin. Përveç kësaj, kur fillon daemoni, gjeneron një çelës RSA të serverit (normalisht 768 bit). Ky çelës normalisht rigjenerohet çdo orë nëse ajo është përdorur dhe nuk ruhet kurrë në disk.

Sa herë që një klient lidh demonin, ai përgjigjet me çelësat e saj të publikut dhe çelësat e serverit. Klienti krahason çelësin e pritësit RSA me bazën e vet të të dhënave për të verifikuar që nuk ka ndryshuar. Klienti pastaj gjeneron një numër të rastësishëm 256-bit. Ai kodon këtë numër të rastësishëm duke përdorur si çelësin e pritësit dhe çelësin e serverit dhe dërgon numrin e koduar në server. Të dy palët pastaj e përdorin këtë numër të rastit si një çelës sesioni i cili përdoret për të koduar të gjitha komunikimet e mëtejshme në seancë. Pjesa tjetër e seancës është e koduar duke përdorur një shifër konvencionale, aktualisht Blowfish ose 3DES, me 3DES që përdoret sipas parazgjedhjes. Klienti zgjedh algoritmin e enkriptimit për t'u përdorur nga ato të ofruara nga serveri.

Tjetra, serveri dhe klienti hyjnë në një dialog të vërtetimit. Klienti përpiqet të autentifikojë veten duke përdorur autentifikimin e .rhosts, .authenticationin e rrjetit të kombinuar me autentifikimin e hostit të RSA, autentikimin e sfidave të përgjigjes RSA ose autentikimin me fjalëkalim .

Vertetimi i Rhosts normalisht është i çaktivizuar sepse është krejtësisht i pasigurt, por mund të aktivizohet në skedarin e konfigurimit të serverit nëse dëshirohet. Siguria e sistemit nuk është përmirësuar nëse nuk rshind rlogind dhe rexecd janë të paaftë (duke inaktivuar plotësisht rlogin dhe rsh në makinë).

SSH Protokolli Version 2

Versioni 2 punon në mënyrë të ngjashme: Çdo host ka një çelës specifik për host (RSA ose DSA) që përdoret për të identifikuar hostin. Megjithatë, kur fillon daemoni, nuk gjeneron një çelës server. Siguria e përparme sigurohet nëpërmjet një marrëveshje kyçe të Diffie-Hellman. Kjo marrëveshje thelbësore rezulton në një çelës seksion të përbashkët.

Pjesa tjetër e sesionit është e koduar duke përdorur një shifër simetrike, aktualisht 128 bit AES, Blowfish, 3DES, CAST128, Arcfour, 192 bit AES ose 256 bit AES. Klienti zgjedh algoritmin e enkriptimit për t'u përdorur nga ato të ofruara nga serveri. Përveç kësaj, integriteti i sesionit sigurohet nëpërmjet një kodit të legalizimit të mesazhit kriptografik (hmac-sha1 ose hmac-md5).

Protokolli i versionit 2 ofron një metodë të legalizimit të përdoruesit të bazuar në publik (PubkeyAuthentication) ose klienti i klientit (HostbasedAuthentication), autentikimin konvencional të fjalëkalimit dhe metodat e bazuara në përgjigje të përgjigjes.

Ekzekutimi i komandës dhe përcjellja e të dhënave

Nëse klienti me sukses vërteton vetë, futet një dialog për përgatitjen e sesionit. Në këtë kohë klienti mund të kërkojë gjëra të tilla si alokimi i një pseudo-tty, përcjellja e lidhjeve X11, përcjellja e lidhjeve TCP / IP ose përcjellja e lidhjes së agjentit të vërtetimit mbi kanalin e sigurt.

Së fundi, klienti ose kërkon një shell ose ekzekutimin e një komande. Palët pastaj hyjnë në regjimin e seancës. Në këtë mënyrë, secila palë mund të dërgojë të dhëna në çdo kohë dhe të dhënat e tilla përcillen në / nga shell ose komanda në anën e serverit dhe në terminalin e përdoruesit në anën e klientit.

Kur programi i përdoruesit përfundon dhe të gjitha forwarded X11 dhe lidhjet e tjera janë mbyllur, serveri dërgon statusin e daljes komandës tek klienti dhe të dyja palët dalin.

sshd mund të konfigurohet duke përdorur opsione të komandës së linjës ose një skedar konfigurimi. Opsionet e komandës së linjës i tejkalojnë vlerat e specifikuara në skedarin e konfigurimit.

sshd rereads file konfigurimin e saj kur ajo merr një sinjal hangup, SIGHUP duke ekzekutuar veten me emrin që ajo ishte filluar si, dmth, / usr / sbin / sshd

Opsionet janë si më poshtë:

-b bit

Specifikon numrin e biteve në versionin e protokollit kalimtar 1 çelësin e serverit (default 768).

-d

Modaliteti i debug. Serveri i dërgon të dhënat e debugut në regjistrin e sistemit dhe nuk e vendos veten në sfond. Serveri gjithashtu nuk do të punojë dhe do të përpunojë vetëm një lidhje. Ky opsion është i destinuar vetëm për debugging për serverin. Opsionet e shumëfishta -d rrisin nivelin e debugging. Maksimumi është 3.

-e

Kur kjo opsion është specifikuar, sshd do të dërgojë daljen në gabimin standard në vend të regjistrit të sistemit.

-f configuration_file

Specifikon emrin e skedarit të konfigurimit. Default është / etc / ssh / sshd_config sshd refuzon të fillojë nëse nuk ka skedar të konfigurimit.

-g login_grace_time

Jep kohë të hirit që klientët të vërtetojnë veten (default 120 sekonda). Nëse klienti nuk arrin ta autentifikojë përdoruesin brenda kësaj shumë sekonda, serveri shkëputet dhe del jashtë. Një vlerë zero tregon asnjë limit.

-h host_key_file

Specifikon një skedar nga i cili lexohet një çelës pritës. Ky opsion duhet të jepet nëse sshd nuk funksionon si rrënjë (pasi dosjet kryesore të tastit të strehuesit normalisht nuk mund të lexohen nga askush, por rrënja). Parazgjedhja është / etc / ssh / ssh_host_key për versionin e protokollit 1 dhe / etc / ssh / ssh_host_rsa_key dhe / etc / ssh / ssh_host_dsa_key për versionin e protokollit 2. Është e mundur që të ekzistojnë skedarë të shumëfishtë të tasteve të pranishme për versionet e ndryshme të protokollit dhe tastin algoritme.

-i

Specifikon se sshd është duke u drejtuar nga inetd. sshd normalisht nuk drejtohet nga inetd sepse ajo ka nevojë për të gjeneruar çelësin e serverit para se të mund t'i përgjigjet klientit dhe kjo mund të zgjatë dhjetëra sekonda. Klientët do të duhet të presin shumë kohë nëse çelësi është rigjeneruar çdo herë. Megjithatë, me madhësi të vogla kyçe (p.sh., 512) përdorimi i sshd nga inetd mund të jetë i mundshëm.

-k key_gen_time

Specifikon se sa shpesh rigjenerohet çelësi i serverit të versionit 1 të protokollit të përkohshëm (default 3600 seconds, or one hour). Motivimi për rigjenerimin e çelësit në mënyrë të drejtë shpesh është se çelësi nuk është ruajtur kudo, dhe pas rreth një ore, bëhet e pamundur për të rimarrë çelësin për dekriptimin e komunikimit të përgjuar edhe në qoftë se makina është plasaritur ose konfiskuar fizikisht. Një vlerë zero tregon që kyçi kurrë nuk do të rigjenerohet.

-o opsion

Mund të përdoret për të dhënë opsione në formatin e përdorur në skedarin e konfigurimit. Kjo është e dobishme për të specifikuar opsionet për të cilat nuk ka flamur të veçantë të komandës.

-p port

Specifikon portin në të cilin serveri dëgjon lidhjet (default 22). Mundësitë e shumta të portit lejohen. Portet e specifikuara në skedarin e konfigurimit injorohen kur një port i komandës është specifikuar.

Q

Modaliteti i qetë. Asgjë nuk është dërguar në logun e sistemit. Zakonisht fillimi, legalizimi dhe përfundimi i çdo lidhjeje regjistrohen.

-T

Modaliteti i testimit. Kontrollo vetëm vlefshmërinë e skedarit të konfigurimit dhe mendjen e shëndoshë të çelësave. Kjo është e dobishme për përditësimin e sshd në mënyrë të besueshme, pasi opsionet e konfigurimit mund të ndryshojnë.

-u len

Ky opsion përdoret për të specifikuar madhësinë e fushës në strukturën më të madhe që mban emrin e hostit të largët. Nëse emri i zgjedhur i mbajtësit është më i gjatë se linja , do të përdoret vlera me vlerë dhjetore. Kjo lejon hostë me emra host shumë të gjatë që tejkalojnë këtë fushë për të qenë ende i identifikuar në mënyrë unike. Specifikimi - u0 tregon se vetëm adresat dhjetore me pika duhet të futen në skedarin utmp. - u0 poashtu do të përdoret për të parandaluar sshd nga bërja e kërkesave DNS përveç nëse mekanizmi i vërtetimit ose konfigurimi e kërkon atë. Mekanizmat e autentifikimit që mund të kërkojnë DNS përfshijnë RhostsAuthentication RhostsRSAAuthentication HostbasedAuthentication dhe duke përdorur një opsion nga = pattern-list në një skedar kyç. Opsionet e konfigurimit që kërkojnë DNS përfshijnë përdorimin e një modeli USER @ HOST në AllowUsers ose DenyUsers

-D

Kur ky opsion është specifikuar sshd nuk do të shkëputet dhe nuk do të bëhet një daemon. Kjo lejon një monitorim të lehtë të sshd

-4

Forca sshd për të përdorur vetëm IPv4 adresat.

-6

Forcat sshd për të përdorur vetëm IPv6 adresat.

Skedari i konfigurimit

sshd lexon të dhënat e konfigurimit nga / etc / ssh / sshd_config (ose skedari i specifikuar me - f në rreshtin e komandave). Formati i skedarit dhe opsionet e konfigurimit janë përshkruar në sshd_config5.

Procesi i hyrjes

Kur një përdorues futet me sukses, sshd bën si në vijim:

  1. Nëse hyrja është në një tty, dhe asnjë komandë nuk është specifikuar, printon kohën e fundit të hyrjes dhe / etc / motd (përveç nëse është e ndaluar në skedarin e konfigurimit ose nga $ HOME / .hushlogin shih seksionin SX FILES).
  2. Nëse hyrja është në një tty, regjistro kohën e identifikimit.
  3. Kontrollon / etc / nologin nëse ekziston, shtyp përmbajtjen dhe braktis (përveç nëse rrënja).
  4. Ndryshimet për të kandiduar me privilegje normale të përdoruesit.
  5. Vendos mjedisin bazë.
  6. Lexon $ HOME / .ssh / mjedis nëse ekziston dhe përdoruesit lejohen të ndryshojnë mjedisin e tyre. Shikoni opsionin PermitUserEnvironment në sshd_config5.
  7. Ndryshimet në drejtorin e përdoruesit.
  8. Nëse ekziston $ HOME / .ssh / rc, ekzekuton atë; tjetër nëse ekziston / etc / ssh / sshrc, e drejton atë; përndryshe shkon xauth. Dosjet `` rc '' u jepen protokollin e legalizimit X11 dhe cookie në hyrjen standarde.
  9. Ekziston shell ose komanda e përdoruesit.

Formati i dokumentit të Autorizuar_Keys

$ HOME / .ssh / authorized_keys është skedari i parazgjedhur që liston çelësat publikë që janë të lejuara për autentikimin RSA në versionin e protokollit 1 dhe për autentikimin e çelësave publikë (PubkeyAuthentication) në versionin e protokollit 2. AutorizimetKeysFile mund të përdoren për të specifikuar një skedar alternativ.

Çdo rresht i skedarit përmban një çelës (linjat bosh dhe linjat që fillojnë me një '#' shpërfillen si komente). Çdo çelës publik i RSA përbëhet nga fushat e mëposhtme, të ndara nga hapësira: opsione, pjesë, eksponent, modul, koment. Secili version publik i protokollit 2 përbëhet nga: opsione, keytype, base64 koduar kyç, koment. Fusha e opsioneve është fakultative; prania e tij përcaktohet nëse vija fillon me një numër ose jo (fusha e opsioneve nuk fillon kurrë me një numër). Fushat bit, eksponenti, moduli dhe komentet japin çelësin RSA për versionin e protokollit 1; fusha e komenteve nuk përdoret për asgjë (por mund të jetë i përshtatshëm për përdoruesin që të identifikojë çelësin). Për versionin e protokollit 2 keytype është `` ssh-dss '' ose `` ssh-rsa ''

Vini re se linjat në këtë skedar zakonisht janë disa qindra bytesa të gjata (për shkak të madhësisë së kodimit të çelësit publik). Ju nuk doni të shkruani ato; në vend të kësaj, kopjoni identitetin.pub id_dsa.pub ose file id_rsa.pub dhe modifikoni atë.

sshd zbaton një madhësi minimale të modulit RSA për protokollin 1 dhe çelësat e protokollit 2 të 768 biteve.

Opsionet (nëse janë të pranishme) përbëhen nga specifikimet e opsioneve të ndara me presje. Asnjë hapësira nuk lejohet, përveç kuotave të dyfishta. Specifikimet e mëposhtme të opsioneve mbështeten (vini re se fjalët kyçe të opsioneve nuk janë të ndjeshëm ndaj çështjes):

nga = model-lista

Specifikon se përveç autentifikimit të çelësave publik, emri kanonik i hostit të largët duhet të jetë i pranishëm në listën e ndarë të emrave ('*' dhe '?' Shërbejnë si wildcards). Lista gjithashtu mund të përmbajë modele të mohuara duke prefikuar ato me `! ' ; nëse emri kanonik i host përputhet me një model të mohuar, çelësi nuk pranohet. Qëllimi i këtij opsioni është që të rritet opsionalisht siguria: autentifikimi i çelësit publik vetë nuk i beson rrjetit ose serverëve të emrave apo ndonjë gjëje (por çelësin); megjithatë, nëse dikush në njëfarë mënyre e vjedh çelësin, çelësi lejon një ndërhyrës që të hyjë nga kudo në botë. Ky opsion shtesë e bën përdorimin më të vështirë të një butoni të vjedhur (serverat e emrit dhe / ose router duhet të kompromentohet përveç vetëm çelësit).

komandë = komandë

Specifikon që komanda ekzekutohet sa herë që ky kyç përdoret për autentifikim. Komanda e furnizuar nga përdoruesi (nëse ka) është injoruar. Komanda drejtohet në një pty nëse klienti kërkon një pty; përndryshe ajo është drejtuar pa një tty. Nëse kërkohet një kanal i pastër 8-bit, nuk duhet të kërkohet një pty ose duhet të specifikojë jo-pty. Një kuotë mund të përfshihet në komandë duke e cituar atë me një rresht të kundërt. Ky opsion mund të jetë i dobishëm për të kufizuar disa çelësa publikë për të kryer vetëm një operacion specifik. Një shembull mund të jetë çelësi që lejon kopjet e largëta, por asgjë tjetër. Vini re se klienti mund të specifikojë transmetimin TCP / IP dhe / ose X11, përveç nëse ato janë të ndaluara në mënyrë eksplicite. Vini re se ky opsion vlen për ekzekutimin e shell, komandës ose nënsistemit.

Mjedisi = NAME = vlera

Specifikon që vargu duhet të shtohet në mjedis kur hyni duke përdorur këtë çelës. Variablat e mjedisit të vendosur në këtë mënyrë mbivendosin vlerat e tjera të mjedisit të paracaktuar. Opsionet e shumëfishta të këtij lloji janë të lejuara. Përpunimi i mjedisit është i çaktivizuar me parazgjedhje dhe kontrollohet nëpërmjet opcionit PermitUserEnvironment . Ky opsion hiqet automatikisht nëse përdorimi i Përdorimit është i aktivizuar.

no-port-forwarding

Ndalon transmetimin TCP / IP kur ky kyç përdoret për autentifikim. Çdo kërkesë përpara portit nga klienti do të kthejë një gabim. Kjo mund të përdoret, p.sh., në lidhje me opsionin e komandimit .

no-X11-forwarding

Ndalon dërgimin X11 kur ky kyç përdoret për autentifikim. Çdo kërkesë përpara X11 nga klienti do të kthejë një gabim.

no-agjent-transmetim

Ndalon dërgimin e agjentit të autentifikimit kur ky kyç përdoret për autentifikim.

no-Pty

Ndalon shpërndarjen e tty (një kërkesë për shpërndarjen e një pty do të dështojë).

permitopen = host: port

Kufizoni dergimin e portit lokal `` ssh-L '' , qe te lidhet vetem me hostin dhe portin e specifikuar. Adresat IPv6 mund të specifikohen me një sintaksë alternative: host / port Opsionet e shumta të lejes mund të aplikohen të ndara me presje. Asnjë përputhshmëri modelesh nuk kryhet në emrat e emrave të caktuar, ato duhet të jenë domenë ose adresa literale.

shembuj

1024 33 12121 ... 312314325 ylo@foo.bar

nga = "*. niksula.hut.fi,! pc.niksula.hut.fi" 1024 35 23 ... 2334 ylo @ niksula

komandë = "dump / home", pa-pty, pa-port-forwarding 1024 33 23 ... 2323 backup.hut.fi

lejeqendra = "10.2.1.55:80", lejeqendra = "10.2.1.56:25" 1024 33 23 ... 2323

Ssh_Known_Hosts Formati i skedarit

Skedat / etc / ssh / ssh_known_hosts dhe $ HOME / .ssh / known_hosts përmbajnë çelësat publikë të strehuesit për të gjithë hostët e njohur. Dosja globale duhet të përgatitet nga administratori (opsional) dhe skedari i përdoruesit mbrohet automatikisht: sa herë që përdoruesi lidhet me një host të panjohur, çelësi i tij shtohet në skedarin e përdoruesit.

Çdo rresht në këto skedarë përmban fushat e mëposhtme: hostname, bits, eksponent, modulus, comment. Fushat janë të ndara me hapësira.

Hostnames janë një listë e ndarë e ndarë e presjeve ('*' dhe '?' Veprojnë si wildcards); secili model, nga ana tjetër, përputhet me emrin e kanalit (kur autentifikon një klient) ose kundër emrit të dhënë nga përdoruesi (kur autentifikon një server). Një model gjithashtu mund të paraprihet nga `! ' për të treguar mohimin: nëse emri i host përputhet me një model të mohuar, nuk pranohet (nga ajo linjë) edhe nëse përputhet me një model tjetër në linjë.

Bits, eksponent, dhe modulus janë marrë direkt nga çelësi pritës RSA; ato mund të merren, p.sh., nga /etc/ssh/ssh_host_key.pub Fusha opsionale e komenteve vazhdon deri në fund të vijës dhe nuk përdoret.

Linjat që fillojnë me `# 'dhe linjat bosh janë injoruar si komente.

Gjatë kryerjes së autentifikimit, autentifikimi pranohet nëse ndonjë linjë e përputhshme ka çelësin e duhur. Është e lejuar (por jo e rekomanduar) që të ketë disa rreshta ose çelësa të ndryshëm të pranishëm për të njëjtat emra. Kjo do të ndodhë në mënyrë të pashmangshme kur format e shkurtra të emrave të strehuesit nga fusha të ndryshme vihen në dosje. Është e mundur që dosjet të përmbajnë informata konfliktuale; autentikimi pranohet nëse informata të vlefshme mund të gjenden nga të dy skedarët.

Vini re se linjat në këto skedarë zakonisht janë qindra karaktere të gjata, dhe ju nuk doni të shkruani me dorë çelësat e pritësit. Përkundrazi, gjeneroni ato nga një shkrim ose duke marrë /etc/ssh/ssh_host_key.pub dhe duke shtuar emrat e mbajtësve në pjesën e përparme.

shembuj

closenet, ..., 130.233.208.41 1024 37 159 ... 93 closenet.hut.fi cvs.openbsd.org, 199.185.137.3 ssh-rsa AAAA1234 ..... =

Shiko gjithashtu

ssh-add1, ssh-agent1, ssh-keygen1, login.conf5, moduli (5), sshd_config5, sftp-server8

T. Ylonen T. Kivinen M. Saarinen T. Rinne S. Lehtinen "Arkitektura e protokollit SSH" draft-ietf-secsh-arkitekturë-12.txt Janar 2002 material pune në progres

M. Friedl N. Provos WA Simpson "Shkëmbimi i Grupit Diffie-Hellman për Protokollin e Shtresave të Transportit SSH" draft-ietf-secsh-dh-group-exchange-02.txt Janar 2002 Materiale pune në progres

E rëndësishme: Përdorni komandën e njeriut ( % man ) për të parë se si përdoret një komandë në kompjuterin tuaj të veçantë.