Linux / Unix-komento: sshd

Nimi

sshd - OpenSSH SSH daemon

tiivistelmä

s - [ avain ] [- b key_gen_time ] [- o option ] [- p - portti ] [- u len ] [-

Kuvaus

sshd (SSH Daemon) on ssh: n (1) demoniohjelma . Yhdessä nämä ohjelmat korvaavat rlogin ja rsh , ja tarjoavat turvallisen salatun tiedonsiirron kahden epäluotettavan hostin välillä epävarman verkon yli. Ohjelmien on oltava yhtä helppoja asentaa ja käyttää mahdollisimman.

sshd on demoni, joka kuuntelee yhteyksiä asiakkaista. Se käynnistetään normaalisti käynnistyksessä / etc / rc. Se hakee uuden daemon jokaista tulevaa yhteyttä varten. Haarukoidut demiinit käsittelevät avaimenvaihtoa, salausta, todentamista, komentojen suorittamista ja tietojen vaihtoa. Tämä sshd: n toteutus tukee sekä SSH-protokollan versiota 1 että 2 samanaikaisesti.

SSH-protokollan versio 1

Jokaisella isännällä on isäntäspesifinen RSA-avain (tavallisesti 1024 bittiä), jota käytetään vastaanottamaan isäntä. Lisäksi, kun daemon käynnistyy, se luo palvelimen RSA-avaimen (normaalisti 768 bittiä). Tämä avain normalisoituu normaalisti joka tunti, jos sitä on käytetty, eikä sitä koskaan tallenneta levylle.

Aina kun asiakas yhdistää daemon vastaa sen julkisen isäntän ja palvelimen avaimet. Asiakas vertaa RSA-isäntäavainta omaan tietokantaansa varmistaakseen, että se ei ole muuttunut. Asiakas luo sitten 256-bittisen satunnaisen numeron. Se salaa tämän satunnaisnumeron sekä isäntäsymbolilla että palvelinavaimella ja lähettää salatun numeron palvelimelle. Sitten molemmat osapuolet käyttävät tätä satunnaisnumeroa istuntoavaimena, jota käytetään kaikkien muiden viestien salaamiseen istunnossa. Loput istunnosta salataan käyttäen perinteistä salausta, tällä hetkellä Blowfish tai 3DES, ja 3DES on käytössä oletuksena. Asiakas valitsee palvelimen tarjoaman salausalgoritmin .

Seuraavaksi palvelin ja asiakas antavat todennusvalintaikkunan. Asiakas yrittää todentaa itsensä käyttämällä .rhosts-todennusta, .rhosts -autentiaatiota yhdistettynä RSA-isäntätodennuksen, RSA-haasteen vastauksen todennuksen tai salasanapohjaisen todennuksen kanssa .

Rhosts-todennus on yleensä poistettu käytöstä, koska se on pohjimmiltaan epävarmoja, mutta se voidaan ottaa käyttöön palvelinasetustiedostossa haluttaessa. Järjestelmän suojausta ei paranneta, ellei rshd rlogind ja rexecd ole poistettu käytöstä (täten rlogin ja rsh poistetaan kokonaan koneesta).

SSH-protokollan versio 2

Versio 2 toimii samalla tavalla: Jokaisella isännällä on isäntäkohtainen avain (RSA tai DSA), jota käytetään vastaanottamaan isäntä. Kuitenkin, kun daemon käynnistyy, se ei luo palvelimen avainta. Eteenpäin -turvaus tarjotaan Diffie-Hellman-avaussopimuksen kautta. Tämä keskeinen sopimus johtaa yhteiseen istuntoavaimeen.

Loput istunnosta salataan käyttäen symmetristä salausta, tällä hetkellä 128-bittinen AES, Blowfish, 3DES, CAST128, Arcfour, 192-bittinen AES tai 256-bittinen AES. Asiakas valitsee palvelimen tarjoaman salausalgoritmin. Lisäksi istunnon eheys annetaan kryptografisen viestin todennuskoodin (hmac-sha1 tai hmac-md5) kautta.

Protokolla 2 tarjoaa julkisen avaimen perustuvan käyttäjän (PubkeyAuthentication) tai asiakastietokoneen (HostbasedAuthentication) todentamismenetelmän, tavanomaisen salasanatodennuksen ja haastepohjaisten menetelmien.

Komentojen suorittaminen ja tiedonsiirto

Jos asiakas on todennut itsensä, annetaan valintaikkuna istunnon valmistelemiseksi. Tällä hetkellä asiakas voi pyytää sellaisia ​​asioita, kuten pseudo-tty: n allokoinnin, X11-yhteyksien edelleenlähettämisen, TCP / IP-yhteyksien edelleenlähettämisen tai todentamisagenttiyhteyden välittämisen suojatun kanavan päälle.

Lopuksi asiakas pyytää joko komentojontoa tai komennon suorittamista. Sitten sivut tulevat istuntotilaan. Tässä tilassa molemmat puolet voivat lähettää tietoja milloin tahansa, ja tällaiset tiedot siirretään palvelimen puolelta olevaan komentotulkkiin tai komentoon ja asiakkaan puolella olevasta käyttäjäpäätteestä.

Kun käyttäjäohjelma päättyy ja kaikki edelleenlähetetyt X11 ja muut yhteydet on suljettu, palvelin lähettää komennon poistumistilan asiakkaalle ja molemmat osapuolet poistuvat.

sshd voidaan konfiguroida komentorivivalitsimilla tai määritystiedostolla. Komentorivivaihtoehdot ohittavat asetustiedostossa määritetyt arvot.

sshd tulostaa konfigurointitiedoston uudelleen, kun se vastaanottaa hangup-signaalin, SIGHUP suorittamalla itsensä nimellä, jonka nimi on alkanut, eli / usr / sbin / sshd

Vaihtoehdot ovat seuraavat:

-b- bittejä

Määrittää bittien määrän ephemeraalisen protokollan version 1 palvelimen avaimessa (oletus 768).

-D

Debug-tilassa. Palvelin lähettää verbose debug -lähdön järjestelmän lokiin eikä se aseta taustalle. Palvelin ei myöskään toimi ja käsittelee vain yhden yhteyden. Tämä vaihtoehto on tarkoitettu vain palvelimen virheenkorjaukseen. Useat -d vaihtoehdot lisäävät virheenkorjaustasoa. Enimmäismäärä on 3.

-e

Kun tämä vaihtoehto on määritetty, sshd lähettää lähdön tavalliseen virheeseen järjestelmän lokin sijaan.

-f configuration_file

Määrittää konfigurointitiedoston nimen. Oletusarvo on / etc / ssh / sshd_config sshd kieltäytyy käynnistymisestä, jos asetustiedostoa ei ole.

-g login_grace_time

Antaa asiakkaille tilaisuuden todentaa itsensä (oletusarvo 120 sekuntia). Jos asiakas ei tunnista käyttäjää tässä monessa sekunnissa, palvelin irtautuu ja poistuu käytöstä. Nolla-arvo osoittaa mitään rajaa.

-h host_key_file

Määrittää tiedoston, josta vastaanottava avain luetaan. Tämä vaihtoehto on annettava, jos sshd: tä ei käytetä juurena (koska normaalit isäntätiedostojen tiedostot eivät yleensä ole luettavissa kenenkään lukuunottamatta rootia). Oletus on protokolla 1 / etc / ssh / ssh_host_key ja / etc / ssh / ssh_host_rsa_key ja / etc / ssh / ssh_host_dsa_key protokollaversiossa 2. On mahdollista saada useita isäntänäppäintiedostoja eri protokolla-versioille ja isäntäavaimelle algoritmeja.

-i

Määrittää, että sshd: tä ajetaan inetd: stä. sshd ei yleensä toimi inetd: stä, koska se tarvitsee palvelinavaimen, ennen kuin se voi vastata asiakasta, ja se voi kestää kymmeniä sekunteja. Asiakkaat joutuvat odottamaan liian kauan, jos avain regeneroidaan joka kerta. Pienet avainkoot (esim. 512) voivat kuitenkin olla käyttökelpoisia sshd : n avulla inetd: stä.

-k key_gen_time

Määrittää, kuinka usein eheaikaisen protokollan version 1 palvelimen avain regeneroidaan (oletuksena 3600 sekuntia tai yksi tunti). Motivaation avaimen avaamiseksi usein usein on, että avainta ei ole tallennettu missään, ja noin tunnin kuluttua avaimen palauttaminen keskeyttämättömän viestinnän salauksen purkamiseksi on mahdotonta, vaikka kone on halkeillut tai fyysisesti kiinni. Nolla-arvo osoittaa, että avainta ei koskaan uudisteta.

-o vaihtoehto

Voidaan käyttää asetusten määrittämisessä konfiguraatiotiedostossa. Tämä on hyödyllistä sellaisten vaihtoehtojen määrittelemiseksi, joista ei ole erillistä komentorivin lippua.

-p- porttiin

Määrittää portin, johon palvelin kuuntelee yhteyksiä (oletus 22). Useat satamavalinnat ovat sallittuja. Asetustiedostossa määritetyt portit jätetään huomiotta, kun komentorivin portti on määritetty.

-q

Hiljainen tila. Mikään ei lähetetä järjestelmän lokiin. Yleensä kunkin yhteyden alkaminen, todennus ja päättyminen kirjataan.

-t

Testitila. Vain tarkista konfiguraatiotiedoston kelvollisuus ja avainten terveydentila. Tämä on hyödyllistä päivittää sshd luotettavasti, koska asetukset voivat muuttua.

-u len

Tämän vaihtoehdon avulla määritetään kentän koko utmp- rakenteessa, jolla on isäntäkoneen nimi. Jos ratkaistu isäntänimi on pidempi kuin len, sen sijaan käytetään pisteviivaista desimaaliarvoa. Tämä sallii isännät, joilla on hyvin pitkiä isäntänimiä, jotka ylivuodat tämän kentän vielä tunnistettaviksi. Määritä - u0 osoittaa, että vain pisteviivat desimaalikuvakkeet on sijoitettava utmp-tiedostoon. - u0 käytetään myös estämään sshd : n tekemästä DNS-pyyntöjä, ellei autentikointimekanismi tai -määritys sitä vaadi. Todentamismekanismit, jotka saattavat vaatia DNS: tä, ovat RhostsAuthentication RhostsRSAAuthentication HostbasedAuthentication ja avaintiedostoon out of = pattern-list option. DNS-vaatimuksia käyttävät määritysvaihtoehdot sisältävät USER @ HOST -kuvion AllowUsers- tai DenyUsers-versioissa

-D

Kun tämä vaihtoehto on määritetty, sshd ei irtoa ja ei tule demoksi. Tämä mahdollistaa sshd: n helpon valvonnan

-4

Voi sshd käyttää vain IPv4-osoitteita.

-6

Voi sshd käyttää vain IPv6-osoitteita.

Kokoonpanotiedosto

sshd lukee konfigurointitiedot tiedostosta / etc / ssh / sshd_config (tai komentorivillä varustetulla tiedostolla). Tiedostomuoto ja kokoonpanoasetukset on kuvattu sshd_config5: ssä.

Sisäänkirjautumisprosessi

Kun käyttäjä kirjautuu sisään onnistuneesti, sshd tekee seuraavat:

  1. Jos kirjautuminen on tty: llä, eikä komentoa ole määritetty, tulostetaan viimeinen sisäänkirjautumisaika ja / etc / motd (ellei se ole konfigurointitiedostossa tai $ HOME / .hushlogin katso Sx FILES -osiota).
  2. Jos sisäänkirjaus on tty, kirjaa sisäänkirjautumisaika.
  3. Tarkistaa / etc / nologin, jos se on olemassa, tulostaa sisällön ja sulkee (ellei juuri).
  4. Muutokset suoritetaan tavallisilla käyttäjäoikeuksilla.
  5. Asettaa perusympäristön.
  6. Lukee $ HOME / .ssh / environment, jos se on olemassa ja käyttäjät saavat muuttaa ympäristöään. Katso PermitUserEnvironment- vaihtoehto sshd_config5.
  7. Muutokset käyttäjän kotihakemistoon.
  8. Jos $ HOME / .ssh / rc on olemassa, suoritetaan se; muuten jos / etc / ssh / sshrc on olemassa, suoritetaan se; muuten suorittaa xauth. `` Rc '' -tiedostoille annetaan X11-todennusprotokolla ja eväste vakiotuloon.
  9. Käynnistää käyttäjän shell tai komento.

Authorized_Keys Tiedostomuoto

$ HOME / .ssh / authorized_keys on oletustiedosto, jossa luetellaan julkiset avaimet, jotka ovat sallittuja RSA-todennuksessa protokolla 1: ssa ja julkisen avaimen todennuksessa (PubkeyAuthentication) protokollaversioissa 2. AuthorizedKeysFile voidaan käyttää vaihtoehtoisen tiedoston määrittämiseen.

Jokaisen tiedoston rivillä on yksi avain (tyhjät rivit ja rivit, jotka alkavat `# ': lla, jätetään huomioimatta kommenttina). Jokainen RSA: n julkinen avain koostuu seuraavista kentistä, jotka on erotettu välilyönnillä: vaihtoehdot, bitit, eksponentti, moduuli, kommentti. Jokainen protokollan version 2 julkinen avain koostuu: vaihtoehdoista, keytype, base64-koodattu avain, kommentti. Asetuskenttä on valinnainen; sen läsnäolo määritetään siitä, alkavatko rivin numerolla vai ei (optio-kenttä ei koskaan alkanut numerolla). Bittiä, eksponentti-, moduuli- ja kommenttikenttiä antavat RSA-avaimen protokollaversioon 1; kommenttikenttää ei käytetä mihinkään (mutta voi olla kätevä, kun käyttäjä tunnistaa avaimen). Protokollaversion 2 tapauksessa keytype on `` ssh-dss '' tai `` ssh-rsa ''

Huomaa, että tämän tiedoston rivit ovat tavallisesti useita satoja tavua pitkiä (julkisen avaimen koodauksen vuoksi). Et halua kirjoittaa niitä; kopioi sitten identiteetti.pub id_dsa.pub tai id_rsa.pub -tiedosto ja muokkaa sitä.

sshd pakottaa vähintään RSA-avainmoduulin koon protokollalle 1 ja 768 bittiä varten olevan protokollan 2 avaimet.

Vaihtoehdot (jos ne ovat) koostuvat pilkuilla erotetuista lisävarusteista. Välilyöntejä ei sallita, paitsi kaksinkertaisen lainausmerkin sisällä. Seuraavat vaihtoehtomääritykset ovat tuettuja (huomaa, että vaihtoehtoiset avainsanat ovat tapauksettomia):

kohteesta = kuvio-lista

Määrittää, että julkisen avaimen todennuksen lisäksi kauko-isäntän kanoninen nimi on läsnä pilkulla erotetulla kuvamalliluettelolla (`* 'ja`?', Jotka toimivat nimellä wildcards). Luettelo voi myös sisältää kuvioita, jotka estetään etuliitteellä `! ' ; jos kanoninen isäntänimi vastaa negatiivista mallia, avainta ei hyväksytä. Tämän vaihtoehdon tarkoitus on valinnaisesti lisätä tietoturvaa: julkisen avaimen todennus itsessään ei luota verkkoon tai nimipalvelimiin tai mitään (mutta avain); kuitenkin, jos joku jotenkin varastaa avaimen, avain sallii tunkeilijan kirjautua mistä tahansa maailmasta. Tämä lisävaihtoehto vaikeuttaa varastetun avaimen käyttämistä (nimipalvelimet ja / tai reitittimet olisi vaarantettava vain avaimen lisäksi).

komento = komento

Määrittää, että komento suoritetaan aina, kun tätä avainta käytetään autentikointiin. Käyttäjän antama komento (jos sellainen on) jätetään huomiotta. Komento suoritetaan Pty: ssä, jos asiakas pyytää pty: tä; muuten sitä ajetaan ilman tty: tä. Jos vaaditaan 8-bittistä puhdasta kanavaa, ei tarvitse pyytää pty: tä tai antaa olla ei-pty Komennossa voi olla lainaus viittaamalla sitä kääntöpuolella. Tämä vaihtoehto saattaa olla hyödyllistä rajoittaa tiettyjä julkisia avaimia suorittamaan vain tiettyä operaatiota. Esimerkki voi olla avain, joka sallii etävarmenteita, mutta ei muuta. Huomaa, että asiakas voi määrittää TCP / IP- ja / tai X11-päivityksen, ellei niitä ole nimenomaisesti kielletty. Huomaa, että tämä vaihtoehto koskee shell-, komento- tai osajärjestelmän suoritusta.

ympäristö = NAME = arvo

Määrittää, että merkkijono on lisättävä ympäristöön, kun kirjaudut sisään tämän avaimen avulla. Ympäristömuuttujat tällä tavalla ohittavat muut oletusympäristön arvot. Tämän tyyppisiä vaihtoehtoja on sallittu. Ympäristön käsittely on oletusarvoisesti pois käytöstä, ja sitä ohjataan PermitUserEnvironment- vaihtoehdon kautta. Tämä vaihtoehto poistuu käytöstä automaattisesti, jos UseLogin on käytössä.

no-port-huolinta

Estää TCP / IP-edelleenlähetyksen, kun tätä avainta käytetään autentikointiin. Asiakkaan kaikki porttitiedustelut palauttavat virheen. Tätä voidaan käyttää esimerkiksi komennon yhteydessä .

no-X11-huolinta

Kielletään X11-välitys, kun tätä avainta käytetään todentamiseen. Kaikki asiakkaan X11 välit pyynnöt palauttavat virheen.

ei-aine edelleenlähetys

Kielletään autentikoinnin agentti edelleenlähetys, kun tätä avainta käytetään autentikointiin.

no-PTY

Estää tty: n allokoinnin (pyyntö jakaa pty epäonnistuu).

permitopen = isäntä: portti

Rajoita paikallinen `ssh -L '' portti edelleenlähetys siten, että se voi muodostaa vain yhteyden määritettyyn isäntään ja porttiin. IPv6-osoitteet voidaan määrittää vaihtoehtoisella syntaksilla: isäntä / portti Useita permitopen- vaihtoehtoja voidaan soveltaa pilkulla erotettuna. Määriteltyihin isäntänimiin ei suoriteta kuvionmääritystä, vaan niiden on oltava kirjaimellisia verkkotunnuksia tai osoitteita.

esimerkit

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

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

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

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

Ssh_Known_Hosts-tiedostomuoto

Tiedostot / etc / ssh / ssh_known_hosts ja $ HOME / .ssh / known_hosts sisältävät isännän julkisia avaimia kaikille tunnetuille isännöille. Järjestelmänvalvoja laatii maailmanlaajuisen tiedoston (valinnainen) ja käyttäjätiedosto ylläpidetään automaattisesti: aina, kun käyttäjä muodostaa yhteyden tuntemattomasta isännästä, sen avain lisätään käyttäjätiedostoon.

Jokainen näiden tiedostojen rivillä on seuraavat kentät: hostnames, bits, exponent, modulus, comment. Kentät erotetaan välilyönnillä.

Host-nimet ovat pilkulla erotettu luettelo kuvista ('*' ja '?' Toimivat villinä); jokainen kuvio vuorostaan ​​vastaa kanonista isäntänimeä (asiakkaan todentamisessa) tai käyttäjää toimittamaa nimeä vastaan ​​(palvelimen todentamisen yhteydessä). Kuvioa voi edeltää myös `! ' merkintä negation: jos isäntänimi vastaa negatoitua kuviointia, sitä ei hyväksytä (kyseisen rivin kohdalla), vaikka se sopisi toiseen riviin.

Bitit, eksponentti ja modulus otetaan suoraan RSA-isäntäavainta; ne voidaan saada esim. osoitteesta /etc/ssh/ssh_host_key.pub. Valinnainen kommenttikenttä jatkuu rivin loppuun eikä sitä käytetä.

Linjat, jotka alkavat `# 'ja tyhjät rivit, jätetään huomioimatta kommenttina.

Kun suoritat isäntätodennuksen, todennus hyväksytään, jos jokin vastaava viiva on oikea avain. Siksi on sallittua (mutta ei suositeltavaa) olla useita rivejä tai erilaisia ​​isäntäavaimia samoille nimille. Tämä tapahtuu väistämättä silloin, kun tiedostoon syötetään lyhyitä verkkotunnusten isännän nimiä. On mahdollista, että tiedostot sisältävät ristiriitaisia ​​tietoja; Todennus hyväksytään, jos kelvolliset tiedot löytyvät kummastakin tiedostosta.

Huomaa, että näiden tiedostojen rivit ovat tyypillisesti satoja merkkejä pitkä, ja et ehdottomasti halua kirjoittaa isäntäsymbolia käsin. Sen sijaan luo ne komentosarjan avulla tai ottamalla /etc/ssh/ssh_host_key.pub ja lisäämällä isäntänimet eteen.

esimerkit

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

Katso myös

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

T. Ylonen T. Kivinen M. Saarinen T. Rinne S. Lehtinen "SSH-protokollaarkkitehtuuri" draft-ietf-secsh-arkkitehtuuri-12.txt tammikuu 2002 käynnissä oleva materiaali

M. Friedl N. Provos WA Simpson "Diffie-Hellman-ryhmän vaihto SSH Transport Layer -protokollasta" draft-ietf-secsh-dh-group-exchange-02.txt Tammikuu 2002 käynnissä oleva materiaali

Tärkeää: Käytä man- komentoa ( % man ) nähdäksesi kuinka komentoa käytetään tietyssä tietokoneessa.