Linux / Unix kommando: sshd

Namme

sshd - OpenSSH SSH-daemon

Synopsis

sshd [- deiqtD46 ] [- b bits ] [- f config_file ] [- g login_grace_time ] [- h host_key_file ] [- k key_gen_time ] [- o- opsje ] [- p- poarte ] [ -e len ]

Beskriuwing

sshd (SSH-Daemon) is it daemonprogramma foar ssh (1). Mei-inoar ferfolje dizze programma's rlogin en rsh , en soargje foar feilige fersifere kommunikaasje tusken twa ûntroukte hosts by in ûnfeilige netwurk. De programma's binne bedoeld om sa maklik te ynstallearjen en te brûken as mooglik.

sshd is de daemon dy't harket nei ferbiningen fan kliïnten. It wurdt normaal begon at boot fan / etc / rc It forks in nije daemon foar elke ynkommende ferbining. De fergese daemons behannelje de kaaiferkearing, fersifering, ferifikaasje, kommandoútfiering, en dataferwizer. Dizze útfiering fan sshd stipet sawol SSH-protokol ferzje 1 en 2 tagelyk.

SSH-protokol ferzje 1

Elke host hat in host-spesifike RSA-kaai (normaal 1024 bits) brûkt om de host te identifisearjen. Dêrnei generearret it as de daemon begjint, it generearret in server RSA-kaai (normaal 768 bits). Dizze kaai is normaal alle kearen werjûn as it brûkt is, en wurdt nea op skiif bewarre.

Wannear in kliïnt befettet de daemon te reagearjen mei syn publike host en serverkeulers. De kliïnt ferwiist de RSA-host-kaai tsjin syn eigen databank om te ferifiearjen dat it net wizige is. De kliïnt generearret dan in 256-bit-random nûmer. It fersiferet dizze willekeurige nûmer troch te brûken as de host-kaai en de tsjinner-kaai en stjoert it fersifere nûmer oan de tsjinner. Beide kanten brûke dan it willekeurige nûmer as sesje-kaai dat brûkt wurdt om alle fierdere kommunikaasje yn 'e sesje te fersiferjen. De rest fan 'e sesje wurdt fersifere mei gebrûk fan in konvinsjonele sifer, op it stuit Blowfish of 3DES, mei 3DES wurde standert brûkt. De kliïnt selektearret it fersiferingsalgoritme om gebrûk te meitsjen fan dyjingen dy't de server oanbean.

Dêrnei kinne de tsjinner en de kliïnt in autentikaasjebelied ynfiere. De client besiket om te authentifikaasje mei helpen .rhosts-ferifikaasje, .rhosts-ferifikaasje kombinearre mei RSA-host-autentikaasje, RSA-útfiere-antwurdautifikaasje, of wachtwurd-basearre ferifikaasje .

Rhosts-autentikaasje is normaal útskeakele omdat it grûnwize net feilich is, mar kinne jo yn de server-konfiguraasjetriem as jo wolle. Systemfeiligens wurdt net ferbettere, behalve rshd rlogind en rexecd binne útskeakele (sa folslein rlogin en rsh yn 'e masine).

SSH-protokol ferzje 2

Ferzje 2 wurket lykwols: elke host hat in host-spesifike kaai (RSA of DSA) brûkt om de host te identifisearjen. Wannear't de daemon begjint, kin it in server-kaai net generearje. Foardere feiligens wurdt fersoarge troch in kaartsje fan Diffie-Hellman. Dit kaai-oerienkomst bringt in dielde sesje-kaai.

De rest fan 'e sesje wurdt fersifere mei in symmetryske sifer, op dit stuit 128 bit AES, Blowfish, 3DES, CAST128, Arcfour, 192 bit AES, of 256 bit AES. De kliïnt selektearret it fersiferingsalgoritme om gebrûk te meitsjen fan dyjingen dy't de server oanbean. Dêrneist wurdt sesje-yntegriteit oanbean troch in kryptografyske berjochtautifikaasje-koade (hmac-sha1 of hmac-md5).

Protokol-ferzje 2 leveret in public key-basearre brûker (PubkeyAuthentication) of client-host (HostbasedAuthentication) -autifikaasje-metoade, konvinsjonele wachtwurd-ferifikaasje, en útdaging-basearre metoaden.

Kommando útfier en dataferwizing

As de client sukses authentisearret, wurdt in dialooch foar it opstellen fan 'e sesje ynfierd. Op dit momint kin de client dingen besykje as it te foegjen fan in pseudo-tty, de X11-ferbiningen te ferfarskjen, TCP / IP-ferbining te ferfarskjen, of de ferifikaasje-agent-ferbining oer it feilige kanaal trochjaan.

Uteinlik freget de kliune in shell of útfiering fan in kommando. De siden ynfiere dan sesje-modus. Yn dizze modus kinne elke side gegevens op elk momint stjoere, en soksoarte gegevens wurde nei / fan it shell of kommando op 'e server side, en it brûker-terminal op' e klant side.

As it gebrûkersprogramma beëinige en alle foardielde X11 en oare ferbiningen binne sluten, stjoert de tsjinner de kommandoútstatusstatus nei de kliïnt en beide kanten út.

sshd kin ynsteld wurde troch kommando-line-opsjes of in konfiguraasjetriem. Kommando-line-opsjes ferwiderje wearden dat yn it konfiguraasjetriem bepaald is.

sshd ferfarret syn konfiguraasjetriem as it in hangup-sinjaal ûntfangt, SIGHUP troch útfiere mei de namme dat it begon is as, ie, / usr / sbin / sshd

De opsjes binne sa:

-b bits

Gifft it oantal bits yn de effektive effektive protokolferzje 1 server-toets (standert 768).

-d

Debugmodus. De tsjinner stjoert verbose útbrekkingsútfier nei it systeemprotokol en makket him net yn 'e eftergrûn. De server sil ek wurkje en sil allinich ien ferbining ferwurkje. Dizze opsje is allinne bedoeld foar it debuggen foar de tsjinner. Meardere -jopsjes fergrutsje it debuggingnivo. Maximum is 3.

-e

As dizze opsje ynsteld is, sil sshd de útfier nei it standertflater stjoere ynstee fan it systeemloch .

-f configuration_file

Jout de namme fan it konfiguraasjetriem. De standert is / etc / ssh / sshd_config sshd wegere te begjinnen as der gjin konfiguraasjetriem is.

-g login_grace_time

Giet de tiid fan de tiid foar kliïnten om te authentifikaasje (standert 120 sekonden). As de client net echt brûke kin dizze brûker binnen dizze folle sekonden, de tsjinner ferfangt en út. In wearde fan nul jout gjin limyt.

-h host_key_file

Beskriuwt in triem út wêrfan in host-kaai lêzen wurdt. Dizze opsje moat jûn wurde as sshd net wurket as root (lykas de gewoane host-toetseboerd triemmen normaal net lêze binne troch elkenien mar root). De standert is / etc / ssh / ssh_host_key foar protokol ferzje 1, en / etc / ssh / ssh_host_rsa_key en / etc / ssh / ssh_host_dsa_key foar protokol ferzje 2. It is mooglik om meardere triem-triemmen foar de ferskate protokolversysjes en host-kaai te hawwen algoritme.

-ik

Rjochtet dat sshd út in yndeks is. sshd is normaal net út inetd rint omdat it de tsjinner kaai te generearjen foardat it antwurdzje kin op 'e kliïnt, en dit kin tsientallen sekonden nimme. Kliïnten moatte te lang wachtsje as de kaai alle kearen regenerearre is. Doch mei lytse kaaigrutte (bgl. 512) mei sshd fan inetd kin wêze dat kin wêze.

-k key_gen_time

Jout hoe hurd oft de effektive effektive protokolferzje 1 server-toets is (standert 3600 sekonden, of ien oere). De motivaasje foar it regenerearjen fan de toets is faak dat de kaai net oeral opslein is, en nei sa'n oere, wurdt it ûnmooglik om de kaai te herkenjen foar it dekodearjen fan ynkommensde kommunikaasje, sels as de masine yn 'e knibbels of fysike bewarre is. In wearde fan nul jout oan dat de toets nea regenerearre wurdt.

-o opsje

Kin brûkt wurde om opsjes te jaan yn it formaat dat brûkt wurdt yn it konfiguraasjetriem. Dit is brûkber foar it bepassen fan opsjes foar wêr't gjin getal of in bepalende flagge is.

-p port

Jout de poarte wêryn't de tsjinner harket nei ferbiningen (standert 22). Mear poarte-opsjes binne tastien. Ports dy't yn it konfiguraasjetriem bepaald wurde ignorearre as in kommando-linepoarte opjûn is.

-q

Quiet mode. Nimmen wurdt stjoerd nei it systeemloch. Normaal wurde it begjin, ferifikaasje en termination fan elke ferbining logge.

-t

Testmodus. Allinne kontrolearje de jildigens fan 'e konfiguraasjetriem en saniteit fan' e toetsen. Dit is handich foar it fernijen fan sshd betrouber as konfiguraasjeopsjes kinne wizigje.

-u len

Dizze opsje wurdt brûkt om de grutte fan it fjild op te jaan yn 'e utmp- struktuer dy't de namme fan' e hostnamme befet . As de oplossearre hostnamme langer dan len is, wurdt de puntende desimale wearde ynstee brûkt. Dit liedt hosten mei tige lange hostnammen dy't dit fjild oerlitte om noch altyd identifisearre te wurden. Spesifisearjen - u0 jout oan dat allinich punten desimale adressen yn 'e utmp-bestân set wurde moatte. - u0 wurdt ek brûkt om sshd foar te kommen fan it meitsjen fan DNS-fersiken, útsein as de autentyksysteem of konfiguraasje nedich is. Authentifikaasje-meganismen dy't DNS meidoggje mei RhostsAuthentication RhostsRSAAuthentication HostbasedAuthentication en gebrûk fan in opset fan module = list-list yn in kaaibestân. Konfiguraasjebalken dy 't DNS easkje, brûke it brûken fan in USER @ HOST-patroan yn AllowUsers of DenyUsers

-D

As dizze opsje selektearre is sshd sil net losse en net in daemon wurde. Dit soarget makliker kontrôle fan sshd

-4

Forces sshd brûke allinich IPv4-adressen.

-6

Forces sshd brûke allinich IPv6-adressen.

Konfiguraasjetriem

sshd lêze konfiguraasjegegevens fan / etc / ssh / sshd_config (of it bestân dat oantsjutte is mei - f op 'e kommandorigel). De triemformat en konfiguraasjeopsjes wurde beskreaun yn sshd_config5.

Ynloggeproses

As in brûker goedkeaper yntsjinnet , sshd docht de folgjende:

  1. As it oanmeld is op in tty, en gjin kommando is ynsteld, printset de lêste ynlogge tiid en / etc / motd (as it foarkommen is yn 'e konfiguraasjetriem of troch $ HOME / .hushlogin sjoch de sx-fraach).
  2. As it oanmeld is op in tty, is opnij logge tiid.
  3. Kontrolearret / etc / nologin as it bestiet, drukket ynhâld en quits (as root).
  4. Feroaringen omgean mei normale brûkersbehears.
  5. Sets de basis omjouwing.
  6. Lês $ HOME / .ssh / omjouwing as it bestiet en brûkers kinne har omjouwing feroarje. Sjoch de opsje " PermitUserEnvironment " yn sshd_config5.
  7. Feroaringen nei thússide directory.
  8. As $ HOME / .ssh / rc bestiet, rint it; oars as is / etc / ssh / sshrc bestiet, rint it; Oars rijt xauth. De `` rc '' bestannen wurde it X11-autentikaasjeprotokol en cookie yn standertynfier jûn.
  9. Runs user's shell or command.

Authorized_Keys triemformaat

$ HOME / .ssh / authorized_keys is de standertriem dat de iepenbiere toetsen befettet dy't tagong binne foar RSA-autentikaasje yn protokolferzje 1 en foar public key authentication (PubkeyAuthentication) yn protokol-ferzje 2. AuthorizedKeysFile kin brûkt wurde om in alternative bestân op te jaan.

Eltse line fan 'e bestân befettet ien kaai (lege rigels en linen dy't begjinne mei in `#' wurde negeard as kommentaren). Elke iepenbiere kaai fan 'e RSA bestiet út' e folgjende fjilden, skieden troch spaasjes: opsjes, bits, eksponint, modulus, kommentaar. Elke protokol-ferzje 2 iepenbiere kaai bestiet út: opsjes, keytype, base64 kodearre kaai, kommentaar. It opsjesfjild is opsjoneel; De oanwêzichheid wurdt bepaald troch oft de line begjint mei in nûmer of net (it opsjefjild begjint nea mei in nûmer). De bits, eksponint, modulus en kommintaarfjilden jouwe de RSA-kaai foar protokolferzje 1; it kommentearfjild wurdt net brûkt foar wat (mar kin handich wêze foar de brûker de kaai te identifisearjen). Foar protokol ferzje 2 is de keytype '`ssh-dss' 'of` `ssh-rsa' '

Tink derom dat rigels yn dit bestân normaal ferskate hûndert bytes lang binne (fanwege de grutte fan de publike kaai kodearring). Jo wolle se net yngean; ynstelle, kopiearje de identity.pub id_dsa.pub of de id_rsa.pub-triem en bewurkje it.

sshd fersteret in minimum RSA- toetsmodulusgrutte foar protokol 1 en protokol 2 kaaien fan 768 bits.

De opsjes (as oanwêzich) bestiet út komma-getulearre opsjes-spesifikaasjes. Gjin spaasjes binne tastien, útsein yn dûbele quotes. De neikommende spesjale spesifikaasjes wurde stipe (notysje dat opmaak-kaaiwurden binne saak -ensensyf binne):

fan = pattern-list

Beskiedt dat, neist de autentike toets autentikaasje, de kanonike namme fan 'e ferfarskere host yn' e komma-skieden list fan patroanen (`* 'en`?' As wildcards tsjinkomme). De list kin ek modellen befetsje mei har prefixearje mei '!' ; As de kanonike hostnamme mei in negatearre patroon komt, wurdt de kaai net akseptearre. It doel fan dizze opsje is om opsjes opsjoneel te fergrutsjen: de iepenbiere kaaiautifikaasje troch himsels hat it netwurk of namme-tsjinners of neat (de key) fertrouwen; As lykwols soms de kaai stjit, dan kinne de kaaien in yntroer hawwe om oeral fan 'e wrâld te loggen. Dizze oanfoljende opsje makket gebrûk fan in stelde kleur skerber (namme-tsjinners en / of routers moasten wurde neist de kaai kompromisearje moatte).

kommando = kommando

Jout it kommando út as jo dizze toets foar autentikaasje brûkt wurde. It kommando wurdt levere troch de brûker (as der ien is) wurdt negearre. It kommando is rûn op in pty as de klant in pty oanfreget; Oars wurdt it sûnder in tty útfierd. As in 8-bit-skjinne kanaal ferplicht is, moat men gjin pty oanfreegje of ne-pty oanfiterje. In oanfolling kin opnommen wurde yn 'e kommando troch mei it opnimmen fan in backslash. Dizze opsje kin handich wêze om beskate iepenbiere toetsen te beheinen om krekt in spesifike operaasje út te fieren. In foarbyld kin in kaai wêze dat fergese reservaten ferlit, mar oars neat. Taljochting: de client kin TCP / IP- en / of X11-ferwidering oantsjutte, útsein as se eksplozearre wurde ferbean. Tink derom dat dizze opsje jildt foar shell, kommando of subsysteemútfiering.

omjouwing = NAME = wearde

Jout oan dat de snaal tafoege wurdt oan it omjouwing as jo opnij oanmeitsje mei dizze kaai. Omjouwingsfariabelen jouwe dizze manier oare standert omjouwingswearden op. Mearfâldige opsjes fan dit type binne tagong. De omjouwingsferwurking is standert útskeakele en wurdt kontrolearre troch de Opsjes PermitUserEnvironment . Dizze opsje is automatysk útskeakele as UseLogin ynskeakele is.

no-port-trochslach

Ferbettert TCP / IP-ferwidering as dizze kaai brûkt wurdt foar ferifikaasje. Alle port-forward-oanfragen troch it client krij in flater. Dit kin brûkt wurde, bgl. Yn ferbân mei de kommando- opsje.

gjin-X11-forwarding

Ferbiedt X11 trochgeande as dizze kaai brûkt wurdt foar ferifikaasje. Alle X11 foarferfangings oanfrege troch it client krij in flater werom.

gjin-agent-forwarding

Ferfetsje de autentikaasjegroep as jo dizze kaai brûke foar ferifikaasje.

no-pty

Ferwiderje de tty-allocaasje (in fersyk om in pty te foarkommen sil mislearre wurde).

permitopen = host: haven

Limyt lokale `` ssh -L '' poarte troch te setten sadat it allinnich ferbine mei de oantsjutte host en haven. IPv6-adressen kinne spesifisearre wurde mei in alternatyf syntaks: host / port Multiple permitopen- opsjes kinne tapast wurde troch skieden. Gjin patroanen oerienkomst wurdt op 'e oantsjutte hostnammen foltôge, se moatte letterlik domeinen of adressen wêze.

Foarbylden

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

fan = "*. 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 triemformaat

De / etc / ssh / ssh_known_hosts en $ HOME / .ssh / known_hosts bestannen befetsje iepenbiere toetsen foar alle bekende hosts. De globale triem moat bepaald wurde troch de behearder (opsjoneel), en it per-brûkers-bestân is automatysk bewarre: wannear't de brûker ferbûn is fan in ûnbekende host, wurdt de kaai taheakke oan it per-brûke triem.

Eltse line yn dizze bestannen befettet de folgjende fjilden: hostnammen, bits, eksponint, modulus, kommentaar. De fjilden wurde skieden troch spaasjes.

Hostnammen binne in komma-skieden list fan patroanen ('*' en '?' Hannelje as websiden); Elke patroan is opnij oan 'e kant fan' e kanonike hostnamme (by it autentisearjen fan in kliïnt) of tsjin de brûker-levere namme (wannear't jo in tsjinner authentifisearje). In patroan kin ek foarôfgeand wêze fan '! Om negative te annulearjen: as de hostnamme in oerienkommende patroan komt, wurdt it net akseptearre (troch dy line) sels as it in oar patroan oan 'e line rûn is.

Bits, eksponint en modulus wurde direkt ûntfange fan de RSA-host-kaai; Se kinne wurde, bgl., fanôf /etc/ssh/ssh_host_key.pub It opsjele fjild fan 'e fakultatyf bliuwt oan' e ein fan 'e rigel, en wurdt net brûkt.

Liningen begjinne mei `# 'en lege rigels wurde negeard as kommentaar.

As jo ​​de ferifikaasje fan host fertsjinwurdigje, wurdt automatifikaasje akseptearre as ien fan 'e passende rigel de goeie kaai hat. It is sa tastienber (mar net oan te rieden) om ferskate rigels of ferskate host-toetsen te meitsjen foar deselde nammen. Dit sil ûnjildich wêze barre as koartfoarmen fan hostnammen út ferskate domeinen yn de triem set wurde. It is mooglik dat de bestannen kontraste ynformaasje befetsje; Authentication is akseptearre as jildige ynformaasje kin fûn wurde fan alle bestannen.

Taljochting: de rigels yn dizze bestannen binne typysk hûnderten tekens lang, en jo wolle perfoarst net yn 'e host-kaaien te typen troch de hân. Rieplachtsje se troch in skript oan of troch it te meitsjen /etc/ssh/ssh_host_key.pub en it tafoegjen fan de hostnammen oan 'e foarkant.

Foarbylden

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

Sjoch ek

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 Protokol-arsjitektuer" ûntwerp-ietf-secsh-arsjitektuer-12.txt jannewaris 2002 wurkje yn foarút materiaal

M. Friedl N. Provos WA Simpson "Diffie-Hellman Group Exchange foar it SSH Transport Layer Protocol" draait-ietf-secsh-dh-group-exchange-02.txt jannewaris 2002 wurkje yn foarút materiaal

Wichtich: Brûk de manbehearder ( % man ) om te sjen hoe't in kommando brûkt wurdt op jo bepaalde komputer.