Linux / Unix komanda: sshd

vardas

sshd - OpenSSH SSH daina

Anotacija

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

apibūdinimas

sshd (SSH daemon ) yra "ssh" (1) serveryje esanti programa . Kartu šios programos pakeičia rlogin ir rsh ir užtikrinsite saugų užšifruotą ryšį tarp dviejų nepatikimų kompiuterių per nesaugus tinklą. Programos turėtų būti taip pat lengva įdiegti ir naudoti kaip įmanoma.

sshd yra demonas, kuris išklauso ryšius iš klientų. Tai paprastai prasideda paleidžiant iš / etc / rc. Jis atveria naują demoną kiekvienam gaunamam ryšiui. Dantyta daemonas tvarko keitimą klavišais, šifravimą, autentifikavimą, komandų vykdymą ir duomenų mainus. Šis sshd įdiegimas vienu metu palaiko tiek SSH protokolą 1 ir 2 versiją.

SSH protokolo versija 1

Kiekvienas kompiuteris turi serverio RSA raktą (paprastai 1024 bitų), naudojamą šeimininkui identifikuoti. Be to, kai daunas paleidžiamas, jis generuoja serverio RSA klavišą (paprastai 768 bitų). Šis raktas paprastai atsinaujina kas valandą, jei jis buvo naudojamas, ir niekada saugomas diske.

Kiekvieną kartą, kai klientas jungia demoną, jis atsako su viešais serverio ir raktų klavišais. Klientas palygina RSA pagrindinį raktą su savo duomenų baze, kad patikrintų, ar jis nepasikeitė. Tada klientas generuoja 256 bitų atsitiktinį skaičių. Jis šifruoja šį atsitiktinį skaičių naudodamas pagrindinį raktą ir serverio raktą ir siunčia šifruotą numerį į serverį. Abi pusės naudoja šį atsitiktinį skaičių kaip seanso raktą, kuris naudojamas užkoduoti visus tolesnius ryšius seansu. Likusi sesija yra užkoduota naudojant įprastą šifru, šiuo metu Blowfish arba 3DES, o pagal numatytuosius nustatymus naudojama 3DES. Klientas pasirenka šifravimo algoritmą naudoti iš serverio siūlomų.

Tada serveris ir klientas įveskite autentifikavimo dialogą. Klientas bando autentifikuoti save naudojant autentifikavimą .rhosts, autentifikavimą su autentifikavimu kartu su RSA kompiuterio autentifikavimu, RSA užginčijimo atsakymo autentifikavimu arba slaptažodžiu pagrįstu autentifikavimu .

Paprastai prieigos prie autentifikavimo funkcija yra išjungta, nes ji yra iš esmės nesaugi, tačiau ji gali būti įjungta serverio konfigūracijos failo, jei pageidaujama. Sistemos saugumas nepagerinamas, jei rshd rlogind ir rexecd neleidžiamos (taigi visiškai išjungia rlogin ir rsh į įrenginį).

SSH protokolo versija 2

2 versija veikia taip pat: kiekvienas priimančiosios turi raktu (RSA arba DSA), naudojamą šeimininkui identifikuoti. Tačiau kai paleidžiamas daina, jis nesudaro serverio rakto. Išankstinis saugumas suteikiamas per "Diffie-Hellman" susitarimą. Šis pagrindinis susitarimas suteikia bendrą seanso raktą.

Likusi sesija yra šifruojama naudojant simetrinį šifrą, šiuo metu 128 bitų AES, Blowfish, 3DES, CAST128, ArcFour, 192 bitų AES arba 256 bitų AES. Klientas pasirenka šifravimo algoritmą naudoti iš serverio siūlomų. Be to, seanso vientisumas pateikiamas naudojant kriptografinio pranešimo autentifikavimo kodą (hmac-sha1 arba hmac-md5).

Protokolo 2 versijoje pateikiamas atvirasis raktas pagrįstas vartotojas (PubkeyAuthentication) arba kliento priimančiosios (HostbasedAuthentication) autentifikavimo metodas, įprastas slaptažodžio autentifikavimas ir užduodančio atsakymo metodai.

Komandų vykdymas ir duomenų persiuntimas

Jei klientas sėkmingai autentifikuoja save, įvesta dialogo sesija. Šiuo metu klientas gali prašyti tokių dalykų kaip priskyrimas pseudo-tty, ekspedijavimas X11 jungtys, peradresavimas TCP / IP jungtys arba persiuntimas autentifikavimo agento ryšį per saugų kanalą.

Galiausiai klientas prašo apvalkalo arba komandų vykdymo. Šonai įjungia sesijos režimą. Šiame režime abi pusės gali siųsti duomenis bet kuriuo metu, o tokie duomenys perduodami į / iš korpuso arba komandų serverio pusėje, o kliento pusėje - vartotojo terminalą.

Kai vartotojo programa baigiasi, o visi perduodami X11 ir kiti jungtys buvo uždarytos, serveris išsiunčia komandos išėjimo statusą klientui ir iš abiejų pusių.

Sshd galima konfigūruoti naudojant komandinės eilutės parinktis arba konfigūracijos failą. Komandinės eilutės parinktys pakeičia reikšmes, nurodytas konfigūracijos faile.

sshd perkelia savo konfigūracijos failą, kai jis gauna " hangup " signalą, SIGHUP , vykdydamas save su pavadinimu, kuris buvo paleistas, ty / usr / sbin / sshd

Galimos tokios parinktys:

-b bitai

Nurodo bortų skaičių ephemerinio protokolo 1 serveryje (numatytasis 768).

-d

Derinimo režimas. Serveris siunčia reikšmingą debuginę išvestį į sistemos žurnalą ir nepateikia fono. Serveris taip pat neveiks ir apdoros tik vieną ryšį. Ši parinktis skirta tik serverio derinimui. Keli variantai gali padidinti derinimo lygį. Maksimalus yra 3.

-e

Kai ši parinktis yra nurodyta, sshd atsiųs produkciją į standartinę klaidą, o ne į sistemos žurnalą.

-f configuration_file

Nurodo konfigūracijos failo pavadinimą. Numatytasis yra / etc / ssh / sshd_config sshd atsisako paleisti, jei nėra konfigūracijos failo.

-g login_grace_time

Suteikia malonumo klientams autentifikuoti save (numatytasis 120 sekundžių). Jei klientas per daugelį sekundžių nepavyksta autentifikuoti vartotojo, serveris atsijungia ir išeina. Nulinė reikšmė rodo, kad nėra apribojimų.

-h host_key_file

Nurodo failą, iš kurio skaitomas pagrindinis raktas. Ši parinktis turi būti suteikta, jei sshd neveikia kaip root (nes paprastai įprasto pagrindinio kompiuterio failai niekam negali būti skaityti, išskyrus šaknį). Pagal nutylėjimą protokolo versija 1 yra / etc / ssh / ssh_host_key ir / etc / ssh / ssh_host_rsa_key ir / etc / ssh / ssh_host_dsa_key protokolo 2 versijai. Yra galimybė turėti keletą pagrindinių pagrindinių failų skirtingoms protokolo versijoms ir pagrindiniam raktui algoritmai.

-i

Nurodo, kad sshd paleidžiamas iš inetd. Paprastai " sshd" neveikia iš "inetd", nes jis turi sugeneruoti serverio raktą, kol jis gali atsiliepti klientui, ir tai gali užtrukti dešimtys sekundžių. Klientai turės laukti per ilgai, jei kiekvieną kartą atsinaujins raktas. Tačiau su mažais dydžiais (pvz., 512), naudojant sshd iš inetd, gali būti įmanoma.

-k key_gen_time

Nurodo, kaip dažnai atkurtas greitojo protokolo 1 versijos serverio raktas (numatytasis 3600 sekundžių arba valandos). Gatvės regeneravimo motyvas gana dažnai yra tai, kad raktas niekur saugomas, o po maždaug valandos neįmanoma susigrąžinti rakto užšifruotiems pranešimams iššifruoti net ir tada, kai mašina yra sugadinta ar fiziškai konfiskuota. Nulinė vertė rodo, kad raktas niekada nebus atkurtas.

-pasirinkimas

Gali būti naudojamas pateikti variantus formatu, naudojamu konfigūracijos rinkmenoje. Tai naudinga norint nurodyti variantus, kuriems nėra atskiros komandinės eilutės vėliavos.

-p uostas

Nurodo prievadą, kuriame serveryje yra įsijungę ryšiai (numatytasis 22). Leidžiama naudoti keletą prievadų parinkčių. Poros, nurodytos konfigūracijos failo, ignoruojamos, kai yra nurodytas komandinės eilutės prievadas.

-q

Tylus režimas. Niekas nėra išsiųstas į sistemos žurnalą. Paprastai registruojamas kiekvieno ryšio pradžia, autentiškumas ir nutraukimas.

-t

Testavimo režimas. Tik patikrinkite konfigūracijos failo pagrįstumą ir klavišus. Tai naudinga patikimai atnaujinti sshd, nes konfigūravimo parinktys gali pasikeisti.

-u len

Ši parinktis naudojama norint nurodyti lauko dydį utmp struktūroje, kurioje saugomas nuotolinio kompiuterio vardas. Jei ištaisytas kompiuterio pavadinimas yra ilgesnis už len, vietoj jo bus naudojama dešimtainė dešimtainė reikšmė. Tai leidžia tame pačiame kompiuteryje su labai ilgais vardais, kurie perpildo šį lauką, kuris vis dar bus unikali. Nurodant - u0 nurodo, kad į failą utmp reikia įrašyti tik dešimtainius dešimtainius adresus. - u0 taip pat bus naudojama, kad neleistų sshd daryti DNS užklausų, nebent to reikalauja autentifikavimo mechanizmas ar konfigūracija. Autentifikavimo mechanizmai, kuriems gali prireikti DNS, yra RhostsAuthentication RhostsRSAAuthentication HostbasedAntentifikavimas ir naudojant variantą iš = pattern-list rakto byloje. Konfigūravimo parinktys, kurioms reikalingas DNS, apima "USER @ HOST" modelio naudojimą " AllowUsers" arba " DenyUsers"

-D

Pasirinkus šią parinktį sshd nebus atsijungęs ir netaptų demonu. Tai leidžia lengvai stebėti sshd

-4

"Force sshd" naudoti tik IPv4 adresus.

-6

"Force sshd" naudoti tik IPv6 adresus.

Konfigūracijos failas

sshd nuskaito konfigūracijos duomenis iš / etc / ssh / sshd_config (arba failo, nurodyto su -f komandų eilutėje). Failo formatas ir konfigūravimo parinktys aprašytos sshd_config5.

Prisijungimo procesas

Kai vartotojas sėkmingai prisijungia, sshd atlieka šiuos veiksmus:

  1. Jei prisijungimo vardas yra tty, o joks komandas nebuvo nurodytas, spausdinamas paskutinis prisijungimo laikas ir / etc / motd (jei konfigūracijos faile arba $ HOME / .hushlogin žr. Skyriuje Sx FILES).
  2. Jei prisijungimas yra tty, registruojamas prisijungimo laikas.
  3. Patikrinimai / etc / nologin, jei jis egzistuoja, spausdina turinį ir baigiasi (išskyrus root).
  4. Pakeitimai atliekami su įprastomis naudotojo privilegijomis.
  5. Nustato pagrindinę aplinką.
  6. Perskaityta $ HOME / .ssh / aplinka, jei ji egzistuoja, ir vartotojai gali keisti savo aplinką. Žiūrėkite parinktį PermitUserEnvironment sshd_config5 .
  7. Vartotojo namų katalogų pakeitimai.
  8. Jei $ HOME / .ssh / rc egzistuoja, paleidžia jį; kitaip, jei / etc / ssh / sshrc egzistuoja, paleidžia jį; kitaip veikia xauth. "` Rc '' failams pateikiamas X11 autentifikavimo protokolas ir slapukai standartine įvestimi.
  9. Įjungia vartotojo apvalkalą arba komandą.

Authorized_Keys failo formatas

$ HOME / .ssh / authorized_keys yra numatytasis failas, kuriame išvardyti viešieji raktiniai žodžiai, kurie yra leidžiami RSA autentifikavimui protokolo 1 versijoje ir viešojo rakto autentifikavimui (PubikeAuthentication) 2 protokolo versijoje. AuthorizedKeysFile gali būti naudojamas norint nurodyti alternatyvų failą.

Kiekvienoje failo eilutėje yra vienas raktas (tuščios eilutės ir linijos, prasidedančios raide "#", ignoruojama kaip komentarai). Kiekvienas RSA viešasis raktas susideda iš šių laukų, atskirtų tarpų: parinkčių, bitų, eksponentų, modulių, komentarų. Kiekvienas protokolo 2 versijos viešasis raktas susideda iš: parinkčių, klavišų tipo, kodavimo kodo bazės 64, komentaro. Pasirinkčių laukas yra neprivalomas; jo buvimas nustatomas pagal tai, ar linija prasideda skaičiumi, ar ne (laukelis parinktys niekada prasideda skaičiumi). Baitų, eksponentų, modulių ir komentarų laukai nurodo RSA raktą protokolo 1 versijai; komentarų laukas nieko nenaudojamas (bet gali būti patogu vartotojui nustatyti raktą). 2 protokolo versija rakto tipas yra `` ssh-dss '' arba `` ssh-rsa ''

Atkreipkite dėmesį, kad šio failo eilutės dažniausiai yra kelios šimtai baitų (dėl viešojo rakto kodavimo dydžio). Nenorite jų įvesti; vietoj to nukopijuokite failą identity.pub id_dsa.pub arba id_rsa.pub ir redaguokite jį.

"sshd" užtikrina minimalų RSA raktų modulio dydį 1 protokolui ir 768 bitų raktų 2 protokolui.

Parinktys (jei yra) sudarytos iš kableliais atskirtų parinkčių specifikacijų. Tarpai nėra leidžiami, išskyrus dvigubas kainas. Palaikomos šios parinkčių specifikacijos (atkreipkite dėmesį, kad pasirinkimo raktiniai žodžiai yra atsitiktiniai):

iš = modelio sąrašas

Nurodo, kad šalia viešojo rakto autentiškumo, šaltinio kanoninis pavadinimas turi būti pateikiamas kableliais atskirtų modelių sąraše ("*" ir "?" Reiškia pakaitos simbolius). Sąraše taip pat gali būti nerodomų modelių, juos priskiriant "!" ; jei kanoninis priimančiojo vardas atitinka neigiamą modelį, raktas nepriimamas. Šios parinkties tikslas yra pasirinktinai padidinti saugumą: viešojo rakto autentifikavimas savaime nepasitiki tinklo ar vardų serveriais ar nieko (bet raktų); Tačiau, jei kažkas kažkaip pavogia raktą, raktas leidžia įsibrovėliui prisijungti iš bet kurios pasaulio vietos. Ši papildoma parinktis dar labiau apsunkina pavogto rakto naudojimą (be vardinio rakto turėtų būti pažeisti vardų serveriai ir (arba) maršrutizatoriai).

command = komanda

Nurodo, kad komanda vykdoma, kai šis raktas naudojamas autentiškumui patvirtinti. Vartotojo nurodoma komanda (jei yra) ignoruojama. Komanda paleidžiama pty, jei klientas reikalauja pty; kitaip jis paleidžiamas be tty. Jei reikia 8-bitų švaraus kanalo, negalima užklausti pty arba nurodyti, kad no-pty A citata gali būti įtraukta į komandą, nurodant ją su grįžtamuoju brūkšniu. Ši parinktis gali būti naudinga norint apriboti tam tikrus viešuosius raktus tik konkrečiai operacijai atlikti. Pavyzdys gali būti raktas, leidžiantis nuotolines atsargines kopijas, bet nieko kito. Atkreipkite dėmesį, kad klientas gali nurodyti TCP / IP ir / arba X11 persiuntimą, nebent jie yra aiškiai draudžiami. Atkreipkite dėmesį, kad ši parinktis yra taikoma "shell", komandų ar posistemių vykdymui.

aplinka = NAME = vertė

Nurodo, kad eilutė turi būti įtraukta į aplinką prisijungiant naudojant šį raktą. Aplinkos kintamieji tokiu būdu pakeičia kitas numatytas aplinkos vertes. Leidžiama naudoti keletą šio tipo variantų. Aplinkos apdorojimas pagal nutylėjimą yra išjungtas ir yra kontroliuojamas per " PermitUserEnvironment" parinktį. Ši parinktis automatiškai išjungiama, jei " UseLogin" yra įjungtas.

"no-port-forwarding"

Uždrausti TCP / IP persiuntimą, kai šis raktas naudojamas autentiškumui patvirtinti. Bet kokie kliento užklausos uostuose užklausos grąžins klaidą. Tai gali būti naudojama, pvz., Naudojant komandų parinktį.

No-X11-ekspedijavimas

Uždraustas X11 persiuntimas, kai šis raktas naudojamas autentiškumui patvirtinti. Bet kokie X11 prašymai iš anksto klientui grąžina klaidą.

be agento peradresavimas

Uždrausti autentifikavimo agento persiuntimą, kai šis raktas naudojamas autentiškumui patvirtinti.

ne-pty

Neleidžia tty paskirstymo (prašymas paskirti pty nepavyks).

permitopen = host: port

Apriboti vietinį "ssh -L" uosto persiuntimą taip, kad jis gali prisijungti tik prie nurodyto kompiuterio ir prievado. IPv6 adresai gali būti nurodyti alternatyviu sintaksė: host / port. Keli įgalinimai gali būti taikomi atskiriant kableliais. Nurodytuose kompiuterių pavadinimuose nėra modelio atitikimo, jie turi būti pažodiniai domenai ar adresai.

Pavyzdžiai

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

iš = "*. 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 failo formatas

Failuose / etc / ssh / ssh_known_hosts ir $ HOME / .ssh / known_hosts yra visų žinomų kompiuterių viešųjų raktų. Visuotinį failą turėtų parengti administratorius (neprivaloma), o naudotojo failas yra prižiūrimas automatiškai: kiekvieną kartą, kai vartotojas jungiasi iš nežinomo kompiuterio, jo raktas pridedamas prie vieno vartotojo failo.

Kiekvienoje šių failų eilutėje yra šie laukai: pavadinimai, bitai, eksponentas, modulis, komentaras. Laukai yra atskirti tarpai.

Serverio pavadinimai yra atskirti kableliais modelių sąrašai ("*" ir "?" Veikia kaip pakaitos simbolius); kiekvienas modelis, savo ruožtu, suderinamas su kanoniniu kompiuterio pavadinimu (autentifikuojant klientą) arba vartotojo vardu pateiktu vardu (kai autentifikuojamas serveris). Prieš tai gali būti ir simbolis "!" nurodyti negaciją: jei priimančiojo vardas atitinka neigiamą modelį, jo nepriimtinas (pagal tą eilutę), net jei jis sutampa su kitu linijos raštu.

Bitai, eksponentai ir moduliai imami tiesiai iš RSA pagrindinio kompiuterio raktų; juos galima gauti, pvz., iš /etc/ssh/ssh_host_key.pub Neprivalomas komentarų laukas tęsiasi iki eilutės pabaigos ir nenaudojamas.

Linijos, prasidedančios raide "#" ir tuščios eilutės, ignoruojama kaip komentarai.

Atlikdamas autentiškumo priėmimą, autentifikavimas priimamas, jei bet kokia atitinkama eilutė turi tinkamą raktą. Taigi leistina (bet nerekomenduojama) turėti kelias eilutes ar skirtingus pagrindinių raktai vienodiems pavadinimams. Tai neišvengiamai atsiras, kai failuose bus įrašytos trys skirtingų sričių vardai. Gali būti, kad bylose yra prieštaringos informacijos; autentifikavimas priimamas, jei galiojančią informaciją galima rasti iš bet kurio failo.

Atkreipkite dėmesį, kad šių failų eilutės paprastai yra šimtai simbolių, ir jūs tikrai nenorite rankiniu būdu įvedinėti pagrindinių raktų. Greičiau sugeneruokite juos scenarijuje arba atlikdami /etc/ssh/ssh_host_key.pub ir pridėdami vardus prie kompiuterio priekyje.

Pavyzdžiai

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

Taip pat žiūrėkite

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

T. Ylonen T. Kivinen M. Saarinen T. Rinne S. Lehtinen "SSH protokolo architektūra" projektas-ietf-secsh-architecture-12.txt 2002 m. Sausio mėn.

M. Friedl N. Provosas W. A. ​​Simpsonas "Diffie-Hellmano grupių mainai dėl SSH transporto sluoksnio protokolo" projektas-ietf-secsh-dh-group-exchange-02.txt 2002 m. Sausio mėn.

Svarbu: naudokite komandą man ( % man ), kad pamatytumėte, kaip komanda naudojama jūsų konkrečiame kompiuteryje.