Linux / Unix opdrag: sshd

naam

sshd - OpenSSH SSH daemon

opsomming

sshd [- deiqtD46 ] [- b bits ] [- f config_file ] [- g login_grace_time ] [- h host_key_file ] [- k key_gen_time ] [- o opsie ] [- p port ] [- u len ]

beskrywing

sshd (SSH Daemon) is die daemon program vir ssh (1). Saam vervang hierdie programme rlogin en rsh , en bied veilige geënkripteerde kommunikasie tussen twee onbetroubare leërskare oor 'n onsekere netwerk. Die programme is bedoel om so maklik te wees om te installeer en gebruik as moontlik.

sshd is die daemon wat luister na verbindings van kliënte. Dit word gewoonlik begin by opstart vanaf / etc / rc. Dit vurk 'n nuwe daemon vir elke inkomende konneksie. Die forked-daemonne hanteer sleuteluitruiling, enkripsie, verifikasie, opdraguitvoering en data-uitruil. Hierdie implementering van sshd ondersteun beide SSH protokol weergawe 1 en 2 gelyktydig.

SSH Protokol Weergawe 1

Elke gasheer het 'n gasheer-spesifieke RSA sleutel (gewoonlik 1024 bisse) wat gebruik word om die gasheer te identifiseer. Daarbenewens, wanneer die daemon begin, word dit 'n bediener-RSA-sleutel genereer (gewoonlik 768 bisse). Hierdie sleutel word gewoonlik elke uur hergebou as dit gebruik is, en word nooit op die skyf gestoor nie.

Wanneer 'n kliënt verbind word, reageer die daemon met sy publieke gasheer en bediener sleutels. Die kliënt vergelyk die RSA-gasheer sleutel teen sy eie databasis om te verifieer dat dit nie verander het nie. Die kliënt genereer dan 'n 256-bis ewekansige getal. Dit versleutelt hierdie ewekansige getal met behulp van beide die gasheer sleutel en die bediener sleutel en stuur die geïnkripteer nommer na die bediener. Beide kante gebruik dan hierdie ewekansige nommer as 'n sessiesleutel wat gebruik word om alle verdere kommunikasie in die sessie te enkripteer. Die res van die sessie word geïnkripteer deur gebruik te maak van 'n konvensionele kodering, tans Blowfish of 3DES, met 3DES wat standaard gebruik word. Die kliënt kies die enkripsie-algoritme om van diegene wat deur die bediener aangebied word te gebruik.

Vervolgens gee die bediener en die kliënt 'n verifikasie dialoog. Die kliënt poog om homself te verifieer met behulp van .hosthost-verifikasie, .hosthost-verifikasie gekombineer met RSA-gasheer-verifikasie, RSA-uitdaging-respons-verifikasie of wagwoordgebaseerde verifikasie .

Rhosts verifikasie is gewoonlik gedeaktiveer omdat dit fundamenteel onseker is, maar kan in die bedienerkonfigurasie lêer geaktiveer word indien verkies. Stelsel sekuriteit word nie verbeter nie, tensy rshd rlogind en rexecd gedeaktiveer word (dus rlogin en rsh volledig in die masjien afskakel).

SSH Protokol Weergawe 2

Weergawe 2 werk soos volg: Elke gasheer het 'n gasspesifieke sleutel (RSA of DSA) wat gebruik word om die gasheer te identifiseer. Wanneer die daemon egter begin, word dit nie 'n bediener sleutel genereer nie. Vooruit sekuriteit word verskaf deur 'n Diffie-Hellman sleutelooreenkoms. Hierdie sleutelooreenkoms lei tot 'n gedeelde sessiesleutel.

Die res van die sessie word geïnkripteer met behulp van 'n simmetriese kode, tans 128 bit AES, Blowfish, 3DES, CAST128, Arcfour, 192 bit AES of 256 bit AES. Die kliënt kies die enkripsie-algoritme om van diegene wat deur die bediener aangebied word te gebruik. Daarbenewens word sessieintegriteit verskaf deur 'n kriptografiese boodskap-verifikasiekode (hmac-sha1 of hmac-md5).

Protokol weergawe 2 bied 'n publieke sleutel gebaseerde gebruiker (PubkeyAuthentication) of kliënt gasheer (HostbasedAuthentication) verifikasie metode, konvensionele wagwoord verifikasie, en uitdaging-respons gebaseerde metodes.

Opdraguitvoering en dataoordrag

As die kliënt hom suksesvol verifieer, word 'n dialoog vir die voorbereiding van die sessie ingevoer. Op hierdie tydstip kan die kliënt dinge soos die toekenning van 'n pseudo-tty, X11-verbindings deurstuur, TCP / IP-verbindings deurstuur of die verifikasie-agentverbinding oor die veilige kanaal stuur.

Ten slotte versoek die kliënt ook 'n dop of uitvoering van 'n opdrag. Die kante gaan dan sessiemodus in. In hierdie modus kan weerskante enige tyd data stuur, en sodanige data word na / vanaf die dop of opdrag aan die bediener kant gestuur, en die gebruikersterminal aan die kliënte kant.

Wanneer die gebruikersprogram beëindig word en alle aangestuurde X11 en ander verbindings gesluit is, stuur die bediener beveluitgangstatus na die kliënt en albei kante verlaat.

sshd kan gekonfigureer word deur gebruik te maak van opdraglyn opsies of 'n konfigurasie lêer. Opdraglynopsies ignoreer waardes wat in die konfigurasielêer gespesifiseer is.

sshd herlees sy konfigurasielêer wanneer dit 'n ophangsignaal ontvang, SIGHUP deur homself uit te voer met die naam wat dit begin het, nl. / usr / sbin / sshd

Die opsies is soos volg:

-b bisse

Spesifiseer die aantal bisse in die ephemerale protokol weergawe 1 bediener sleutel (standaard 768).

d

Ontfoutmodus. Die bediener stuur woordelike debug-uitvoer na die stelsellogboek en plaas nie homself in die agtergrond nie. Die bediener sal ook nie werk nie en sal slegs een verbinding verwerk. Hierdie opsie is slegs bedoel vir ontfouting vir die bediener. Veelvuldige -d opsies verhoog die debugging-vlak. Maksimum is 3.

-e

Wanneer hierdie opsie gespesifiseer is, sal sshd die uitvoer na die standaardfout stuur in plaas van die stelsellogboek.

-F configuration_file

Spesifiseer die naam van die konfigurasielêer. Die standaard is / etc / ssh / sshd_config sshd weier om te begin as daar geen konfigurasie lêer is nie.

-g login_grace_time

Gee die grasietyd vir kliënte om hulself te verifieer (standaard 120 sekondes). As die kliënt nie die gebruiker binne hierdie baie sekondes verifieer nie, word die bediener ontkoppel en verlaat. 'N waarde van nul dui op geen limiet.

-h host_key_file

Spesifiseer 'n lêer waaruit 'n gasheer sleutel gelees word. Hierdie opsie moet gegee word as sshd nie as wortel uitgevoer word nie (aangesien die normale bedienersleutel lêers normaalweg nie leesbaar is deur iemand anders as wortel nie). Die standaard is / etc / ssh / ssh_host_key vir protokol weergawe 1, en / etc / ssh / ssh_host_rsa_key en / etc / ssh / ssh_host_dsa_key vir protokol weergawe 2. Dit is moontlik om verskeie leêr sleutel lêers te hê vir die verskillende protokol weergawes en gasheer sleutel algoritmes.

-i

Spesifiseer dat sshd vanaf inetd uitgevoer word. sshd word gewoonlik nie van inetd geloop nie omdat dit die bediener sleutel moet genereer voordat dit op die kliënt kan reageer, en dit kan tien sekondes neem. Kliënte sal te lank moet wag as die sleutel elke keer regenereer. Met klein sleutel groottes (bv. 512) met behulp van sshd van inetd kan dit egter haalbaar wees.

-k key_gen_time

Spesifiseer hoe dikwels die ephemerale protokol weergawe 1 bedienersleutel regenereer word (standaard 3600 sekondes, of een uur). Die motivering om die sleutel redelik dikwels te regenereer, is dat die sleutel nie enige plek gestoor word nie, en na ongeveer 'n uur word dit onmoontlik om die sleutel te herwin vir die ontsyfering van geskepte kommunikasie, selfs al is die masjien gekraak of fisies beslag gelê. 'N waarde van nul dui aan dat die sleutel nooit regenereer sal word nie.

-Ons opsie

Kan gebruik word om opsies te gee in die formaat wat in die konfigurasielêer gebruik word. Dit is nuttig om opsies te spesifiseer waarvoor daar geen aparte opdraglyn vlag is nie.

-p- poort

Spesifiseer die poort waarop die bediener luister vir verbindings (standaard 22). Meervoudige poortopsies word toegelaat. Poorte wat in die konfigurasielêer gespesifiseer word, word geïgnoreer wanneer 'n bevellynpoort gespesifiseer word.

-q

Stille af. Niks word na die stelsellogboek gestuur nie. Normaalweg word die begin, verifikasie en beëindiging van elke verbinding aangemeld.

t

Toetsmodus. Gaan net die geldigheid van die konfigurasielêer en die gesonde verstand van die sleutels na. Dit is handig om sshd betroubaar op te dateer, aangesien konfigurasieopsies kan verander.

Jy is

Hierdie opsie word gebruik om die grootte van die veld in die UDMP- struktuur wat die afgeleë gasheernaam bevat, te spesifiseer. As die opgeloste gasheernaam langer as len is, sal die gestippelde desimale waarde eerder gebruik word. Dit laat die leërskare toe met baie lang gasheername wat hierdie veld oorloop om steeds uniek geïdentifiseer te word. Spesifisering - u0 dui aan dat slegs stippel-desimale adresse in die UTMP-lêer geplaas moet word. - u0 word ook gebruik om te voorkom dat sshd DNS-versoeke maak, tensy die verifikasie meganisme of konfigurasie dit vereis. Verifikasie meganismes wat DNS benodig, sluit in RhostsAuthentication RhostsRSAAuthentication HostbasedAuthentication en die gebruik van 'n van = patroonlys opsie in 'n sleutellêer. Konfigurasie opsies wat DNS benodig, sluit in die gebruik van 'n USER @ HOST patroon in AllowUsers of DenyUsers

-D

Wanneer hierdie opsie gespesifiseer is, sal sshd nie losmaak nie en word dit nie 'n daemon nie. Dit maak dit maklik om sshd te monitor

-4

Mag sshd net IPv4-adresse gebruik.

-6

Mag sshd net IPv6-adresse gebruik.

Konfigurasie Lêer

sshd lees konfigurasiedata van / etc / ssh / sshd_config (of die lêer gespesifiseer met - f op die opdraglyn). Die lêerformaat en konfigurasie opsies word in sshd_config5 beskryf.

Intekenproses

Wanneer 'n gebruiker suksesvol aanmeld, doen sshd die volgende:

  1. As die aanmelding op 'n tty is, en geen opdrag gespesifiseer is nie, druk die laaste aanmeldingstyd en / etc / motd (tensy dit voorkom in die konfigurasielêer of deur $ HOME / .hushlogin die Sx FILES-afdeling).
  2. As die aanmelding op 'n tty is, teken die aanmeldingstyd in.
  3. Kontroleer / etc / nologin as dit bestaan, druk inhoud en sluit (tensy wortel).
  4. Wysigings om te hardloop met normale gebruikersregte.
  5. Stel basiese omgewing op.
  6. Lees $ HOME / .ssh / omgewing as dit bestaan ​​en gebruikers mag hul omgewing verander. Sien die opsie PermitUserEnvironment in sshd_config5.
  7. Wysigings aan gebruiker se tuisgids.
  8. As $ HOME / .ssh / rc bestaan, voer dit uit; anders as / etc / ssh / sshrc bestaan, loop dit; anders loop xauth. Die `` rc''lêers kry die X11-verifikasieprotokol en koekie in standaard insette.
  9. Bestuur gebruiker se dop of opdrag.

Authorized_Keys File Format

$ HOME / .ssh / authorized_keys is die versteklêer wat die publieke sleutels bevat wat toegelaat word vir RSA-verifikasie in protokol weergawe 1 en vir publieke sleutel-verifikasie (PubkeyAuthentication) in protokol weergawe 2. AuthorizedKeysFile kan gebruik word om 'n alternatiewe lêer te spesifiseer.

Elke lyn van die lêer bevat een sleutel (leë lyne en lyne wat met 'n `# 'begin, word as kommentaar genegee). Elke RSA publieke sleutel bestaan ​​uit die volgende velde, geskei deur spasies: opsies, bisse, eksponent, modulus, kommentaar. Elke protokol weergawe 2 publieke sleutel bestaan ​​uit: opsies, keytype, base64 gekodeerde sleutel, kommentaar. Die opsie veld is opsioneel; sy teenwoordigheid word bepaal deur of die lyn met 'n getal begin of nie (die opsieveld begin nooit met 'n nommer nie). Die bisse, eksponent, modulus en kommentaar velde gee die RSA sleutel vir protokol weergawe 1; Die kommentaarveld word nie vir enige iets gebruik nie (maar kan gerieflik wees vir die gebruiker om die sleutel te identifiseer). Vir protokol weergawe 2 is die keytipe `` ssh-dss '' of `` ssh-rsa ''

Let daarop dat lyne in hierdie lêer gewoonlik 'n paar honderd grepe lank is (as gevolg van die grootte van die publieke sleutel enkodering). Jy wil dit nie tik nie; Plaas eerder die identiteit.pub id_dsa.pub of die id_rsa.pub-lêer en wysig dit.

sshd dwing 'n minimum RSA sleutel modulus grootte vir protokol 1 en protokol 2 sleutels van 768 bisse.

Die opsies (indien teenwoordig) bestaan ​​uit kommas geskeide opsie spesifikasies. Geen spasies is toegelaat nie, behalwe binne dubbele aanhalings. Die volgende opsie spesifikasies word ondersteun (let op dat opsie sleutelwoorde insiggewend is):

uit = patroon-lys

Spesifiseer dat bykomend tot publieke sleutel-verifikasie, die kanonieke naam van die afgeleë gasheer teenwoordig moet wees in die komma-geskeide lys van patrone (`* 'en`?' Dien as wildkaarte). Die lys kan ook patrone bevat wat negatief is deur hulle voor te voeg met `! ' ; As die kanoniese gasheernaam 'n negatiewe patroon pas, word die sleutel nie aanvaar nie. Die doel van hierdie opsie is om die sekuriteit opsioneel te verhoog: publieke sleutel verifikasie op sigself vertrou nie die netwerk of naam bedieners of enigiets nie (maar die sleutel); As iemand egter die sleutel steel, kan die sleutel 'n indringer maak om van oral ter wêreld in te teken. Hierdie bykomende opsie maak dit moeiliker om 'n gesteelde sleutel te gebruik (naam bedieners en / of routers sal ook benadeel moet word behalwe net die sleutel).

command = opdrag

Spesifiseer dat die opdrag uitgevoer word wanneer hierdie sleutel gebruik word vir verifikasie. Die opdrag wat deur die gebruiker verskaf word (indien enige) word geïgnoreer. Die opdrag word uitgevoer op 'n Pty indien die kliënt 'n PTY versoek; anders loop dit sonder 'n tty. As 'n 8-bis-skoon kanaal benodig word, moet 'n mens nie 'n eis aanvra of nie-pty spesifiseer. 'N Kwotasie kan in die opdrag ingesluit word deur dit met 'n terugslag aan te haal. Hierdie opsie kan nuttig wees om sekere publieke sleutels te beperk om net 'n spesifieke operasie uit te voer. 'N Voorbeeld kan 'n sleutel wees wat eksterne rugsteun toelaat, maar niks anders nie. Let daarop dat die kliënt TCP / IP en / of X11-aanstuur kan spesifiseer tensy dit uitdruklik verbied word. Let daarop dat hierdie opsie van toepassing is op die uitvoering van dop-, opdrag- of subsysteme.

omgewing = NAME = waarde

Spesifiseer dat die tou by die omgewing gevoeg moet word wanneer u aanmeld met hierdie sleutel. Omgewingsveranderlikes wat op hierdie manier gestel word, ignoreer ander standaard omgewing waardes. Meervoudige opsies van hierdie tipe word toegelaat. Omgewingsverwerking word standaard afgeskakel en word beheer deur die PermitUserEnvironment opsie. Hierdie opsie word outomaties gedeaktiveer as UseLogin aangeskakel is.

no-hawe-ekspedisie

Bied TCP / IP-deurstuur wanneer hierdie sleutel gebruik word vir verifikasie. Enige hawe vorentoe versoeke deur die kliënt sal 'n fout terugbring. Dit kan byvoorbeeld gebruik word in verband met die opdrag opsie.

no-X11-ekspedisie

Verbied X11 deurstuur wanneer hierdie sleutel gebruik word vir verifikasie. Enige X11 vorentoe versoeke deur die kliënt sal 'n fout terugstuur.

no-agent-ekspedisie

Voorbidding-verifikasie agent wat gestuur word wanneer hierdie sleutel gebruik word vir verifikasie.

no-Edms

Voorkom tty-toekenning ('n versoek om 'n Pty toe te ken, sal misluk).

permitopen = leër hawe

Beperk plaaslike `` ssh -L''poort- deurstuur sodat dit net met die gespesifiseerde gasheer en poort verbind kan word. IPv6-adresse kan gespesifiseer word met 'n alternatiewe sintaksis: gasheer / hawe. Veelvuldige permitopen- opsies kan met komma's toegepas word. Geen patroonbypassing word op die vermelde hostname uitgevoer nie, hulle moet letterlike domeine of adresse wees.

voorbeelde

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

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

command = "dump / home", no-pty, no-port forwarding 1024 33 23 ... 2323 backup.hut.fi

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

Ssh_Known_Hosts File Format

Die / etc / ssh / ssh_known_hosts en $ HOME / .ssh / known_hosts lêers bevat gasheer publieke sleutels vir alle bekende gashere. Die globale lêer moet opgestel word deur die administrateur (opsioneel), en die per gebruiker lêer word outomaties gehandhaaf: wanneer die gebruiker van 'n onbekende gasheer verbind word, word die sleutel by die gebruiker-lêer gevoeg.

Elke lyn in hierdie lêers bevat die volgende velde: host name, bits, exponent, modulus, comment. Die velde word geskei deur spasies.

Host Name is 'n komma-geskeide lys van patrone ('*' en '?' Tree as wildkaarte op); Elke patroon word op sy beurt aangepas teen die kanoniese gasheernaam (wanneer 'n kliënt geverifieer word) of teen die gebruiker-verskafde naam (wanneer 'n bediener geverifieer word). 'N Patroon kan ook voorafgegaan word deur `!' negasie aan te dui: as die gasheernaam 'n negatiewe patroon pas, word dit nie aanvaar nie (deur die lyn), selfs al pas dit 'n ander patroon op die lyn.

Bisse, eksponente en modulus word direk vanaf die RSA-gasheer sleutel geneem; hulle kan verkry word, bv. van /etc/ssh/ssh_host_key.pub Die opsionele kommentaar veld gaan voort tot aan die einde van die reël, en word nie gebruik nie.

Lyne wat begin met `# 'en leë lyne word geïgnoreer as kommentaar.

By die uitvoer van host verifikasie word verifikasie aanvaar as 'n ooreenstemmende lyn die korrekte sleutel het. Dit is dus toelaatbaar (maar nie aanbeveel nie) om verskeie lyne of verskillende gasheer sleutels vir dieselfde name te hê. Dit sal onvermydelik gebeur wanneer kort vorms van gasheername uit verskillende domeine in die lêer geplaas word. Dit is moontlik dat die lêers teenstrydige inligting bevat; Verifikasie word aanvaar indien geldige inligting uit enige lêer gevind kan word.

Let daarop dat die lyne in hierdie lêers tipies honderde karakters lank is, en jy wil beslis nie die gasheer sleutels met die hand tik nie. Genereer dit eerder deur 'n skrip of deur /etc/ssh/ssh_host_key.pub te gebruik en die gasheername aan die voorkant by te voeg.

voorbeelde

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

Sien ook

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

T. Ylonen T. Kivinen M. Saarinen T. Rinne S. Lehtinen "SSH Protocol Argitektuur" draft-ietf-secsh-architecture-12.txt Januarie 2002 werk aan die gang materiaal

M. Friedl N. Provos WA Simpson "Diffie-Hellman Groep Uitruil vir die SSH Transportlaagprotokol" draft-ietf-secsh-dh-groep-uitruil-02.txt Januarie 2002 werk aan die gang materiaal

Belangrik: Gebruik die man opdrag ( % man ) om te sien hoe 'n opdrag op u rekenaar gebruik word.