Navn
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 alternativ -p havn -u len
Beskrivelse
sshd (SSH Daemon) er daemon-programmet for ssh (1). Sammen erstatter disse programmene rlogin og rsh, og gi sikker kryptert kommunikasjon mellom to usikre verter over et usikkert nettverk. Programmene er ment å være like enkle å installere og bruke som mulig.
sshd er demonen som lytter etter forbindelser fra klienter. Det startes normalt ved oppstart fra / etc / rc. Det gir en ny demon for hver innkommende forbindelse. De forked-daemonene håndterer nøkkelutveksling, kryptering, autentisering, kommandorekjøring og datautveksling. Denne gjennomføringen avsshd støtter både SSH protokoll versjon 1 og 2 samtidig.
SSH-protokoll versjon 1
Hver vert har en vertsspesifikk RSA-nøkkel (normalt 1024 bits) som brukes til å identifisere verten. Når daemonen starter, genererer den også en server RSA-nøkkel (normalt 768 bits). Denne nøkkelen regenereres hver time hver time hvis den har blitt brukt, og blir aldri lagret på disken.
Når en klient kobler seg, reagerer demonen med sine offentlige verts- og servernøkler. Klienten sammenligner RSA-vertsnøkkelen mot egen database for å bekrefte at den ikke er endret. Klienten genererer deretter et 256-bit tilfeldig tall. Den krypterer dette tilfeldige tallet ved hjelp av både vertsnøkkelen og servernøkkelen og sender det krypterte nummeret til serveren. Begge sider bruker deretter dette tilfeldige nummeret som en øktnøkkel som brukes til å kryptere all videre kommunikasjon i økten. Resten av økten er kryptert ved hjelp av en konvensjonell kryptering, for øyeblikket Blowfish eller 3DES, med 3DES som standard. Klienten velger krypteringsalgoritmen som skal brukes fra de som tilbys av serveren.
Deretter skriver serveren og klienten en autentiseringsdialog. Klienten prøver å autentisere seg ved hjelp av .hosts-godkjenning, .hosts-godkjenning kombinert med RSA-vertsautentisering, RSA-utfordrings-godkjenning eller passordbasert godkjenning.
Rhosts-godkjenning er vanligvis deaktivert fordi den er fundamentalt usikker, men kan aktiveres i serverkonfigurasjonsfilen hvis ønskelig. System sikkerhet er ikke forbedret med mindrershdrlogind og rexecd er deaktivert (dermed deaktiverer rlogin og rsh helt i maskinen).
SSH-protokoll versjon 2
Versjon 2 fungerer på samme måte: Hver vert har en vertspesifikk nøkkel (RSA eller DSA) som brukes til å identifisere verten. Men når demonen starter, genererer den ikke en servernøkkel. Videresend sikkerhet er gitt gjennom en Diffie-Hellman nøkkelavtale. Denne nøkkelavtalen resulterer i en delt øktnøkkel.
Resten av økten er kryptert ved hjelp av en symmetrisk kryptering, for tiden 128 bit AES, Blowfish, 3DES, CAST128, Arcfour, 192 bit AES eller 256 bit AES. Klienten velger krypteringsalgoritmen som skal brukes fra de som tilbys av serveren. I tillegg er øktintegritet tilveiebrakt gjennom en krypteringsmeldingsautentiseringskode (hmac-sha1 eller hmac-md5).
Protokoll versjon 2 inneholder en offentlig nøkkelbasert bruker (PubkeyAuthentication) eller klientverts (HostbasedAuthentication) autentiseringsmetode, konvensjonell passordautentisering og utfordringsbaserte metoder.
Kommandoutførelse og dataoverføring
Hvis klienten godkjenner seg selv, er det lagt inn en dialog for å forberede sesjonen. På denne tiden kan klienten be om ting som å tilordne en pseudotitt, videresende X11-tilkoblinger, videresende TCP / IP-tilkoblinger eller videresende godkjenningsagentforbindelsen over den sikre kanalen.
Endelig krever klienten enten et skall eller en kjøring av en kommando. Sidene angir deretter øktmodus. I denne modusen kan hver side sende data til enhver tid, og slike data blir videresendt til / fra skallet eller kommandoen på serversiden og brukerterminalen på klientsiden.
Når brukerprogrammet avsluttes og alle videresendes X11 og andre tilkoblinger er stengt, sender serveren kommandoen utgangsstatus til klienten, og begge sider avslutter.
sshd kan konfigureres ved hjelp av kommandolinjevalg eller en konfigurasjonsfil. Kommandolinjealternativer overstyrer verdiene som er angitt i konfigurasjonsfilen.
sshd leser sin konfigurasjonsfil når den mottar et hangup-signal,SIGHUP ved å utføre seg selv med navnet det ble startet som, dvs. / usr / sbin / sshd
Alternativene er som følger:
-b bits
Angir antall biter i servernøkkelen for ephemeral protocol versjon 1 (standard 768).
-d
Feilsøkingsmodus. Serveren sender verbose feilsøkingsutgang til systemloggen og legger seg ikke i bakgrunnen. Serveren vil heller ikke fungere og vil bare behandle en tilkobling. Dette alternativet er bare ment for feilsøking for serveren. Flere -d-alternativer øker feilsøkingsnivået. Maksimum er 3.
-e
Når dette alternativet er angitt,sshd vil sende utgangen til standardfeilen i stedet for systemloggen.
-f configuration_file
Angir navnet på konfigurasjonsfilen. Standard er / etc / ssh / sshd_configsshdnekter å starte hvis det ikke er noen konfigurasjonsfil.
-g login_grace_time
Gir grace tid for klienter å autentisere seg selv (standard 120 sekunder). Hvis klienten ikke godkjenner brukeren i løpet av mange sekunder, kobles serveren ut og går ut.En verdi på null indikerer ingen grense.
-H host_key_file
Angir en fil hvorfra en vertsnøkkel leses. Dette alternativet må gis hvissshd kjøres ikke som root (som de normale vertsnøkkelfilene er normalt ikke lesbare av noen, men root). Standard er / etc / ssh / ssh_host_key for protokollversjon 1 og / etc / ssh / ssh_host_rsa_key og / etc / ssh / ssh_host_dsa_key for protokollversjon 2. Det er mulig å ha flere vertsnøkkelfiler for de forskjellige protokollversjonene og vertsnøkkelen algoritmer.
-Jeg
Angir detsshd blir løp fra inetd.sshd kjøres normalt ikke fra inetd fordi den må generere servernøkkelen før den kan svare på klienten, og dette kan ta flere sekunder. Klienter må vente lenge hvis nøkkelen ble regenerert hver gang. Imidlertid med små nøkkelstørrelser (f.eks. 512) ved bruk avsshd fra inetd kan være mulig.
-k key_gen_time
Angir hvor ofte tjenernøkkelen for ephemeral protocol versjon 1 regenereres (standard 3600 sekunder eller en time). Motivasjonen for å regenerere nøkkelen ganske ofte er at nøkkelen ikke er lagret hvor som helst, og etter omtrent en time blir det umulig å gjenopprette nøkkelen for dekryptering av avlysset kommunikasjon selv om maskinen er sprukket inn eller fysisk beslaglagt. En verdi på null indikerer at nøkkelen aldri vil bli regenerert.
-o alternativ
Kan brukes til å gi opsjoner i formatet som brukes i konfigurasjonsfilen. Dette er nyttig for å angi alternativer for hvilke det ikke finnes et eget kommandolinjeflagg.
-p havn
Angir porten som serveren lytter etter tilkoblinger (standard 22). Flere portalternativer er tillatt. Porter som er angitt i konfigurasjonsfilen, ignoreres når en kommandolinjeport er angitt.
-q
Stillemodus. Ingenting blir sendt til systemloggen. Normalt logges begynnelsen, godkjenningen og avslutningen av hver forbindelse.
-t
Testmodus. Kontroller bare gyldigheten av konfigurasjonsfilen og forstanden til nøklene. Dette er nyttig for oppdateringsshd pålitelig som konfigurasjonsalternativer kan endres.
-u len
Dette alternativet brukes til å angi størrelsen på feltet iutmp struktur som inneholder det eksterne vertsnavnet. Hvis det oppløste vertsnavnet er lengre enn len Den stiplede desimalverdien vil bli brukt i stedet. Dette tillater verter med svært lange vertsnavn som overløper dette feltet for fortsatt å være unikt identifisert. Angi -u0 indikerer at bare stiplede desimaladresser skal settes inn i utmp-filen. -u0 brukes også til å forhindresshd fra å gjøre DNS-forespørsler med mindre godkjenningsmekanismen eller konfigurasjonen krever det. Godkjenningsmekanismer som kan kreve DNS inkludererRhostsAuthenticationRhostsRSAAuthentication HostbasedAuthentication og bruker enfra = mønster-listealternativ i en nøkkelfil. Konfigurasjonsalternativer som krever DNS inkluderer bruk av en USER @ HOSTpattern iAllowUsers ellerDenyUsers
-D
Når dette alternativet er angittsshd vil ikke løsne og blir ikke en demon. Dette gjør det enkelt å overvåkesshd
-4
Kreftersshd å bare bruke IPv4-adresser.
-6
Kreftersshd å bare bruke IPv6-adresser.
Konfigurasjonsfil
sshd leser konfigurasjonsdata fra / etc / ssh / sshd_config (eller filen som er spesifisert med -f på kommandolinjen). Filformatet og konfigurasjonsalternativene er beskrevet i sshd_config5.
Innloggingsprosess
Når en bruker logger inn,sshd gjør følgende:
- Hvis påloggingen er på en tty, og ingen kommando er angitt, skriver den siste innloggningstiden og / etc / motd (med mindre det er forhindret i konfigurasjonsfilen eller ved $ HOME / .hushlogin se delen Sx FILES).
- Hvis påloggingen er på en tty, registrerer du innloggingstid.
- Sjekker / etc / nologin hvis den eksisterer, skriver ut innhold og avslutter (med mindre rot).
- Endringer for å kjøre med vanlige brukerrettigheter.
- Setter opp grunnmiljøet.
- Leser $ HOME / .ssh / miljø hvis det eksisterer og brukere får lov til å endre sitt miljø. SePermitUserEnvironment alternativet i sshd_config5.
- Endringer i brukerens hjemmekatalog.
- Hvis $ HOME / .ssh / rc eksisterer, kjører det; ellers hvis / etc / ssh / sshrc eksisterer, kjører det; Ellers kjører xauth. `` Rc '' filene er gitt X11-godkjenningsprotokollen og cookie i standardinngang.
- Kjører brukerens skall eller kommando.
Authorized_Keys filformat
$ HOME / .ssh / authorized_keys er standardfilen som viser de offentlige nøklene som er tillatt for RSA-godkjenning i protokollversjon 1 og for public key authentication (PubkeyAuthentication) i protokollversjon 2.AuthorizedKeysFile kan brukes til å angi en alternativ fil.
Hver linje i filen inneholder en nøkkel (tomme linjer og linjer som starter med en `# 'blir ignorert som kommentarer). Hver RSA-offentlig nøkkel består av følgende felter, adskilt av mellomrom: alternativer, biter, eksponent, modul, kommentar. Hver protokoll versjon 2 offentlig nøkkel består av: alternativer, keytype, base64 kodetast, kommentar. Alternativfeltet er valgfritt; dens tilstedeværelse bestemmes av om linjen starter med et tall eller ikke (alternativfeltet starter aldri med et tall). Bittene, eksponenten, modulen og kommentarfeltene gir RSA-nøkkelen for protokollversjon 1; Kommentarfeltet er ikke brukt til noe (men kan være praktisk for brukeren å identifisere nøkkelen). For protokoll versjon 2 er keytypen `` ssh-dss '' eller `` ssh-rsa ''
Merk at linjer i denne filen vanligvis er flere hundre bytes lange (på grunn av størrelsen på den offentlige nøkkelkodingen). Du vil ikke skrive dem inn I stedet kopierer du identity.pub id_dsa.pub eller id_rsa.pub-filen og redigerer den.
sshd håndhever en minimum RSA-nøkkelmodulstørrelse for protokoll 1 og protokoll 2-taster på 768 biter.
Alternativene (hvis de foreligger) består av kommaseparerte valgspesifikasjoner. Ingen mellomrom er tillatt, bortsett fra i dobbelt anførselstegn. Følgende valgspesifikasjoner støttes (merk at valgordene er ikke-sårbare):
fra = mønster-liste
Angir at i tillegg til godkjenning av offentlig nøkkel må det kanoniske navnet til den eksterne verten være tilstede i den kommaseparerte listen over mønstre (`* 'og`?' Som jokertegn). Listen kan også inneholde mønstre negert ved å prefikse dem med `! ' ; Hvis det kanoniske vertsnavnet samsvarer med et negert mønster, er nøkkelen ikke akseptert. Formålet med dette alternativet er å eventuelt øke sikkerheten: Autentisk autentisering av seg selv stoler ikke på nettverket eller navneservere eller noe (men nøkkelen); Men hvis noen på en eller annen måte stjeler nøkkelen, tillater nøkkelen en inntrenger å logge inn fra hvor som helst i verden. Dette ekstra alternativet gjør det vanskeligere å bruke en stjålet nøkkel (navneservere og / eller rutere må kompromitteres i tillegg til bare nøkkelen).
command = kommando
Angir at kommandoen utføres når denne nøkkelen brukes til godkjenning. Kommandoen levert av brukeren (hvis noen) ignoreres. Kommandoen kjøres på en pty hvis klienten ber om en pty; ellers kjøres det uten tty. Hvis en 8-biters ren kanal er påkrevd, må man ikke be om et pty eller skal spesifisereno-pty Et tilbud kan bli inkludert i kommandoen ved å sitere med en tilbakeslag. Dette alternativet kan være nyttig for å begrense bestemte offentlige nøkler for å utføre bare en bestemt operasjon. Et eksempel kan være en nøkkel som tillater ekstern sikkerhetskopiering, men ingenting annet. Merk at klienten kan angi TCP / IP og / eller X11 videresending, med mindre de er eksplisitt forbudt. Merk at dette alternativet gjelder utførelse av shell, kommando eller subsystem.
miljø = NAME = verdi
Angir at strengen skal legges til miljøet når du logger på ved hjelp av denne nøkkelen. Miljøvariabler angitt på denne måten overstyrer andre standardmiljøverdier. Flere alternativer av denne typen er tillatt. Miljøbehandling er deaktivert som standard og styres viaPermitUserEnvironment alternativ. Dette alternativet deaktiveres automatisk hvisUseLogin Er på.
no-port videresending
Forbyder TCP / IP videresending når denne tasten brukes til godkjenning. Eventuelle portforespørsler fra klienten returnerer en feil. Dette kan brukes, for eksempel i forbindelse medkommando alternativ.
ikke-X11-videresending
Forbids X11 videresending når denne nøkkelen brukes til godkjenning. Eventuelle X11-forespørsler fra klienten returnerer en feil.
no-middel-videresending
Forbudsautentiseringsmiddel videresending når denne nøkkelen brukes til godkjenning.
no-pty
Forhindrer tty-allokering (en forespørsel om å tildele en pty vil mislykkes).
permitopen = vert: port
Begrens lokal`` ssh -L '' port videresending slik at den bare kan koble til den angitte verten og porten. IPv6-adresser kan angis med en alternativ syntaks: vert / port multiple permitopen Alternativer kan påføres separert med kommaer. Ingen mønstermatching utføres på de angitte vertsnavnene, de må være bokstavelige domener eller adresser.
eksempler
1024 33 12121 … 312314325 [email protected]
fra = "*. niksula.hut.fi,! pc.niksula.hut.fi" 1024 35 23 … 2334 ylo @ niksula
command = "dump / home", no-pty, no-port-videresending 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 filformat
/ Etc / ssh / ssh_known_hosts og $ HOME / .ssh / known_hosts-filene inneholder verts offentlige nøkler for alle kjente verter. Den globale filen skal utarbeides av administratoren (valgfritt), og brukerfilen opprettholdes automatisk: Når brukeren kobler fra en ukjent vert, blir nøkkelen lagt til i brukerfilen.
Hver linje i disse filene inneholder følgende felt: vertsnavn, biter, eksponent, modul, kommentar. Feltene er adskilt av mellomrom.
Vannnavne er en kommaseparert liste over mønstre ('*' og '?' Fungerer som jokertegn); hvert mønster er i sin tur tilpasset det kanoniske vertsnavnet (når du godkjenner en klient) eller mot det brukernavnet du har oppgitt (når du godkjenner en server). Et mønster kan også foregå med `! ' for å indikere negasjon: Hvis vertsnavnet samsvarer med et negert mønster, blir det ikke akseptert (ved den linjen), selv om det samsvarer med et annet mønster på linjen.
Bits, exponent og modul er hentet direkte fra RSA-vertsnøkkelen; de kan hentes, for eksempel fra /etc/ssh/ssh_host_key.pub Det valgfrie kommentarfeltet fortsetter til slutten av linjen, og brukes ikke.
Linjer som starter med `# 'og tomme linjer blir ignorert som kommentarer.
Når du utfører vertsautentisering, godkjennes godkjenning dersom en matchende linje har riktig nøkkel. Det er dermed tillatt (men ikke anbefalt) å ha flere linjer eller forskjellige vertsnøkler for de samme navnene. Dette vil uunngåelig skje når korte former for vertsnavn fra forskjellige domener legges inn i filen. Det er mulig at filene inneholder motstridende informasjon; godkjenning er akseptert dersom gyldig informasjon kan bli funnet fra hver enkelt fil.
Merk at linjene i disse filene er vanligvis hundrevis av tegn lang, og du vil definitivt ikke skrive inn vertsnøklene for hånd. Snarere, generer dem ved et skript eller ved å ta /etc/ssh/ssh_host_key.pub og legge til vertsnavnene på forsiden.
eksempler
closetet, …, 130.233.208.41 1024 37 159 … 93 closenet.hut.fi cvs.openbsd.org, 199.185.137.3 ssh-rsa AAAA1234 ….. =
Se også
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-protokollarkitektur" utkast-ietf-secsh-arkitektur-12.txt januar 2002 arbeider i gang materiale
M. Friedl N. Provos W. A. Simpson "Diffie-Hellman Group Exchange for SSH Transport Layer Protocol" draft-ietf-secsh-dh-group-exchange-02.txt Januar 2002 jobber i gang materiale
Viktig: Bruke Mann kommando ( % Mann ) for å se hvordan en kommando brukes på din datamaskin.