SSHD(8)

JMÉNO
sshd - secure shell démon

POUŽITÍ
sshd [-b bitů ] [-d ] [-f konfig_soubor ] [-g login_grace_time ] [-h host_key_file ] [-i ] [-k key_gen_time ] [-p port ] [-q ] [-V version ]

POPIS

Program sshd (secure shell démon) je server pro ssh. Program ssh nahrazuje programy rlogin a rsh a zajišťuje bezpečnou šifrovanou komunikaci mezi dvěma nedůvěryhodnými počítači přes nezabezpečenou síť. Programy ssh a sshd jsou navrženy tak, aby jejich instalace a používání bylo co nejjednodušší.

Sshd je démon, který vyřizuje spojení klientů. Normálně je startován při bootu ze souboru /etc/rc.local nebo jeho ekvivalentu. Pro každé přicházející spojení vytváří nový podproces. Tyto procesy-potomci zajišťují výměnu klíčů, šifrování, autentizaci, provedení příkazů, a výměnu dat.

Sshd pracuje takto: Každý počítač má svůj vlastní RSA klíč (normálně 1024 bitový), který je používán pro identifikaci počítače. Navíc když démon startuje, vygeneruje RSA klíč serveru (normálně 768 bitový). Tento klíč není nikdy ukládán na disk, a jestliže je používán, je znovu generován každou hodinu.

Kdykoli se klient připojí na démona, démon pošle klientovi svůj veřejný klíč počítače. Klient jej porovná se svou databází, aby ověřil, že nebyl změněn. Potom vygeneruje 256 bitové náhodné číslo, které zašifruje použitím obou výše zmíněných klíčů a výsledek pošle na server. Obě strany potom začnou používat toto náhodné číslo jako session klíč pro šifrování veškeré další komunikace konvenční šifrou v rámci celé session. V současnosti jsou podporovány šifry IDEA, DES, 3DES, ARCFOUR, a TSS (rychlý doma navržený algoritmus). Implicitně je použita šifra IDEA. Klient vybere jeden z algoritmů podporovaných serverem.

Potom server a klient zahájí autentizační dialog. Klient se pokusí autentizovat pomocí .rhosts autentizace, .rhosts autentizace kombinované s RSA autentizací počítače, RSA autentizace výzva-odpověď, TIS autentizace, nebo autentizace založené na přihlašovacím heslu.

Rhosts autentizace je normálně zakázána, protože je v principu nebezpečná, ale pokud je požadována, lze ji v konfiguračním souboru serveru povolit. Pokud nejsou zakázány služby rshd(8), rlogind(8), rexecd(8), a rexd (8) není bezpečnost systému použitím ssh zlepšena. Zákaz zmíněných služeb ovšem zcela znemožní přihlášení na tento stroj pomocí rlogin(1) a rsh(1)).

Jestliže se klient úspěšně autentizuje, je zahájen dialog pro přípravu session. V tomto okamžiku může klient požadovat služby jako alokování pseudoterminálu, forwardování X11 spojení, forwardování TCP/IP spojení, nebo forwardování spojení pro autentizačního agenta bezpečným kanálem.

Na závěr klient buď požaduje spuštění shellu nebo provedení příkazu. Obě strany potom vstoupí do režimu spojení. V tomto režimu může každá strana posílat kdykoli data, a tato data jsou forwardována mezi shellem nebo příkazem na straně serveru, a uživatelovým terminálem na straně klienta.

Když uživatelský program skončí a všechna forwardovaná X11 a jiná spojení jsou uzavřena, server vrátí klientovi ukončovací kód příkazu a obě strany skončí.

Program sshd může být zkonfigurován pomocí voleb v příkazovém řádku nebo pomocí konfiguračního souboru. Volby v příkazovém řádku mají přednost před hodnotami zadanými v konfiguračním souboru.

Pokud je démonu sshd zaslán signál hangup (SIGHUP), načte znovu svůj konfigurační soubor.

VOLBY

-b bitů
    Určuje počet bitů v klíči serveru (implicitně 768).

-d  Ladící režim. Server zapisuje podrobný ladící výstup do systémového logu a neběží v pozadí. Server také nebude vytvářet podprocesy a bude zpracovávat pouze jedno spojení. Tato volba je určena pouze pro ladění serveru.

-f konfig_soubor
    Určuje jméno konfiguračního souboru. Implicitně /etc/ssh/sshd_config.

-g login_grace_time
    Udává časový limit, v němž se klienti musí autentizovat (implicitně 600 sekund). Jestliže klient neautentizuje uživatele během zadané doby, server odpojí klienta a skončí. Hodnota nula znamená žádný limit.

-h host_key_file
    Určuje soubor, z něhož se čte klíč počítače (implicitně /etc/ssh/ssh_host_key). Tato volba musí být zadána, jestliže sshd není spuštěn jako root (normálně tento soubor není čitelný kýmkoli kromě roota).

-i  Definuje, že sshd je spuštěn z inetd. Sshd normálně z inetd spouštěn není, protože než může odpovědět klientovi, musí vygenerovat klíč serveru, což může trvat desítky sekund. Pokud by klíč byl pokaždé znovu generován, klienti by museli čekat příliš dlouho. Pro klíče malé délky (například 512 bitů) však může být spuštění sshd z inetd možné.

-k key_gen_time
    Určuje, jak často má být znovu generován klíč serveru (implicitně 3600 sekund neboli 1 hodina). Důvodem pro poměrně časté generování klíče je, že i v případě, že by se počítače zmocnil cracker nebo by byl ukraden, nebude přibližně po hodině možné získat klíč pro dešifrování zachycené komunikace (klíč není nikde uložen). Hodnota nula znamená, že klíč nebude nikdy znovu generován.

-p port
    Určuje číslo portu, na kterém server očekává spojení (implicitně 22).

-q  Tichý režim. Do systémového logu se nic nepíše. Normálně se tam zapisuje začátek, autentizace a ukončení každého spojení. -V Režim kompatibility s SSH verze 2. Server při zadání této volby předpokládá, že řetězec s číslem verze už od klienta přečetl SSH démon verze 2 a proto nebude trvat na zaslání tohoto řetězce.

KONFIGURAČNÍ SOUBOR
Program sshd znovu načítá konfiguraci ze souboru /etc/ssh/sshd_config (nebo souboru zadaného volbou -f na příkazovém řádku). Soubor obsahuje řádky s dvojicemi klíčové_slovo-hodnota. Řádky začínající Jsou povolena následující klíčová slova. V klíčových slovech se nerozlišují malá a velká písmena.

AllowGroups
    Toto klíčové slovo může být následováno libovolným počtem vzorků jmen skupin oddělených mezerami. Pokud je zadáno, je přihlášení povoleno pouze jestliže jméno primární skupiny uživatele vyhovuje některému ze vzorků. Ve vzorcích mohou být použity znaky '*' a '?' jako žolíky. Implicitně je povoleno přihlášení všech uživatelů. Pamatujte, že i v tomto případě musí být při přihlašování úspěšně provedeny všechny ostatní autentizační kroky. AllowGroups a DenyGroups jsou dodatečná omezení.

AllowHosts
    Toto klíčové slovo může být následováno libovolným počtem vzorků jmen počítačů oddělených mezerou. Pokud je zadáno, přihlášení je povoleno pouze z počítačů, jejichž jméno vyhovuje některému ze vzorků. Ve vzorcích mohou být použity znaky '*' a '?' jako žolíky. Normálně je pro získání kanonického jména počítače použito DNS. Jestliže jméno není nalezeno, bude jako jméno počítače použita IP adresa. Implicitně je povoleno připojení ze všech počítačů. Pamatujte, že sshd může být také zkonfigurováno pro použití tcp_wrapperu použitím konfigurační volby --with-libwrap při překladu.

AccountExpireWarningDays
    Určuje, kolik dní před vypršením účtu se budou vypisovat varování o tom, že účet vyprší. Implicitní hodnota je 14 dní. Nastavení na 0 zakáže vypisování varování.

AllowSHosts
    Klíčové slovo může být následováno libovolným počtem vzorků jmen počítačů oddělených mezerami. Je-li zadáno, bude přihlíženo k položkám v souborech .shosts (a .rhosts a /etc/hosts.equiv) pouze u těch počítačů, jejichž jméno vyhovuje některému ze vzorků. Ve vzorcích mohou být použity znaky '*' a '?' jako žolíky. Pro získání kanonického jména strojů bude použito DNS. Pokud nelze kanonické jméno získat, bude jako jméno stroje použita jeho IP adresa. Implicitně je dovoleno připojení všem počítačům.

AllowTcpForwarding
    Určuje, zda je povolen TCP forwarding. Implicitní hodnota je "yes". Pamatujte, že zákaz TCP forwardingu nijak nezlepší bezpečnost, protože uživatelé si mohou vždy nainstalovat vlastní forwardery.

AllowUsers
    Toto klíčové slovo může být následováno libovolným počtem vzorků jmen uživatelů nebo vzorků tvaru uživatel@stroj oddělených mezerami. Stroj může být zadán buď doménovým jménem nebo IP adresou. Pokud je zadáno, bude přihlášení povoleno pouze pro uživatele, jejichž jména vyhovují některému ze vzorků. Ve vzorcích mohou být použity znaky uživatelů. Pamatujte, že všechny ostatní autentizační kroky musí být stále úspěšně provedeny. Volby AllowUsers a DenyUsers jsou dodatečná omezení.

CheckMail
    Určuje, zda má sshd vypisovat informace, jestli uživatel má novou poštu, při interaktivním přihlášení. (Na některých systémech je tato informace vypisována shellem, nebo ze souboru /etc/profile nebo jeho ekvivalentu.) Implicitní hodnota je "yes".

DenyGroups
    Toto klíčové slovo může být následováno libovolným počtem vzorků jmen skupin oddělených mezerami. Pokud je zadáno, je všem uživatelům, jejichž primární jméno skupiny vyhovuje některému ze vzorků, zakázáno přihlášení.

DenyHosts
    Toto klíčové slovo může být následováno libovolným počtem vzorků jmen počítačů oddělených mezerami. Pokud je zadáno, je zakázáno přihlášení ze všech počítačů, jejichž jméno vyhovuje některému ze vzorků.

DenySHosts
    Toto klíčové slovo může být následováno libovolným počtem vzorků jmen počítačů oddělených mezerami. Je-li zadáno budou ignorovány položky v souborech .shosts (a .rhosts a /etc/hosts.equiv) u strojů, jejichž jména vyhovují některému ze vzorků.

DenyUsers
    Toto klíčové slovo může být následováno libovolným počtem vzorků jmen uživatelů nebo vzorků tvaru uživatel@stroj oddělených mezerami. Stroj může být zadán buď doménovým jménem nebo IP adresou. Pokud je zadáno, je všem uživatelům, jejichž jméno vyhovuje některému ze vzorků, zakázáno přihlášení.

FascistLogging
    Určuje, zda použít podrobné logování. Porušuje soukromí uživatelů a není doporučeno. Argument musí být "yes" nebo "none" (bez uvozovek). Implicitní hodnota je "none".

ForcedEmptyPasswdChange
    Určuje, zda donutit uživatele ke změně hesla pokud je heslo prázdné (při prvním přihlášení). Argument musí být "yes" nebo "no" (bez uvozovek). Implicitní hodnota je "no".

ForcedPasswdChange
    Určuje, zda nutit uživatele ke změně hesla pokud je heslo prošlé. Argument musí být "yes" nebo "no" (bez uvozovek). Implicitní hodnota je "yes".

HostKey
    Určuje jméno souboru, který obsahuje soukromý klíč počítače (implicitně /etc/ssh/ssh_host_key).

IdleTimeout čas
    Specifikuje dobu udržování nečinného spojení. Pokud v žádném kanálu používajícím určité ssh spojení neprobíhá po zadaný časový interval žádná komunikace, bude odpovídající podproces sshd zabit signálem SIGHUP a spojení bude uzavřeno. Časový limit je možné zadat v sekundách (písmeno s za číslem nebo pouze číslo), minutách (m), hodinách (h), dnech (d), nebo týdnech (w).

IgnoreRhosts
    Určuje, že při autentizaci nabudou používány soubory rhosts a shosts. Soubory /etc/hosts.equiv a /etc/ssh/shosts.equiv budou stále používány. Implicitní hodnota je "none".

IgnoreRootRhosts
    Určuje, že při autentizaci uživatele root nabudou používány soubory rhosts a shosts. Implicitní hodnotou je hodnota IgnoreRhosts.

KeepAlive
    Specifikuje, zda má systém posílat protistraně udržovací zprávy (keepalive messages). Budou-li posílány, server bude schopen odhalit ukončení spojení nebo havárii klienta. Nevýhodou je, že k ukončení spojení může dojít i při dočasném přerušení komunikace (způsobeném například krátkým výpadkem sítě), což je pro některé uživatele nepřijatelné. Na druhou stranu, pokud udržovací zprávy nejsou zasílány, mohou na serveru zůstat viset neukončená spojení, která zatěžují server. Implicitní hodnota je "yes" (posílat udržovací zprávy), při níž server bude informován o neočekávaných ukončeních spojení a bude uzavírat neaktivní session. Pro zákaz posílání udržovacích zpráv, musí být hodnota nastavena na "none" v konfiguračním souboru serveru i klienta.

KerberosAuthentication
    Určuje, zda je povolena autentizace protokolem Kerberos V5. Může být ve formě Kerberos tiketů, nebo pokud je povolena PasswordAuthentication, bude přihlašovací heslo zadané uživatelem ověřováno pomocí Kerberos KDC nebo DCE Security Server. Implicitní hodnota je yes.

KerberosOrLocalPasswd
    Jestliže je nastaveno a selže autentizace přihlašovacího hesla protokolem Kerberos, pak bude přihlašovací heslo ověřováno pomocí lokálního mechanismu, jakým je soubor /etc/passwd nebo SecurID. Implicitní hodnota je "no".

KerberosTgtPassing
    Určuje, zda může být Kerberos V5 TGT forwardován na server. Implicitní hodnota je yes.

KeyRegenerationInterval
    Klíč serveru je opakovaně automaticky generován po uplynutí zadaného času (v sekundách). Účelem změn klíče je znemožnit dešifrování zachyceného spojení když by došlo k pozdějšímu proniknutí na počítač a krádeži klíčů. Klíč nikdy není nikde uložený. Je-li hodnota 0, klíč nebude nikdy znovu generován. Implicitní hodnota je 3600 (sekund).

ListenAddress
    Určuje IP adresu rozhraní, na kterém je připojen server.

LoginGraceTime
    Server se odpojí po uplynutí zadaného času, jestliže se uživatel nepřihlásí. Je-li hodnota 0, není žádný časový limit. Implicitní hodnota je 600 (sekund).

PasswordAuthentication
    Určuje, zda je povolena autentizace přihlašovacím heslem. Implicitní hodnota je "yes".

PasswordExpireWarningDays
    Určuje, kolik dní před vypršením hesla vypisovat varování. Implicitní hodnota je 14 dní. Nastavení na 0 způsobí, že varování nebudou vypisována.

PermitEmptyPasswords
    Jestliže je povolena autentizace přihlašovacím heslem, určuje tato položka, zda server dovolí přihlášení na účet, který má prázdné přihlašovací heslo. Implicitní hodnota je "yes".

PermitRootLogin
    Určuje, zda může být pomocí ssh přihlášen root. Může být nastaveno na "yes", "nopwd", nebo "none". Implicitní hodnota je "yes", která umožňuje, aby se uživatel root mohl přihlásit s použitím jakéhokoli autentizačního mechanismu povoleného pro jiné uživatele. Hodnota "nopwd" zakazuje autentizaci přihlašovacím heslem. Hodnota "none" zakazuje přihlašování uživatele root s použitím jakékoli autentizační metody. (Hodnoty "nopwd" a "none" jsou ekvivalentní, pokud nejsou v domovském adresáři uživatele root soubory .rhosts, .shosts, nebo .ssh/authorized_keys.) Bez ohledu na hodnotu tohoto nastavení bude povoleno vzdálené provedení příkazu uživatelem root s RSA autentizací (tj. příkaz ssh musí obsahovat parametr "příkaz"). Užitečné například pro vzdálené zálohování.

PidFile
    Určuje umístění souboru, který obsahuje process ID hlavního sshd démona (implicitně /etc/sshd.pid nebo /var/run/sshd.pid, podle systému).

Port
    Určuje číslo portu, na němž sshd očekává spojení. Implicitní hodnota je 22.

PrintMotd
    Určuje, zda sshd bude vypisovat /etc/motd když se uživatel přihlásí interaktivně. (Na některých systémech se tento soubor vypisuje zvláštním příkazem umístěným v /etc/profile nebo obdobném souboru.) Implicitní hodnota je "yes".

QuietMode
    Určuje, zda sshd běží v tichém režimu. V tomto režimu se do log souboru vypisují pouze fatální chyby (fatal errors). Implicitní hodnota je "none".

RandomSeed
    Definuje jméno souboru obsahující hnízdo náhodných čísel pro server; tento soubor je vytvořen automaticky a pravidelně je aktualizován. Implicitní hodnota je /etc/ssh/ssh_random_seed.

RhostsAuthentication
    Určuje, zda je dostačující autentizace pomocí souborů rhosts nebo /etc/hosts.equiv. Normálně tato metoda nesmí být povolena, protože je nebezpečná. Místo ní by měla být použita RhostsRSAAuthentication, protože kromě normální autentizace používající soubory rhosts nebo /etc/hosts.equiv provádí RSA autentizaci počítače. Implicitní hodnota je "none".

RhostsRSAAuthentication
    Určuje, zda je dovolena rhosts nebo /etc/hosts.equiv autentizace spolu s úspěšnou RSA autentizací počítače. Implicitní hodnota je "yes".

RSAAuthentication
    Určuje, zda je povolena samotná RSA autentizace. Implicitní hodnota je "yes".

ServerKeyBits
    Udává délku klíče serveru v bitech. Minimální hodnota je 512, implicitní 768.

SilentDeny
    Určuje, zda odmítnutá spojení jsou odmítnuta tiše (pouze se uzavře spojení bez zanesení informací do logu), nebo zda bude zasláno klientovi chybové hlášení a pokus o spojení bude zanesen do logu.

StrictModes
    Určuje, zda ssh bude kontrolovat práva a vlastníka uživatelova domovského adresáře a souboru rhosts před přihlášením. Obvykle žádoucí, protože začátečníci někdy omylem nechají svůj adresář nebo své soubory zapisovatelné pro všechny. Implicitní hodnota je "yes".

SyslogFacility
    Udává jméno facility použité programem sshd pro zanášení chybových hlášení do logu. Možné hodnoty jsou: DAEMON, USER, AUTH, LOCAL0, LOCAL1, LOCAL2, LOCAL3, LOCAL4, LOCAL5, LOCAL6, LOCAL7. Implicitní hodnota je DAEMON.

TISAuthentication
    Určuje, zdali je povolena autentizace pomocí TIS authsrv(8). Implicitní hodnota je "none".

Umask
    Nastaví implicitní hodnotu umask pro sshd a jeho podprocesy. Hodnota musí začínat číslicí 0, aby byla brána jako osmičkové číslo! Implicitně není umask nastavena.

X11Forwarding
    Určuje, zda X11 je povoleno forwardování. Implicitní hodnota je "yes". Pamatujte, že zákaz X11 forwardování nezlepší bezpečnost, protože uživatelé si mohou vždy nainstalovat svoje vlastní forwardery.

X11DisplayOffset
    Určuje první číslo displeje použitelné pro X11 forwarding. Slouží k tomu, aby se čísla displejů používaných sshd nepřekrývala s čísly používanými skutečnými X11 servery.

XAuthLocation
    Určuje cestu k programu xauth.

PROCES PŘIHLAŠOVÁNÍ
Když se uživatel úspěšně přihlásí, sshd provede následující akce:

1.  Jestliže je přihlášen na tty, a nebyl zadán žádný příkaz, vypíše čas posledního přihlášení a obsah souboru /etc/motd (pokud není zakázáno v konfiguračním souboru nebo souborem $HOME/.hushlogin; viz sekce SOUBORY).

2.  Jestliže je přihlášen na tty, zaznamená čas přihlášení.

3.  Zkontroluje /etc/nologin; pokud existuje, vypíše jeho obsah a skončí (není-li uživatel root).

4.  Přepne na normální uživatelova práva.

5.  Nastaví základní prostředí.

6.  Načte soubor /etc/environment, pokud existuje.

7.  Načte $HOME/.ssh/environment, pokud existuje.

8.  Přepne se do uživatelova domovského adresáře.

9.  Jestliže existuje soubor $HOME/.ssh/rc, interpretuje jej (uživatelovým shellem); jinak jestliže existuje /etc/ssh/sshrc, interpretuje jej (shellem /bin/sh); jinak spustí xauth. Soubory "rc" jsou dány X11 autentizačním protokolem a cookie na standardní vstupu.

10. Spustí uživatelův shell nebo příkaz.

FORMÁT SOUBORU AUTHORIZED_KEYS

Soubor $HOME/.ssh/authorized_keys obsahuje seznam RSA klíčů pro RSA autentizaci. Každý řádek souboru obsahuje jeden klíč (prázdné řádky a řádky začínající znakem '#' jsou ignorovány jako komentáře). Každý řádek sestává z následujících položek, oddělených mezerami: volby, počet bitů, exponent, modulo, komentář. Položka volby je nepovinná; pokud řádek začíná číslem, položka není přítomna (položka volba nikdy nezačíná číslem). Položky počet bitů, exponent, modulo a komentář definují RSA klíč; položka komentář není povinná, ale může být užitečná pro uživatele pro identifikaci klíče.

Pamatujte, že řádky v tomto souboru jsou obvykle několik stovek bytů dlouhé (díky velikosti položky modulo RSA klíče). Uživatel je ale nemusí opisovat, stačí pouze zkopírovat soubor identity.pub a editovat jej.

Položka volby (pokud jsou přítomné) sestávají ze seznamu voleb oddělených čárkami. Nesmí obsahovat žádné mezery, kromě mezer uvnitř uvozovek. Ve jménech voleb se nerozlišují malá a velká písmena. Jsou podporovány následující volby: jsou supported:

    from="seznam-vzorků"
    Určuje, že kromě RSA autentizace, musí být kanonické jméno vzdáleného počítače uvedeno v seznamu-vzorků. Seznam může obsahovat několik položek oddělených čárkou. Každá položka může obsahovat znaky jestliže kanonické jméno počítače vyhovuje takovému vzorku, klíč nebude akceptován. Účelem této volby je další zvýšení bezpečnosti: RSA autentizace nedůvěřuje adrese nebo jménu serveru ani ničemu jinému kromě klíče; nicméně pokud někdo ukradne klíč, bude se jeho použitím moci přihlásit odkudkoli. Tato dodatečná volba dále ztěžuje použití ukradeného klíče (kromě získání klíče musí být zfalšováno ještě jméno serveru nebo routeru).

    command="příkaz"
    Požaduje provedení zadaného příkazu kdykoli je tento klíč použit pro autentizaci. Uživatelem zadaný příkaz bude ignorován. Tento příkaz bude spuštěn na pseudoterminálu jestliže spojení pseudoterminál požaduje; jinak bude spuštěn bez tty. Uvozovky v příkazu musí být uvedeny znakem obrácené lomítko. Tato volba může být vhodná pro omezení, aby s jistým RSA klíčem bylo možné provést pouze určitou konkrétní operaci. Příklade by mohl být klíč, který umožní vzdálené zálohování, ale nic jiného. Klient může specifikovat TCP/IP nebo X11 forwardování, pokud není explicitně zakázáno.

    environment="NAME=hodnota"
    Určuje výraz, který má být přidán do prostředí při přihlašování s tímto klíčem. Hodnoty proměnných prostředí nastavené tímto způsobem mají přednost před implicitními hodnotami. Je povoleno více voleb tohoto typu.

    idle-timeout=čas
    Specifikuje dobu udržování nečinného spojení. Pokud v žádném kanálu používajícím určité ssh spojení neprobíhá po zadaný časový interval žádná komunikace, bude odpovídající podproces sshd zabit signálem SIGHUP a spojení bude uzavřeno. Časový limit je možné zadat v sekundách (písmeno s za číslem nebo pouze číslo), minutách (m), hodinách (h), dnech (d), nebo týdnech (w).

    no-port-forwarding
    Zakáže TCP/IP forwardování když je tento klíč použit pro autentizaci. Jakékoli požadavky na forwardování portu z klient vrátí chybu. Může být použito například ve spojení s volbou příkaz.

    no-X11-forwarding
    Zakáže X11 forwardování když je tento klíč použit pro autentizaci. Jakékoli požadavky na forwardování X11 spojení z klienta vrátí chybu.

    no-agent-forwarding
    Zakáže forwardování pro autentizačního agenta když je tento klíč použit pro autentizaci.

    no-pty
    Zabrání přidělení pseudoterminálu (požadavek na přidělení pty skončí chybou).

  Příklady

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

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

SSH S TCP WRAPPERY
Pokud je sshd zkompilováno s knihovnami tcp wrapperu, soubory host.allow/deny ovlivňují, kdo se může připojit na porty forwardované programem sshd. Jména programů v souborech hosts.allow/deny jsou sshdfwd- <služba> , sshdfwd- <číslo-portu> a sshdfwd-X11 pro forwardování portů, které ssh klient nebo server očekává.

Pokud má nějaký port přiřazeno jméno služby, musí být použito toto jméno.

SSH_KNOWN_HOSTS FILE FORMAT

Soubory /etc/ssh/ssh_known_hosts a $HOME/.ssh/known_hosts obsahují veřejné klíče všech známých počítačů. První ze souborů (platí pro všechny uživatele) připravuje správce, zatímco soubory pro jednotlivé uživatele jsou spravovány automaticky: kdykoli se uživatel připojí na neznámý počítač, bude klíč tohoto počítače přidán do uživatelského souboru. Doporučeným způsobem vytvoření souboru /etc/ssh/ssh_known_hosts je použití příkazu make-ssh-known-hosts.

Každý řádek v těchto souborech obsahuje následující položky: jména počítačů, délka klíče v bitech, exponent, modulo a komentář. Pole jsou oddělena mezerami.

Jména počítačů je seznam vzorků oddělených čárkami (znaky '*' a '?' fungují jako žolíky); každý vzorek se porovnává s kanonickým jménem počítače (když se autentizuje klient) nebo se jménem zadaným uživatelem (když se autentizuje server). Znak vykřičník '!' před vzorkem znamená negaci: jestliže jméno počítače vyhovuje negovanému vzorku, nebude přijato (tímto řádkem) i když vyhovuje jinému vzorku na řádku.

Délka klíče v bitech, exponent a modulo jsou hodnoty charakterizující přímo klíč počítače; mohou být získány například ze souboru /etc/ssh/ssh_host_key.pub. Nepovinné pole komentáře může zabírat zbytek řádku, a nemá žádný význam.

Řádky začínající znakem '#' a prázdné řádky jsou ignorovány jako komentáře.

Autentizace počítače je úspěšná jestliže jakýkoli z řádků, který obsahuje vzorek vyhovující jménu počítače, má správný klíč. Proto je přípustné (ale nedoporučené) mít několik řádků nebo různé klíče počítačů pro stejná jména. K tomu nevyhnutelně dojde, když budou v souboru použita zkrácená jména počítačů z jiné domény. Je možné, že soubory budou obsahovat konfliktní informace; autentizace bude úspěšná, jestliže v některém ze souborů bude nalezena platná informace.

Pamatujte, že řádky v těchto souborech mají typicky stovky znaků dlouhé, a určitě je nikdo nebude zadávat ručně. Místo toho je možné je generovat skriptem (viz make-ssh-known-hosts(1)), nebo je možné zkopírovat soubory /etc/ssh/ssh_host_key.pub a na začátek řádku přidat jméno počítače.

  Příklady
closenet,closenet.hut.fi,...,130.233.208.41 1024 37 159...93 closenet.hut.fi

SOUBORY

/etc/ssh/sshd_config
    Obsahuje konfigurační data pro sshd. Tento soubor musí být zapisovatelný pouze uživatelem root, ale je doporučeno (i když nikoli nezbytné), aby byl čitelný pro všechny.

/etc/ssh/ssh_host_key
    Obsahuje soukromý klíč počítače. Normálně je vytvořen automaticky příkazem "make install", ale může být vytvořen i ručně použitím příkazu ssh-keygen(1). Soubor musí být vlastněný uživatelem root, čitelný pouze pro uživatele root, a nedostupný pro ostatní.

/etc/ssh/ssh_host_key.pub
    Obsahuje veřejný klíč počítače. Normálně je vytvořen automaticky příkazem "make install", ale může být vytvořen i ručně. Musí být čitelný pro všechny, ale zapisovatelný pouze uživatelem root. Jeho obsah musí odpovídat soukromému klíči. Tento soubor není je skutečnosti vůbec používán; slouží pouze k tomu, aby jeho obsah mohli uživatelé přidat do souborů se známými počítači na jiných počítačích.

/etc/ssh/ssh_random_seed
    Soubor obsahuje hnízdo pro generátor náhodných čísel. Musí být přístupný pouze uživateli root.

/var/run/sshd.pid
    Obsahuje číslo hlavního procesu sshd (jestliže existuje několik démonů běžících na různých portech, bude obsahovat pid posledního odstartovaného sshd procesu). Obsah tohoto souboru není senzitivní; může být čitelný pro všechny.

$HOME/.ssh/authorized_keys
    Obsahuje seznam RSA klíčů, které mohou být použity pro přihlášení na uživatelův účet. Soubor musí být čitelný uživatelem root (což může na některých strojích znamenat, že bude čitelný pro všechny, jestliže uživatelův domovský adresář je na disku NFS). Je však doporučeno, aby soubor nebyl čitelný pro nikoho kromě uživatele root. Formát tohoto souboru je popsaný výše.

/etc/ssh/ssh_known_hosts a $HOME/.ssh/known_hosts
    Tyto soubory jsou použity při kontrole veřejného klíče počítače při použití autentizace pomocí souborů rhosts spojené s ověřením RSA klíče počítače. Klíč musí být uveden v jednom z těchto souborů. (Klient používá stejné soubory pro verifikaci, že vzdálený počítač je ten, ke kterému se chtěl připojit.) Soubory musí být zapisovatelné pouze uživatelem root, respektive vlastníkem. /etc/ssh/ssh_known_hosts musí být čitelný pro všechny, a $HOME/.ssh/known_hosts může ale nemusí být čitelný pro všechny.

/etc/nologin
    Jestliže tento soubor existuje, sshd bude se moci přihlásit pouze uživatel root. Obsah souboru bude vypsán komukoli, kdo se pokusí přihlásit, a ne-root spojení budou odmítnuta. Soubor musí být čitelný pro všechny.

$HOME/.rhosts
    Tento soubor obsahuje dvojice počítač-jméno uživatele, oddělené mezerou, na každém řádku jeden. Daným uživatelům na odpovídajících počítačích je povoleno přihlášení bez přihlašovacího hesla. Stejný soubor je použit programem rlogind a rshd. Rozdíl mezi ssh a rlogind a rshd je v tom, že kromě ověření jména počítače pomocí domain name serveru požadují RSA autentizaci počítače (pokud nejsou přeloženy s konfigurační volbou --s-rhosts). Soubor musí být zapisovatelný pouze uživatelem; doporučuje se, aby nebyl čitelný pro nikoho jiného. V souboru je také možné použít netgroups. Jak jméno počítače tak uživatele může být ve formě +@groupname pro uvedení všech počítačů nebo všech uživatelů ve skupině.

$HOME/.shosts
    Pro ssh se používá tento soubor přesně stejným způsobem jako .rhosts. Protože však není používán programy rlogind a rshd, bude umožňovat pouze přístup pomocí ssh.

/etc/hosts.equiv
    Tento soubor je použitý při autentizaci pomocí souboru .rhosts. V nejjednodušší formě obsahuje jména počítačů, na každém řádku jedno. Uživatelům z těchto počítačů je povoleno přihlášení bez uvedení hesla za podmínky, že mají stejné uživatelské jméno na obou strojích. Pokud je jméno počítače následováno jménem uživatele, bude se moci příslušný uživatel přihlásit pod jakýmkoli jménem na tomto stroji (kromě uživatele root). navíc může být použito +@group pro zadání netgroups. Negované položky začínají znakem '-'. Jestliže dvojice klientský počítač/uživatel je úspěšně nalezena v tomto souboru, bude automaticky povoleno přihlášení, pokud uživatelská jména na klientu a serveru jsou stejná. Navíc je normálně požadována úspěšná RSA autentizace počítače. Tento soubor musí být zapisovatelný pouze uživatelem root; doporučuje se, aby byl čitelný pro všechny. Varování: Téměř nikdy není dobré uvádět v souboru hosts.equiv jména uživatelů. Znamená to, že uvedení uživatelé se mohou přihlásit jako kdokoli (včetně uživatelů bin, daemon, adm, a jiných uživatelů, kteří vlastní kritické programy a adresáře. Použití jména uživatele prakticky zajišťuje uživateli přístup roota. Jediné rozumné použití uživatelských jmen je proto v negovaných položkách. Pamatujte, že toto varování se také vztahuje na rsh/rlogin.

/etc/ssh/shosts.equiv
    Tento soubor je zpracováván přesně stejně jako /etc/hosts.equiv. Může být užitečný v prostředích, kde se používá jak rsh/rlogin tak ssh.

/etc/environment
    Tento soubor (jestliže existuje) je načten do prostředí (environmentu) při přihlášení. Může obsahovat pouze prázdné řádky, komentářové řádky (začínající znaky '#'), a řádky ve tvaru jméno=hodnota. Tento soubor je zpracováván ve všech systémech (normální rsh/rlogin jej zpracovávají pouze na AIX). Soubor musí být zapisovatelný pouze uživatelem root, a musí být čitelný pro všechny.

$HOME/.ssh/environment
    Tento soubor je načten do prostředí po /etc/environment. Má stejný formát. Soubor musí být zapisovatelný pouze uživatelem; nemusí být čitelný nikým jiným.

$HOME/.ssh/rc
    Jestliže tento soubor existuje, bude interpretován uživatelovým shellem po načtení souborů environment, ale před spuštěním uživatelova shellu nebo příkazu. Jestliže se používá X11 spoofing, přijme pár "proto cookie" ze standardního vstupu (a proměnnou prostředí DISPLAY). Proto musí v tomto případě vyvolat xauth. Primárním účelem tohoto souboru je spustit jakékoli inicializační rutiny, které mohou být potřebné než je dostupný uživatelův domovský adresář. Příkladem může být použití AFS. Soubor pravděpodobně bude obsahovat nějaký inicializační kód následovaný něčím jako "if read proto cookie; then echo add $DISPLAY $proto $cookie | xauth -q -; fi". Jestliže tento soubor neexistuje, bude spuštěn /etc/ssh/sshrc, a jestliže neexistuje ani ten, bude použito xauth pro uložení cookie. Soubor musí být zapisovatelný pouze uživatelem, a nemusí být čitelný nikým jiným.

/etc/ssh/sshrc
    Má stejný význam jako $HOME/.ssh/rc, ale spouští se pomocí /bin/sh. Tento soubor může být použit pro specifikaci inicializací prováděných při přihlášení libovolného uživatele k danému stroji. Soubor musí být zapisovatelný pouze uživatelem root, a musí být čitelný pro všechny.

/etc/ssh/sshd_tis.map
    Vytvoří mapování mezi a lokálním uživatelským jménem a odpovídajícím jménem v TIS databáze. Každý řádek obsahuje lokální jméno následované znakem ":" následovaným odpovídajícím jménem. Jestliže soubor neexistuje nebo uživatel není nalezen, předpokládá se že odpovídající jméno v TIS databáze je stejný.

INSTALACE

Program sshd se normálně spouští jako root. Jestliže není spuštěn jako root, může být použit pouze pro přihlašování uživatele, kterým je spuštěn, a pokud systém používá /etc/shadows, nebude fungovat autentizace přihlašovacím heslem. Také musí být použit alternativní soubor s klíčem počítače.

Program sshd se normálně startuje ze souboru /etc/rc.local nebo ekvivalentního při bootu systému.

Byla vynaložena značná práce, aby byl program sshd bezpečný. Pokud přesto objevíte bezpečnostní problém, oznamte to prosím ihned na <ssh-bugs@cs.hut.fi>.

AUTOR

Tatu Ylonen <ylo@ssh.fi>

Informace o nových verzích, mailing listech, a podobně můžete nalézt na domovské WWW stránce programu ssh na http://www.cs.hut.fi/ssh.

VIZ TAKÉ

ssh(1), make-ssh-known-hosts(1), ssh-keygen(1), ssh-agent(1), ssh-add(1), scp(1), rlogin(1), rsh(1)