Linux / Unix ukaz: sshd

Ime

sshd - OpenSSH SSH daemon

Povzetek

sshd [- deiqtD46 ] [- b bits ] [- f config_file ] [- g login_grace_time ] [- h host_key_file ] [- k key_gen_time ] [- o opcija ] [- p pristanek ] [- uen ]

Opis

sshd (SSH Daemon) je program daemon za ssh (1). Skupaj ti programi nadomestijo rlogin in rsh ter zagotovijo varno šifrirano komunikacijo med dvema nezaupnima gostiteljema v nezaščitenem omrežju. Programi naj bodo tako enostavni za namestitev in uporabo.

sshd je demon, ki posluša povezave s strankami. Običajno se zažene ob zagonu iz / etc / rc. Za vsako dohodno povezavo se odpre novi demon. Razbremenjeni demoni obravnavajo izmenjavo ključev, šifriranje, overjanje, izvajanje ukazov in izmenjavo podatkov. To izvajanje sshd podpira protokol SSH različice 1 in 2 hkrati.

Protokol SSH različice 1

Vsak gostitelj ima gostiteljsko specifičen ključ RSA (običajno 1024 bitov), ​​ki se uporablja za identifikacijo gostitelja. Poleg tega se, ko se daemon zažene, ustvari strežnik RSA ključ (običajno 768 bitov). Ta ključ se ponavadi regenerira vsako uro, če je bila uporabljena in ni nikoli shranjena na disku.

Vsakič, ko odjemalec poveže demon, se odzove s svojimi javnimi gostiteljskimi in strežniškimi ključi. Stranka primerja ključ gostitelja RSA z lastno bazo podatkov, da preveri, ali se ni spremenila. Stranka nato generira 256-bitno naključno številko. Šifrira to naključno številko z uporabo ključa gostitelja in ključa strežnika ter pošlje strežniku šifrirano številko. Obe strani nato uporabita to naključno številko kot ključ za sejo, ki se uporablja za šifriranje vseh nadaljnjih komunikacij v seji. Preostali del seje je šifriran z običajno šifro, trenutno Blowfish ali 3DES, pri čemer se 3DES uporablja privzeto. Stranka izbere algoritem šifriranja, ki ga bo uporabil od tistih, ki jih ponuja strežnik.

Nato strežnik in odjemalec vneseta pogovorno okno za preverjanje pristnosti. Stranka poskuša preveriti pristnost z avtentikacijo. Rhosts, avtentikacijo. Rhosts v povezavi z avtentifikacijo gostitelja RSA, preverjanje pristnosti izzivov RSA ali preverjanje pristnosti na podlagi gesla .

Preverjanje pristnosti Rhosts je običajno onemogočeno, ker je v osnovi negotovo, vendar ga je mogoče omogočiti v konfiguracijski datoteki strežnika, če želite. Varnost sistema ni izboljšana, razen če sta rshd rlogind in rexecd onemogočena (s tem onemogočite rlogin in rsh v stroj).

Protokol SSH različice 2

Različica 2 deluje podobno: Vsak gostitelj ima ključ, specifičen za gostitelja (RSA ali DSA), ki se uporablja za identifikacijo gostitelja. Ko pa se daemon zažene, ne ustvari ključa strežnika. Varnost naprej je zagotovljena s pogodbo o ključih Diffie-Hellman. Ta ključni sporazum ima ključ za skupno sejo.

Preostali del seje je šifriran z uporabo simetrične šifre, ki je trenutno 128-bitna AES, Blowfish, 3DES, CAST128, Arcfour, 192 bit AES ali 256 bit AES. Stranka izbere algoritem šifriranja, ki ga bo uporabil od tistih, ki jih ponuja strežnik. Poleg tega je celovitost seje zagotovljena s kodo za overjanje kriptografskega sporočila (hmac-sha1 ali hmac-md5).

Protokol različice 2 zagotavlja uporabnik (PubkeyAuthentication) ali gostitelj (HostbasedAuthentication) način preverjanja pristnosti, običajno preverjanje pristnosti gesla in metode, ki temeljijo na izzivu.

Izvedba ukaza in posredovanje podatkov

Če se stranka uspešno potrjuje, se vnese pogovorno okno za pripravo seje. V tem trenutku lahko odjemalec zahteva zahtevo za dodelitev pseudo-tty, posredovanje povezav X11, posredovanje TCP / IP povezav ali posredovanje povezave za preverjanje pristnosti prek zaščitenega kanala.

Nazadnje, odjemalec zahteva tudi ukazno lupino ali izvedbo ukaza. Strani nato vstopita v način seje. V tem načinu lahko katera koli stran pošlje podatke kadar koli in taki podatki se pošljejo v / iz lupine ali ukaza na strani strežnika in uporabniškega terminala na strani odjemalca.

Ko se uporabniški program konča in vsi zaprti X11 in druge povezave so zaprti, strežnik pošlje odjemalcu stanje ukaza in oba strani zapustita.

sshd se lahko konfigurira z uporabo ukazne vrstice ali konfiguracijske datoteke. Možnosti ukazne vrstice preglasijo vrednosti, določene v konfiguracijski datoteki.

sshd preusmeri svojo konfiguracijsko datoteko, ko prejme signal za pomikanje , SIGHUP, tako da se izvrši s svojim imenom, tj. / usr / sbin / sshd

Možnosti so naslednje:

-b bitov

Določi število bitov v strežniškem ključu različice 1 z različnim protokolom (privzeto 768).

-d

Način odpravljanja napak. Strežnik pošilja verbose izhodno napako v sistemski dnevnik in se ne postavlja v ozadje. Strežnik tudi ne bo deloval in bo obdelal samo eno povezavo. Ta možnost je namenjena samo odpravljanju napak pri strežniku. Več možnosti -d povečuje raven razhroščevanja. Najvišja je 3.

-e

Ko je ta možnost podana, bo sshd izhodni izhod pošiljal v standardno napako namesto v sistemski dnevnik.

-f configuration_file

Določi ime konfiguracijske datoteke. Privzeto je / etc / ssh / sshd_config sshd zavrne začetek, če ni konfiguracijske datoteke.

-g login_grace_time

Daje strankam dovolj časa za preverjanje pristnosti (privzeto 120 sekund). Če stranka v teh toliko sekundah ne preveri pristnosti uporabnika, se strežnik odklopi in izstopi. Vrednost nič pomeni nobeno omejitev.

-h host_key_file

Določa datoteko, iz katere se prebere ključ gostitelja. To možnost je treba navesti, če se sshd ne izvaja kot root (običajne datoteke ključa gostitelja običajno ne morejo biti berljive kdorkoli, temveč root). Privzeta vrednost je / etc / ssh / ssh_host_key za različico protokola 1 in / etc / ssh / ssh_host_rsa_key in / etc / ssh / ssh_host_dsa_key za različico protokola 2. Možno je imeti več datotek ključev gostitelja za različne različice protokola in ključa gostitelja algoritmi.

-jaz

Določa, da je sshd zagnan iz inetd. sshd se običajno ne izvaja iz inetd, ker mora ustvariti ključ strežnika, preden se lahko odzove na odjemalca, kar lahko traja deset sekund. Stranke bi morali počakati predolgo, če je bil ključ vsakič obnovljen. Vendar z majhnimi velikostmi ključev (npr. 512), ki uporabljajo sshd od inetd, je mogoče izvedljivo.

-k key_gen_time

Določa, kako pogosto se regenerira ključni strežnik za različico protokola 1 (privzeto 3600 sekund ali eno uro). Motenca za regeneracijo ključa dokaj pogosto je, da ključ ni shranjen nikamor in po približno uri postane nemogoče obnoviti ključ za dešifriranje prestreženih komunikacij, tudi če je stroj razpokan ali fizično zasežen. Vrednost nič pomeni, da se ključ ne bo nikoli obnovil.

-o možnost

Uporabi se lahko za prikaz možnosti v obliki, ki se uporablja v konfiguracijski datoteki. To je uporabno za določanje možnosti, za katere ni ločene zastavice ukazne vrstice.

-p pristanišče

Določa vrata, na katerih strežnik posluša povezave (privzeto 22). Dovoljene so več možnosti vrat. Pristanišča, določena v konfiguracijski datoteki, se prezrejo, ko je določena vrata za ukazno vrstico.

-q

Tihi način. V sistemski dnevnik ni poslano nič. Običajno sta prijavljeni začetek, preverjanje pristnosti in prekinitev vsake povezave.

-t

Testni način. Preverite samo veljavnost konfiguracijske datoteke in razumnost ključev. To je uporabno za zanesljivo posodobitev sshd, ker se lahko spremenijo možnosti konfiguracije.

-u len

Ta možnost se uporablja za določitev velikosti polja v strukturi utmp, ki ima ime oddaljenega gostitelja. Če je razrešeno ime gostitelja daljše od len, se namesto tega uporabi decimalna pikčasta vrednost. To omogoča gostiteljem z zelo dolgimi imeni gostiteljev, ki prelivajo to polje, da so še vedno enolično prepoznani. Določanje - u0 označuje, da je treba v datoteko utmp vstaviti samo pikčaste decimalne naslove. - u0 se uporablja tudi za preprečevanje sshd zahtev za DNS, razen če to zahteva mehanizem ali konfiguracijo za preverjanje pristnosti. Mehanizmi za preverjanje pristnosti, ki morda zahtevajo DNS, vključujejo RhostsAuthentication RhostsRSAAuthentication HostbasedAuthentication in z uporabo možnosti = iz seznama vzorcev v datoteki s ključi. Možnosti konfiguracije, ki zahtevajo DNS, vključujejo uporabo USER @ HOST vzorec v AllowUsers ali DenyUsers

-D

Ko je ta možnost podana, sshd ne bo ločil in ne bo postal demon. To omogoča enostavno spremljanje sshd

-4

Prisili sshd, da uporablja samo naslove IPv4.

-6

Prisili sshd, da uporablja samo naslove IPv6.

Konfiguracijska datoteka

sshd bere konfiguracijske podatke iz / etc / ssh / sshd_config (ali datoteke, ki je podana v - f v ukazni vrstici). Oblika datoteke in možnosti konfiguracije so opisane v sshd_config5.

Postopek prijave

Ko se uporabnik uspešno prijavi, sshd naredi naslednje:

  1. Če je prijavo na tty in noben ukaz ni naveden, natisne zadnji čas prijave in / etc / motd (razen če to ni preprečeno v konfiguracijski datoteki ali $ HOME / .hushlogin si oglejte razdelek Sx FILES).
  2. Če je prijavo na tty, zapišite prijavni čas.
  3. Preveri / etc / nologin, če obstaja, natisne vsebino in konča (razen če root).
  4. Spremembe, ki se izvajajo z običajnimi uporabniškimi pravicami.
  5. Nastavi osnovno okolje.
  6. Bere $ HOME / .ssh / okolje, če obstaja, uporabniki pa lahko spremenijo svoje okolje. Oglejte si možnost PermitUserEnvironment v sshd_config5.
  7. Spremembe domačega imenika uporabnika.
  8. Če $ HOME / .ssh / rc obstaja, ga zažene; drugače, če obstaja / etc / ssh / sshrc, teče; drugače teče xauth. Datoteke `` rc '' dobijo X11 protokol za preverjanje pristnosti in piškotek v standardnem vhodu.
  9. Zažene uporabnikovo lupino ali ukaz.

Format datoteke Authorized_Keys

$ HOME / .ssh / authorized_keys je privzeta datoteka, v kateri so navedeni javni ključi, ki so dovoljeni za preverjanje pristnosti RSA v protokolu različice 1 in za overjanje javnega ključa (PubkeyAuthentication) v različici protokola 2. AuthorizedKeysFile se lahko uporabi za določitev alternativne datoteke.

Vsaka vrstica datoteke vsebuje en ključ (prazne vrstice in vrstice, ki se začnejo s »#«, se kot pripombe prezrejo). Vsak javni ključ RSA je sestavljen iz naslednjih polj, ločenih s presledki: opcije, bits, exponent, modul, komentar. Vsaka javna ključna različica različice 2 je sestavljena iz: možnosti, ključa, kodiranega ključa base64, komentarja. Polje možnosti je neobvezno; njegova prisotnost določi, ali se vrstica začne s številko ali ne (polje z možnostmi se nikoli ne začne s številko). Polja bita, prikazovalnika, modula in komentarja dajo ključ RSA za protokol različico 1; polje za komentarje se ne uporablja za vse (vendar je lahko uporabniku primerno, da identificira ključ). Za protokol različico 2 je ključna tipka `` ssh-dss '' ali ,, ssh-rsa ''

Upoštevajte, da so vrstice v tej datoteki navadno več sto bajtov (zaradi velikosti kodiranja javnega ključa). Ne želite jih vpisati; Namesto tega kopirajte datoteko id.pdf id_dsa.pub ali datoteko id_rsa.pub in jo uredite.

sshd uveljavi najmanjšo velikost modulov ključa RSA za protokol 1 in protokol 2 ključi 768 bitov.

Možnosti (če so prisotne) so sestavljene iz specifikacij možnosti, ki jih ločite z vejico. Noben prostor ni dovoljen, razen v dvojnih narekovajih. Podprte so naslednje specifikacije opcije (upoštevajte, da so ključne besede z možnostmi neobčutljive na velikost):

iz = vzorčni seznam

Določa, da mora biti poleg javnega ključa avtentikacija kanonsko ime oddaljenega gostitelja prisotna na seznamu vzorcev, ločenih z vejicami (»*« in »?« Se uporabljajo kot nadomestne znake). Seznam lahko vsebuje tudi vzorce, ki so jih negirali, tako da jih predfiksirate z `! ' ; če se kanonsko ime gostitelja ujema z negiranim vzorcem, ključ ni sprejet. Namen te možnosti je po izbiri povečati varnost: avtentikacija javnega ključa sama po sebi ne zaupa omrežju ali imenskim strežnikom ali karkoli (ampak ključu); vendar, če nekdo nekako ukrade ključ, lahko ključ od vsiljivca vpiše iz vsega sveta. Ta dodatna možnost otežuje uporabo ukradenega ključa (poleg ključev je treba ogrožati imena in / ali usmerjevalnike).

ukaz = ukaz

Določi, da se ukaz izvaja, kadar koli se ta ključ uporablja za preverjanje pristnosti. Ukaz, ki ga dobi uporabnik (če obstaja), je prezrt. Ukaz se izvaja na pty, če odjemalec zahteva pty; sicer se izvaja brez tty. Če potrebujete 8-bitni čist kanal, ne smete zahtevati pty ali bi morali navesti nobenega pty. V ukazu lahko vnesete citat, tako da ga navedete s poševnico. Ta možnost je lahko koristna za omejitev določenih javnih ključev za izvajanje samo določenega postopka. Primer je lahko ključ, ki omogoča oddaljeno varnostno kopiranje, vendar nič drugega. Upoštevajte, da lahko stranka določi posredovanje TCP / IP in / ali X11, razen če je izrecno prepovedana. Upoštevajte, da se ta možnost uporablja za izvajanje shell, ukaza ali podsistema.

okolje = NAME = vrednost

Določa, da se niz, ko se prijavite s tem ključem, dodate v okolje. Okoljske spremenljivke na ta način preglasijo druge privzete vrednosti okolja. Dovoljene so več možnosti te vrste. Obdelava okolja je privzeto onemogočena in se nadzoruje prek možnosti PermitUserEnvironment . Ta možnost je samodejno onemogočena, če je omogočen UseLogin .

no-port-forwarding

Prepove TCP / IP posredovanje, ko se ta ključ uporablja za preverjanje pristnosti. Vsaka prošnja za pristanek, ki jo izvede stranka, bo vrnila napako. To se lahko uporabi, npr. V zvezi z ukazno možnostjo.

no-X11-posredovanje

Prepove posredovanje X11, ko se ta ključ uporablja za preverjanje pristnosti. Vsaka X11 zahtevka za napravo stranke bo vrnila napako.

brez posredništva

Prepove posredovanje posrednika za preverjanje pristnosti, ko se ta ključ uporablja za preverjanje pristnosti.

no-pty

Prepreči dodelitev tty (zahtevek za dodelitev pty ne bo uspešen).

permitopen = gostitelj: pristanišče

Omejite lokalno preusmeritev vrat ssh -L, tako da se lahko poveže samo z določenim gostiteljem in vratom. Naslovi IPv6 lahko podate z alternativno sintakso: gostitelj / vrata Več možnosti dovoljenj je dovoljeno uporabiti ločeno z vejicami. Ujemanje vzorcev se ne opravi za podane domene, morajo biti dobesedne domene ali naslovi.

Primeri

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

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

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

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

Format datoteke Ssh_Known_Hosts

Datoteke / etc / ssh / ssh_known_hosts in $ HOME / .ssh / known_hosts vsebujejo javne gostiteljske ključe za vse znane gostitelje. Globalno datoteko mora pripraviti skrbnik (neobvezno), datoteka za uporabnika pa se samodejno vzdržuje: vsakič, ko se uporabnik poveže od neznanega gostitelja, je njegov ključ dodan v datoteko za uporabnika.

Vsaka vrstica v teh datotekah vsebuje naslednja polja: imena gostiteljev, bita, eksponent, modul, komentar. Polja so ločena s presledki.

Imena gostiteljev sta seznam vzorcev, ločenih z vejicami (»*« in »?« Delujejo kot nadomestni znaki); vsak vzorec pa se ujema s kanonskim imenom gostitelja (pri preverjanju pristnosti odjemalca) ali zoper uporabniško ime (pri preverjanju pristnosti strežnika). Pred vzorcem lahko pred tem tudi "!" da se navede negacija: če se ime gostitelja ujema z negiranim vzorcem, se ne sprejme (v tej vrstici), tudi če se ujema z drugim vzorcem v vrstici.

Bitov, eksponenta in modula se vzamejo neposredno iz ključa gostitelja RSA; jih je mogoče dobiti, npr. iz /etc/ssh/ssh_host_key.pub Polje poljubnih komentarjev se nadaljuje do konca vrstice in se ne uporablja.

Vrstice, ki se začnejo z `# 'in prazne vrstice, se kot pripombe ne upoštevajo.

Pri preverjanju pristnosti gostitelja se potrdi pristnost, če ima ustrezna vrstica ustrezen ključ. Tako je dovoljeno (vendar ne priporočljivo) imeti več vrstic ali različnih ključev gostiteljev za ista imena. To se bo neizogibno zgodilo, ko se v datoteko dajo kratke oblike imen gostiteljev iz različnih domen. Možno je, da datoteke vsebujejo nasprotujoče si informacije; overjanje je sprejeto, če so veljavne informacije mogoče najti iz poljubne datoteke.

Upoštevajte, da so vrstice v teh datotekah običajno na stotine znakov in zagotovo ne želite ročno vnašati ključev gostitelja. Namesto, jih ustvarite s skriptom ali z /etc/ssh/ssh_host_key.pub in dodajte imena gostiteljev na sprednji strani.

Primeri

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

Poglej tudi

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 "Arhitektura protokola SSH" osnutek-ietf-secsh-arhitektura-12.txt januar 2002 delo v teku material

M. Friedl N. Provos WA Simpson "Izmenjava skupine Diffie-Hellman za SSH protokol za prometni sloj" osnutek-ietf-secsh-dh-group-exchange-02.txt januar 2002 delo v teku material

Pomembno: Uporabite ukaz man ( % man ), da vidite, kako se na vašem računalniku uporablja ukaz.