Linux / Unix naredba: sshd

Ime

sshd - OpenSSH SSH daemon

Sinopsis

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

Opis

sshd (SSH Daemon) je program daemon za ssh (1). Zajedno ovi programi zamenjuju rlogin i rsh , i obezbediti sigurne šifrovane komunikacije između dva nepoverena domaćina preko nesigurne mreže. Programi su namijenjeni da budu što jednostavniji za instalaciju i korištenje.

sshd je demon koji sluša veze sa klijentima. Obično se pokreće prilikom pokretanja iz / etc / rc Za svaku dolaznu vezu forksuje novi demon. Odgovarajući demoni rukuju razmjenom ključeva, šifriranjem, autentifikacijom, izvršavanjem komandi i razmjenom podataka. Ova implementacija sshd podržava i protokol SSH verzija 1 i 2 istovremeno.

SSH protokol Verzija 1

Svaki host ima RSA ključ specifičan za host (obično 1024 bita) koji se koristi za identifikaciju hosta. Pored toga, kada se pokrene demon, generiše se serverski RSA ključ (obično 768 bita). Ovaj ključ se obično regeneriše svakog sata ako se koristi i nikada se ne skladišti na disku.

Kad god klijent spoji demon, odgovara svojim javnim host serverima i serverima. Klijent upoređuje ključ RSA domaćina sa sopstvenom bazom podataka kako bi potvrdio da se to nije promenilo. Klijent zatim generiše 256-bitni slučajni broj. On šifrira ovaj slučajni broj pomoću ključa domaćina i ključa servera i šalje šifrovan broj na server. Obe strane zatim koriste ovaj slučajni broj kao ključ sesije koji se koristi za šifrovanje svih daljih komunikacija u sesiji. Ostatak sesije je šifrovan pomoću konvencionalne šifre, trenutno Blowfish ili 3DES, a 3DES se koristi podrazumevano. Klijent bira algoritam šifrovanja koji će se koristiti od onih koje nudi server.

Zatim server i klijent unose dijalog za potvrdu identiteta. Klijent pokušava autentifikovati sebe koristeći .rhosts autentifikaciju, autentifikaciju .rhosts u kombinaciji s autentifikacijom hosta RSA, autentifikacijom izazova-odgovorom RSA ili autentifikacijom zasnovanom na lozinki .

Autentifikacija Rhosts je obično onemogućena jer je u osnovi nesigurna, ali se može omogućiti u konfiguracionoj datoteci servera ako je to potrebno. Bezbednost sistema nije poboljšana, osim ako su rshd rlogind i rexecd onemogućeni (time potpuno onemogućava rlogin i rsh u mašinu).

SSH protokol Verzija 2

Verzija 2 radi slično: Svaki host ima ključ specifičan za host (RSA ili DSA) koji se koristi za identifikaciju hosta. Međutim, kada se demon pokrene, ne generiše ključ servera. Obezbeđivanje napredovanja obezbeđuje se preko Diffie-Hellman sporazuma o ključu. Ovaj ključni dogovor rezultira ključem za sesije sesije.

Ostatak sesije je šifrovan pomoću simetrične šifre, trenutno 128 bitni AES, Blowfish, 3DES, CAST128, Arcfour, 192 bit AES ili 256 bit AES. Klijent bira algoritam šifrovanja koji će se koristiti od onih koje nudi server. Pored toga, integritet sesije je obezbeđen preko koda za potvrdu identifikacije kriptografske poruke (hmac-sha1 ili hmac-md5).

Verzija protokola 2 pruža korisničku bazu korisnika (PubkeyAuthentication) ili klijent host (HostbasedAuthentication), metodu za potvrđivanje konvencionalne lozinke i metode zasnovane na izazovu.

Izvršenje komandi i prosleđivanje podataka

Ako se klijent uspešno potvrdi autentičnost, unosi se dijalog za pripremu sesije. U ovom trenutku klijent može zatražiti stvari kao što su alokacija pseudo-tty, prosleđivanje X11 veza, prosleđivanje TCP / IP veza ili prosljeđivanje veze za provjeru autentičnosti preko sigurnog kanala.

Konačno, klijent ili zahteva šaku ili izvršenje naredbe. Stranice zatim unose režim sesije. U ovom modu, bilo koja strana može poslati podatke u bilo koje vrijeme, i takvi podaci se prosleđuju u / iz ljuske ili komande na serveru i na korisničkom terminalu na strani klijenta.

Kada se korisnički program prekine i sve prosleđene X11 i druge veze su zatvorene, server šalje status komandnog izlaza klijentu i obe strane izlaze.

sshd se može konfigurisati pomoću opcija komandne linije ili konfiguracione datoteke. Opcije komandne linije preklapaju vrednosti navedene u konfiguracijskoj datoteci.

sshd preimenuje svoju konfiguracijsku datoteku kada primi signal za hangup , SIGHUP izvršavajući se s imenom na kojem je započeo, kao što je / usr / sbin / sshd

Opcije su sledeće:

-b bits

Određuje broj bita u ključu servera verzija 1, verzija 1 (podrazumevano 768).

-d

Debug mod. Server šalje verbose izlaznu grešku u sistemski dnevnik i ne stavlja se u pozadinu. Server takođe neće raditi i samo će procesirati jednu vezu. Ova opcija je namenjena samo za otklanjanje grešaka za server. Višestruke -d opcije povećavaju nivo debagovanja. Maksimalno je 3.

-e

Kada je ova opcija precizirana, sshd će poslati izlaz na standardnu ​​grešku umjesto sistemskog dnevnika.

-f configuration_file

Određuje ime konfiguracione datoteke. Podrazumevana vrednost je / etc / ssh / sshd_config sshd odbija da započne ako ne postoji konfiguraciona datoteka.

-g login_grace_time

Daje vreme za grejs za klijente da se autentičuju (podrazumevano 120 sekundi). Ako klijent ne uspe da potvrdi autentičnost korisnika tokom ovih nekoliko sekundi, server se prekida i izlazi. Vrednost nule ne ukazuje na ograničenje.

-h host_key_file

Određuje datoteku sa koje se čita ključ domaćina. Ova opcija mora biti data ako se sshd ne pokrene kao root (pošto normalne datoteke ključa domaćina obično ne mogu čitati niko osim root). Podrazumevana vrednost je / etc / ssh / ssh_host_key za protokol verzija 1 i / etc / ssh / ssh_host_rsa_key i / etc / ssh / ssh_host_dsa_key za verziju 2. Verzija 2. Moguće je imati više ključeva ključeva domaćina za različite verzije protokola i ključ algoritmi.

-i

Određuje da se sshd pokreće iz inetd. sshd se obično ne pokreće od inetd-a, jer je potrebno generisati ključ servera pre nego što može odgovoriti klijentu, a to može trajati deset sekundi. Klijenti bi morali dugo čekati ako je ključ regenerisan svaki put. Međutim, sa malim veličinama ključeva (npr. 512) pomoću sshd-a od inetd-a može biti izvodljivo.

-k key_gen_time

Određuje koliko često se regeneriše taster servera verzija 1 verzija 1 (podrazumevano 3600 sekundi ili jedan sat). Motivacija za regeneraciju ključa prilično često je da se ključ ne skladišti nigdje, a nakon oko sat vremena, nemoguće je povratiti ključ za dešifrovanje presretnutih komunikacija, čak i ako je mašina puknuta ili fizički oduzeta. Vrednost nule označava da ključ nikada neće biti regenerisan.

-o opcija

Može se koristiti za davanje opcija u formatu koji se koristi u konfiguracionoj datoteki. Ovo je korisno za specifikaciju opcija za koje ne postoji posebna zastavica za naredbu.

-p port

Određuje port na kojem server sluša veze (podrazumevano 22). Dozvoljene su više mogućnosti porta. Portovi navedeni u konfiguracionoj datoteci se ignorišu kada je specificiran port za naredbu.

-q

Tihi režim. Ništa se ne šalje u sistemski dnevnik. Obično je početak, potvrđivanje autentičnosti i prekidanje svake veze evidentiran.

-t

Režim testiranja. Proverite samo ispravnost konfiguracionog fajla i razumljivost ključeva. Ovo je korisno za pouzdano ažuriranje sshd-a, jer se opcije konfiguracije mogu promijeniti.

-u len

Ova opcija se koristi za određivanje veličine polja u strukturi utmp- a koja drži ime udaljenog hosta. Ako je riješeno ime hosta duže od len , umjesto decimalne vrijednosti će se koristiti tačkast decimalna vrijednost. Ovo omogućava domaćinima koja imaju veoma duga imena hostova koja prelaze ovo polje i još uvijek se jedinstveno identifikuju. Određivanje - u0 označava da se u utmp datoteku unose samo tačkane decimalne adrese. - u0 takođe se koristi da spreči sshd da izvodi DNS zahteve, osim ako mehanizam ili konfiguraciju za potvrđivanje to ne zahteva. Mehanizmi provjere autentičnosti koji mogu zahtevati DNS uključuju RhostsAuthentication RhostsRSAAuthentication HostbasedAuthentication i koristeći opciju od = pattern-list u ključnoj datoteci. Opcije konfiguracije koje zahtevaju DNS uključuju korištenje USER @ HOST šema u AllowUsers ili DenyUsers

-D

Kada je ova opcija precizirana, sshd se neće odvojiti i ne postaje demon. Ovo omogućava jednostavno praćenje sshd-a

-4

Sila sshd koristi samo IPv4 adrese.

-6

Napadi sshd koriste samo IPv6 adrese.

Konfiguracijska datoteka

sshd čita podatke konfiguracije iz / etc / ssh / sshd_config (ili fajl specificiran sa - f na komandnoj liniji). Format datoteke i opcije konfiguracije opisani su u sshd_config5.

Proces prijavljivanja

Kada se korisnik uspešno prijavljuje, sshd uradi sledeće:

  1. Ako je login na tty-u, a nijedna komanda nije specificirana, odštampa se poslednje vreme za prijavljivanje i / etc / motd (osim ako je sprečeno u konfiguracionoj datoteki ili $ HOME / .hushlogin pogledajte odeljak Sx FILES).
  2. Ako je prijavljivanje na tty, zabilježite vrijeme prijavljivanja.
  3. Proverava / etc / nologin ako postoji, odštampava sadržaj i izlazi (osim ako nije root).
  4. Promjene koje treba pokrenuti sa normalnim korisničkim privilegijama.
  5. Podešava osnovno okruženje.
  6. Čita $ HOME / .ssh / okolinu ako postoji i korisnicima je dozvoljeno da promijene svoje okruženje. Pogledajte opciju PermitUserEnvironment u sshd_config5.
  7. Promjene kućnog direktorijuma korisnika.
  8. Ako $ HOME / .ssh / rc postoji, pokreće ga; i drugo ako / etc / ssh / sshrc postoji, pokreće ga; u suprotnom radi xauth. Datotekama `` rc '' dobijaju protokol X11 provjere autentičnosti i kolačiće u standardnom ulazu.
  9. Pokreće korisničku školu ili komandu.

Authorized_Keys File Format

$ HOME / .ssh / authorized_keys je podrazumevana datoteka koja sadrži javne ključeve koji su dozvoljeni za autentifikaciju RSA u verziji verzija 1 i za autentifikaciju javnih ključeva (PubkeyAuthentication) u verziji 2. AutorizovaniKeysFile se može koristiti za određivanje alternativne datoteke.

Svaka linija datoteke sadrži jedan ključ (prazne linije i linije počevši sa `# 'su ignorisane kao komentari). Svaki RSA javni ključ se sastoji od sljedećih polja, odvojenih prostama: opcije, bitovi, eksponenti, modul, komentar. Svaki javni ključ za svaku verziju 2 se sastoji od: opcija, ključa, ključnog kodnog ključa, komentara. Polje opcija je opciono; njegovo prisustvo određuje se da li linija počinje sa brojem ili ne (polje za opcije nikada ne počinje brojem). Polja bitova, eksponenta, modula i komentara daju RSA ključ za protokol verzija 1; polje za komentar se ne koristi za bilo šta (ali može biti korisno da korisnik identifikuje ključ). Za protokol 2 verzija je `` ssh-dss '' ili `` ssh-rsa ''

Imajte na umu da su redovi u ovoj datoteci obično duga nekoliko stotina bajtova (zbog veličine javnog ključa kodiranja). Ne želite da ih upišete; umesto toga, kopirajte identitet.pub id_dsa.pub ili id_rsa.pub datoteku i uredite je.

sshd primenjuje minimalnu veličinu modula RSA ključa za protokol 1 i protokol 2 ključa od 768 bita.

Opcije (ako postoje) sastoje se od specifikacija opcije koje su odvojene zarezom. Nijedan prostor nije dozvoljen, osim u dvostrukim navodnicima. Podržane su sledeće opcije za specifikacije (obratite pažnju na to da su ključne reči opcija neosetljive):

iz = obrazac-liste

Navodi da pored autentičnosti javnog ključa, kanonski naziv udaljenog hosta mora biti prisutan na listi šablona koji su odvojeni zarezima (`* 'i`?' Služe kao džoker kartice). Lista takođe može sadržati obrasce negirane prefiksom sa `! ' ; ako kanonsko ime hosta odgovara negiranom obrazcu, ključ se ne prihvata. Svrha ove opcije je opcionalno povećati sigurnost: autentikacija javnog ključa sama po sebi ne veruje mrežama ili serverima imena ili bilo čemu (osim ključa); međutim, ako neko nekako ukrade ključ, ključ dozvoljava uljez da se prijavljuje sa bilo čega na svijetu. Ova dodatna mogućnost otežava korištenje ukradenog ključa (serveri za imena i / ili ruteri bi trebali biti kompromitovani pored samo ključa).

command = komanda

Određuje da se komanda izvršava svaki put kada se ovaj ključ koristi za potvrdu identiteta. Komanda koju korisnik isporučuje (ako postoji) se zanemaruje. Komanda se pokreće na pty ako klijent zahteva pty; u suprotnom se vodi bez tty. Ako je potreban 8-bitni čist kanal, ne treba se tražiti pty ili trebali se navesti no-pty. U komandu se može uneti citat citirajući ga sa kosom sapom. Ova opcija bi mogla biti korisna za ograničavanje određenih javnih ključeva za obavljanje samo određene operacije. Primer može biti ključ koji dozvoljava daljinske sigurnosne kopije, ali ništa drugo. Imajte na umu da klijent može odrediti TCP / IP i / ili X11 prosleđivanje, ukoliko nisu eksplicitno zabranjeni. Imajte na umu da se ova opcija odnosi na izvršavanje shell-a, naredbe ili podsistema.

okruženje = NAME = vrijednost

Određuje da se string dodati u okruženje kada se prijavljuje pomoću ovog ključa. Varijable okoline postavljaju na ovaj način nadmašuju druge vrijednosti uobičajenog okruženja. Dozvoljene su više opcija ovog tipa. Obrada životne sredine je podrazumevano onemogućena i kontroliše se preko opcije PermitUserEnvironment . Ova opcija je automatski onemogućena ako je UseLogin omogućen.

no-port-forwarding

Zabranjuje TCP / IP prosljeđivanje kada se ovaj ključ koristi za potvrdu identiteta. Svi klijentski zahtevi klijenta će vratiti grešku. Ovo se može koristiti, npr. U vezi sa komandnom opcijom.

no-X11-prosleđivanje

Zabranjuje X11 prosleđivanje kada se ovaj ključ koristi za potvrdu identiteta. Svaki klijentski zahtev X11 će vratiti grešku.

no-agent-forwarding

Zabranjuje prosleđivanje posrednika za provjeru autentičnosti kada se ovaj ključ koristi za potvrdu identiteta.

no-pty

Sprečava alokaciju tty-a (zahtev za dodeljivanje pty-a neće uspjeti).

permitopen = host: port

Ograničite lokalno šifriranje `` ssh -L '' porta tako da se može povezati samo sa navedenim hostom i portom. IPv6 adrese se mogu specificirati s alternativnom sintaksom: host / port Opcije dozvola za više opcija mogu se primjenjivati ​​odvojeno zažama . Nijedno podudaranje uzoraka se ne vrši na navedenim imenima hostova, oni moraju biti doslovni domeni 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", no-pty, no-port-forwarding 1024 33 23 ... 2323 backup.hut.fi

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

Ssh_Known_Hosts File Format

Datoteke / etc / ssh / ssh_known_hosts i $ HOME / .ssh / known_hosts sadrže host javne ključeve za sve poznate hostove. Globalni fajl treba da pripremi administrator (opciono), a datoteka za korisnika se održava automatski: kad god se korisnik povezuje sa nepoznatim hostom, njegov ključ se dodaje u datoteku po korisniku.

Svaka linija u ovim datotekama sadrži sledeća polja: imena domaćina, bitovi, eksponenta, modul, komentar. Polja su odvojena razmacima.

Hostnames su liste šablona odvojenih od zareza ('*' i '?' Deluju kao džemperi); svaki obrazac, pak, odgovara kanonskom imenu domaćina (kada se autentifikuje klijent) ili protiv korisničkog imena (kada se autentikuje server). Obrazcu takođe može prethoditi `! ' da ukazuje na negaciju: ako se ime domaćina podudara sa negiranim uzorkom, nije prihvaćeno (prema toj liniji) čak i ako se uporedi sa drugim obrazcem na liniji.

Bitovi, eksponenta i modul se uzimaju direktno iz ključa RSA domaćina; oni se mogu dobiti, npr. iz /etc/ssh/ssh_host_key.pub Polje opcionalnog komentara nastavlja se do kraja linije i ne koristi se.

Linije koje počinju sa `# 'i prazne linije se ignorišu kao komentari.

Prilikom izvođenja autentičnosti domaćina, potvrda autentičnosti se prihvata ako bilo koja odgovarajuća linija ima odgovarajući ključ. Stoga je dozvoljeno (ali ne preporučuje) da ima nekoliko linija ili različite ključeve domaćina za iste nazive. Ovo će se neizbežno dogoditi kada se kratki oblici imena hosta iz različitih domena stavljaju u datoteku. Moguće je da datoteke sadrže konfliktne informacije; autentikacija se prihvata ako se u bilo kojoj datoteci mogu pronaći validne informacije.

Imajte na umu da su linije u ovim datotekama obično stotine znakova, a definitivno ne želite da ručno unosite ključeve domaćina. Umjesto toga, generišite ih skriptom ili uzimajući /etc/ssh/ssh_host_key.pub i dodavanje imena domaćina na prednjoj strani.

Primjeri

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

Vidi Takođe

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 SSH protokola" draft-ietf-secsh-arhitektura-12.txt januar 2002. radovi u toku materijal

M. Friedl N. Provos WA Simpson "Razmjena grupe Diffie-Hellman za SSH protokol za transportni sloj" draft-ietf-secsh-dh-group-exchange-02.txt Januar 2002. radovi u toku

Važno: Koristite komandu čovjeka ( % čovjek ) da biste videli kako se na vašem računaru koristi komanda.