Linux / Unix naredba: sshd

Ime

sshd - OpenSSH SSH daemon

Sinopsis

[- gigurnosni_gre ] [- h_gif_file ] [- k_ključ_genu ] [- opcija ] [- p luka ] [- len ]

Opis

sshd (SSH Daemon) je program daemona za ssh (1). Zajedno, ti programi zamjenjuju rlogin i rsh , te osigurati sigurna šifrirana komunikacija između dva nepouzdana računala na nesigurnoj mreži. Programi trebaju biti jednostavni za instalaciju i korištenje što je više moguće.

sshd je daemon koji sluša veze s klijentima. Obično se pokreće pri podizanju sustava / etc / rc Za svaku dolaznu vezu traži novi demon. Fokusirani demoni obrađuju ključne razmjene, šifriranje, provjeru autentičnosti, izvršavanje naredbi i razmjenu podataka. Ova implementacija sshd podržava i SSH protokol verzije 1 i 2 istodobno.

SSH verzija protokola 1

Svaki domaćin ima RSA ključ specifičan za domaćin (obično 1024 bita) koji se koristi za identifikaciju domaćina. Osim toga, kada se demon kreće, generira poslužiteljski RSA ključ (obično 768 bita). Ovaj ključ normalno se regenerira svakih sat vremena ako se koristi, i nikada se ne pohranjuje na disku.

Kad god klijent spaja daemon odgovara svojim javnim poslužiteljima i poslužiteljskim ključevima. Klijent uspoređuje RSA ključ glavnog računala s vlastitom bazom podataka kako bi provjerio nije li se promijenio. Klijent zatim stvara 256-bitni slučajni broj. Šifrira taj slučajni broj koristeći i ključ glavnog računala i ključ poslužitelja i šalje šifrirani broj poslužitelju. Obje strane zatim koriste ovaj slučajan broj kao ključ sesije koji se koristi za šifriranje svih daljnjih komunikacija u sesiji. Ostatak sesije šifriran je pomoću konvencionalnog šifriranja, trenutno Blowfish ili 3DES, s kojim se standardno koristi 3DES. Klijent odabire algoritam šifriranja za korištenje od onih koje nudi poslužitelj.

Zatim, poslužitelj i klijent unesite dijalog za provjeru autentičnosti. Klijent se pokušava autentificirati pomoću autentifikacije .hosts, .hosts autentifikacije u kombinaciji s autentifikacijom RSA autentičnosti, autentifikacijom RSA autentifikacijom izazovom ili autentifikacijom zaporke .

Autentifikacija Rhosts inače je onemogućena jer je u osnovi nesigurna, no može se omogućiti u konfiguracijskoj datoteci poslužitelja ako to želi. Sigurnost sustava nije poboljšana ako rshind rlogind i rexecd nisu onemogućeni (time potpuno onemogućavaju rlogin i rsh u stroj).

Verzija verzije SSH protokola 2

Verzija 2 radi slično: Svaki domaćin ima ključ za specifičnost domaćina (RSA ili DSA) koji se koristi za prepoznavanje domaćina. Međutim, kada daemon započne, ne generira ključ poslužitelja. Prosljeđivanje sigurnosti osigurava se putem ključnog ugovora Diffie-Hellman. Ovaj ključni sporazum rezultira dijeljenim ključem sesije.

Ostatak sesije šifriran je pomoću simetričnog šifriranja, trenutno 128-bitnog AES, Blowfish, 3DES, CAST128, Arcfour, 192-bitnog AES-a ili 256-bitnog AES-a. Klijent odabire algoritam šifriranja za korištenje od onih koje nudi poslužitelj. Dodatno, integritet sesije osigurava se kodom za autentifikaciju kriptografskih poruka (hmac-sha1 ili hmac-md5).

Protokol verzije 2 osigurava metode provjere autentičnosti na temelju javnog ključa (PubkeyAuthentication) ili klijentskog domaćina (HostbasedAuthentication), konvencionalne autentifikacije lozinke i metode temeljene na izazovnim odgovorima.

Izvršenje naredbi i prosljeđivanje podataka

Ako se klijent uspješno autentificira, unosi se dijaloški okvir za pripremu sesije. U ovom trenutku klijent može zatražiti stvari kao što je dodjeljivanje pseudo-tty, prosljeđivanje X11 veza, prosljeđivanje TCP / IP veza ili prosljeđivanje veze autentičnosti preko sigurnog kanala.

Konačno, klijent zahtijeva shell ili izvršenje naredbe. Strane zatim ulaze u način rada sesija. U ovom načinu rada, svaka strana može slati podatke u bilo kojem trenutku, a takvi se podaci prosljeđuju na / iz ljuske ili naredbe na strani poslužitelja i korisnički terminal na strani klijenta.

Kada korisnički program završi i svi proslijeđeni X11 i ostali priključci su zatvoreni, poslužitelj šalje status naredbe izlazu klijentu i obje strane izađu.

sshd se može konfigurirati pomoću opcija naredbenog retka ili konfiguracijske datoteke. Opcije naredbene linije nadjačavaju vrijednosti specificirane u konfiguracijskoj datoteci.

sshd otkriva svoju konfiguracijsku datoteku kada prima signal hangup, SIGHUP se izvršava s imenom koje je započeo kao, odnosno / usr / sbin / sshd

Opcije su sljedeće:

-b bitova

Određuje broj bitova u ključu poslužitelja verzije proturječne verzije 1 (zadano 768).

-D

Način otklanjanja pogrešaka. Poslužitelj šalje verbalno izlazne pogreške u zapisnik sustava i ne stavlja se u pozadinu. Poslužitelj također neće raditi i obradit će samo jednu vezu. Ova je opcija namijenjena samo za uklanjanje pogrešaka za poslužitelja. Višestruke opcije -d povećavaju razinu ispravljanja pogrešaka. Maksimalna je 3.

-e

Kada je navedena opcija, sshd će poslati izlaz u standardnu ​​pogrešku umjesto dnevnika sustava.

-f configuration_file

Određuje naziv konfiguracijske datoteke. Zadana postavka je / etc / ssh / sshd_config sshd odbije započeti ako nema konfiguracijske datoteke.

-g login_grace_time

Dati vremena za klijente da autentičnu autentičnost (zadana 120 sekundi). Ako klijent ne uspije autentificirati korisnika u roku od nekoliko sekundi, poslužitelj se odspoji i izlazi. Vrijednost nula ne pokazuje nikakvu granicu.

-h host_key_file

Određuje datoteku iz koje se čita ključ domaćina. Ova se opcija mora dati ako se sshd ne izvodi kao korijen (jer normalne datoteke glavne datoteke obično ne mogu čitati nitko osim roota). Zadana postavka je / etc / ssh / ssh_host_key za verziju protokola 1 i / etc / ssh / ssh_host_rsa_key i / etc / ssh / ssh_host_dsa_key za verziju protokola 2. Moguće je imati više datoteka ključa domaćina za različite verzije protokola i ključ glavnog računala algoritmi.

-i

Određuje da se sshd izvodi iz inetd. sshd se obično ne izvodi iz inetd jer treba generirati ključ poslužitelja prije nego što može odgovoriti klijentu, a to može potrajati desetke sekundi. Klijenti bi trebali predugo čekati ako se ključ svaki put obnavlja. Međutim, s malim ključnim veličinama (npr., 512) može se primijeniti sshd iz inetd-a.

-k key_gen_time

Određuje koliko se često regenerira ključ poslužitelja verzije 1 protustavke (zadana vrijednost 3600 sekundi ili sat). Motivacija za regeneraciju ključa prilično često je da se ključ ne pohranjuje nigdje, a nakon otprilike sat vremena postaje nemoguće vratiti ključ za dešifriranje prisluškivane komunikacije čak i ako je stroj napuknut ili fizički zaplijenjen. Vrijednost nula označava da ključ nikada neće biti obnovljen.

-o opciju

Može se koristiti za davanje opcija u formatu koji se koristi u konfiguracijskoj datoteci. To je korisno za određivanje opcija za koje nema posebne zastavice naredbenog retka.

-p port

Određuje priključak na kojem poslužitelj sluša veze (zadano 22). Dopuštene su mogućnosti višestrukih ulaza. Portovi navedeni u datoteci konfiguracije zanemaruju se kada je naveden port naredbenog retka.

Q

Tihi način rada. Ništa se ne šalje u zapisnik sustava. Obično se zapisuju početak, provjeru autentičnosti i prestanak svake veze.

-t

Način testiranja. Provjerite valjanost konfiguracijske datoteke i razumnost tipki. To je korisno za ažuriranje sshd pouzdano, jer se mogu promijeniti konfiguracijske opcije.

-u len

Ova se opcija koristi za određivanje veličine polja u utmp strukturi koja drži udaljeno ime računala. Ako je riješeno ime računala duže od len, koristit će umjesto decimalne vrijednosti. To omogućuje domaćinima s vrlo dugim nazivima domaćina koji prelijevaju ovo polje da budu jedinstveno identificirani. Određivanje - u0 označava da se samo utorne decimalne adrese stavljaju u utmp datoteku. - u0 se također koristi za sprečavanje sshd iz izrade DNS zahtjeva, osim ako to ne zahtijeva mehanizam ili konfiguracija za provjeru autentičnosti. Mehanizmi za provjeru autentičnosti koji mogu zahtijevati DNS uključuju RhostsAuthentication RhostsRSAAuthentication HostbasedAuthentication i upotrebu opcije od = pattern-list u ključnoj datoteci. Opcije konfiguracije koje zahtijevaju DNS uključuju upotrebu obrasca USER @ HOST u AllowUsers ili DenyUsers

-D

Kada je navedena opcija, sshd se neće odvojiti i neće postati daemon. To omogućuje jednostavno praćenje sshd-a

-4

Snaga sshd koristi samo IPv4 adrese.

-6

Snage sshd koriste samo IPv6 adrese.

Konfiguracijska datoteka

sshd čita konfiguracijske podatke iz / etc / ssh / sshd_config (ili datoteke navedene s - f na naredbenom retku). Format datoteke i opcije konfiguracije opisane su u sshd_config5.

Proces prijave

Kada se korisnik uspješno prijavljuje, sshd čini sljedeće:

  1. Ako je prijava na tty, a nijedna naredba nije specificirana, ispisuje zadnju vremenu prijave i / etc / motd (osim ako nije spriječeno u konfiguracijskoj datoteci ili $ HOME / .hushlogin pogledajte odjeljak SX FILES).
  2. Ako je prijava na tty, vrijeme prijavljivanja zapisa.
  3. Provjerava / etc / nologin ako postoji, ispisuje sadržaj i zatvara (osim root).
  4. Promjene se pokreću s normalnim korisničkim ovlastima.
  5. Postavlja osnovno okruženje.
  6. Čita $ HOME / .ssh / okoliš ako postoji i korisnicima je dopušteno mijenjanje okruženja. Pogledajte opciju PermitUserEnvironment u sshd_config5.
  7. Promjene u korisničkom kućnom imeniku.
  8. Ako postoji $ HOME / .ssh / rc, pokreće ga; drugo ako / etc / ssh / sshrc postoji, pokreće ga; inače radi xauth. `` Rc '' datoteke imaju protokol X11 autentifikacije i kolačić u standardnom unosu.
  9. Pokreće korisničku ljusku ili naredbu.

Format datoteke ovlaštenih_koji

$ HOME / .ssh / authorized_keys zadana je datoteka koja navodi javne ključeve koji su dopušteni za RSA autentifikaciju u verziji protokola 1 i za autentifikaciju javnog ključa (PubkeyAuthentication) u verziji protokola 2. OvlašteniKeysFile može se koristiti za određivanje alternativne datoteke.

Svaka linija datoteke sadrži jedan ključ (prazne crte i retke s oznakom "#" zanemaruju se kao komentari). Svaki RSA javni ključ sastoji se od sljedećih polja, odvojeni razmakom: opcije, bitovi, eksponent, modul, komentar. Svaki javni ključ verzije protokola 2 sastoji se od: opcija, ključeva, ključa kodiranog u bazu 64, komentara. Polje opcija nije obavezno; njegova prisutnost određuje se hoće li linija započeti s brojem ili ne (polje opcija nikad ne počinje s brojem). Polja bitova, eksponenata, modula i polja komentara daju RSA ključ za verziju protokola 1; polje komentara se ne koristi za bilo što (ali korisnicima može biti pogodan za prepoznavanje ključa). Za verziju protokola 2 tipka je `` ssh-dss '' ili `` ssh-rsa ''

Napominjemo da redci u ovoj datoteci obično traju nekoliko stotina bajtova (zbog veličine kodiranja javnog ključa). Ne želite ih upisati; Umjesto toga, kopirajte identitet.pub id_dsa.pub ili datoteku id_rsa.pub i uredite ga.

sshd provodi minimalnu veličinu modula ključa RSA za protokole 1 i tipke protokola 2 768 bita.

Opcije (ako postoje) sastoje se od specifikacija opcija razdvojenih zarezom. Nema dopuštenih razmaka, osim u dvostrukim navodnicima. Podržane su sljedeće specifikacije opcija (imajte na umu da ključne riječi opcija nisu osjetljive na veličinu slova):

s = uzorak-liste

Određuje da uz vjerodostojnost javnog ključa kanonski naziv daljinskog računala mora biti prisutan u popisu uzoraka odijeljen zarezima ("*" i "?" Služe kao zamjenski znakovi). Popis također može sadržavati obrasce koji su negirali prefiksajući ih s "!" ; ako kanonski naziv domaćin odgovara negiranom uzorku, ključ nije prihvaćen. Svrha ove opcije je opcionalno povećanje sigurnosti: autentikacija javnog ključa sama po sebi ne pouzdaju se u mrežu ili poslužitelje imena ili bilo što (ali ključ); međutim, ako netko nekako ukrade ključ, ključ dopušta uljezu da se prijavljuje s bilo kojeg mjesta na svijetu. Ova dodatna opcija otežava upotrebu ukradenog ključa (imena poslužitelja i / ili usmjerivači trebaju biti ugrožena osim samo ključem).

Naredba = naredba

Određuje da se naredba izvodi svaki put kada se taj ključ koristi za provjeru autentičnosti. Naredba koju dobije korisnik (ako postoji) je zanemarena. Naredba se izvodi na pty ako klijent zatraži pty; inače se izvodi bez tty. Ako je potrebno 8-bitni čisti kanal, ne smije se zatražiti pty ili bi trebao odrediti ne-pty . Nalog može biti uključen u citat tako da ga citira obrnutim redoslijedom. Ova bi opcija mogla biti korisna za ograničavanje određenih javnih ključeva za izvršavanje određene operacije. Primjer bi mogao biti ključ koji omogućuje udaljenu sigurnosnu kopiju, ali ništa drugo. Imajte na umu da klijent može odrediti TCP / IP i / ili X11 prosljeđivanje osim ako su izričito zabranjeni. Imajte na umu da se ova opcija odnosi na izvršavanje ljuske, naredbe ili podsustava.

okolina = NAME = vrijednost

Određuje da se niz koji se dodaje u okoliš pri prijavi pomoću ove tipke. Varijable okruženja postavljene na ovaj način nadjačavaju druge zadane vrijednosti okruženja. Dopuštene su različite opcije ove vrste. Obrada okoliša je onemogućena prema zadanim postavkama i kontrolirana je pomoću opcije PermitUserEnvironment . Ova opcija automatski se onemogućuje ako je omogućena UseLogin .

bez luka prosljeđivanje

Zabranjuje prosljeđivanje TCP / IP kada se taj ključ koristi za provjeru autentičnosti. Bilo koji zahtjev klijenta za naplatu prema naprijed vratit će pogrešku. To se može koristiti, npr., U vezi s opcijom naredbe .

ne-X11-prosljeđivanje

Zabranjuje prosljeđivanje X11 kada se taj ključ koristi za provjeru autentičnosti. Svaka X11 zahtjev za naprijed od strane klijenta vratit će pogrešku.

ne-agent-prosljeđivanje

Zabranjuje prosljeđivanje agenata za provjeru autentičnosti kada se taj ključ koristi za provjeru autentičnosti.

bez PTY

Sprječava tty dodjelu (zahtjev za dodjeljivanje pty neće uspjeti).

permitopen = Domaćin: luka

Ograničite lokalni `` ssh-L '' port prosljeđivanje tako da se može povezati samo s navedenim hostom i portom. IPv6 adrese se mogu odrediti alternativnom sintaksom: host / port Mnogobrojne opcije dozvole mogu se primijeniti odvojene zarezima. Nijedan podudaranje uzorka nije izveden na navedenim nazivima računala, već moraju biti doslovne domene ili adrese.

Primjeri

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

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

command = "dump / home", bez 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 format datoteke

Datoteke / etc / ssh / ssh_known_hosts i $ HOME / .ssh / known_hosts sadrže javne ključeve domaćina za sve poznate hostove. Globalnu datoteku treba pripremiti administrator (opcionalno), a datoteka po korisniku automatski se održava: svaki put kad se korisnik poveže s nepoznatim hostom, njegov ključ dodaje se u datoteku po korisniku.

Svaki redak u tim datotekama sadrži sljedeća polja: nazivi hosta, bitovi, eksponent, modul, komentar. Polja su odvojena razmakom.

Nazivi računala su popis uzoraka odvojenih zarezima ('*' i '?' Djeluju kao zamjenski znakovi); svaki se obrazac, zauzvrat, podudara s kanonskim nazivom glavnog računala (prilikom autentifikacije klijenta) ili s korisničkim imenom (prilikom autentifikacije poslužitelja). Predmet može također prethoditi "!" za označavanje negacije: ako naziv domaćin odgovara negiranom obrascu, ona se ne prihvaća (po tom retku) čak i ako se podudara s drugim uzorkom na retku.

Bitovi, eksponent i modul se uzimaju izravno iz RSA ključa domaćina; oni se mogu dobiti, npr., iz / etc / ssh / ssh_host_key.pub Opcionalno polje komentara nastavlja se do kraja retka i ne koristi se.

Redci koji počinju s "#" i praznih redaka zanemaruju se kao komentari.

Pri provjeri autentičnosti domaćina, provjera autentičnosti prihvaćena je ako odgovarajuća crta ima odgovarajući ključ. Stoga je dopušteno (ali ne preporučljivo) imati nekoliko redaka ili različitih ključeva domaćina za ista imena. To se neizbježno događa kada se u datoteku prenesu kratki oblici naziva domaćina iz različitih domena. Moguće je da datoteke sadrže proturječne informacije; autentifikacija se prihvaća ako valjani podaci mogu biti pronađeni iz bilo koje datoteke.

Imajte na umu da linije u tim datotekama obično traju stotine znakova, a vi definitivno ne želite tipkati tipke domaćina ručno. Umjesto toga, generirati ih skriptom ili uzimanjem /etc/ssh/ssh_host_key.pub i dodavanjem naziva hosta ispred.

Primjeri

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

Vidi također

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

T. Ylonen T. Kivinen M. Saarinen T. Rinne S. Lehtinen "Arhitektura SSH protokola" draft-ietf-secsh-arhitektura-12.txt Siječanj 2002 rad u tijeku materijala

M. Friedl N. Provos WA Simpson "Razmjena Diffie-Hellman grupe za protokol SSH transportnog sloja" draft-ietf-secsh-dh-group-exchange-02.txt Siječanj 2002 rad u tijeku materijala

Važno: Upotrijebite naredbu čovjek ( % man ) kako biste vidjeli kako se naredba koristi na vašem računalu.