SSHD(8) | SSH | SSHD(8) |
JMÉNO¶
sshd - OpenSSH SSH démon
POUŽITͶ
sshd
[-46DdeiqTt] [-b bitů] [-C specifikace_připojení] [-f konfig_soubor] [-g login_grace_time] [-h host_key_file] [-k key_gen_time] [-o option] [-p port] [-u len]
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¶
- -4
- vnutí sshd použití IPv4 adresy
- -6
- vnutí sshd použití IPv6 adresy
- -b bitů
- Určuje počet bitů v klíči serveru (implicitně 768).
- -C specifikace_připojení
- Specifikuje parametry připojení pro parametr -T, což je rozšířený testovací režim. Pokud je parametr poskytnut, jakékoliv shodné direktivy v konfiguračním souboru, které by mohly být nastaveny na specifického uživatele, hosta nebo adresu budou nastaveny dříve, než je konfigurace vypsána na standardní výstup. Parametry spojení jsou ve formátu klíčové_slovo= hodnota. Klíčová slova jsou "user", "host" a "addr". Všechna jsou vyžadována a mohou být uvedena v libovolném pořadí buď v jednotlivých -C volbách, nebo jako seznam oddělaný čárkami.
- -D
- Je-li specifikována tato volba, sshd bude posílat výstup na standardní chybový výstup místo systémového logu.
- -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.
- -e
- Je-li specifikována tato volba, sshd bude posílat výstup na chybový výstup místo systémového logu.
- -f konfig_soubor
- Určuje jméno konfiguračního souboru. Implicitně /etc/ssh/sshd_config. sshd odmítna nastartovat bez konfiguračního souboru.
- -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.
- -o option
- Může být použito pro zadání parametrů ve formátu použitém v konfiguračním souboru. Toto může být užitečné pro specifikování voleb, které nemají vlastní command-line flag. Pro více informací viz sshd_config(5).
- -p port
- Určuje číslo portu, na kterém server očekává spojení (implicitně 22). Vícenásobné volby portu jsou povoleny. Porty specifikované v konfiguračním souboru pod názvem Port jsou ignorovány, pokud je specifikován port přes příkazovou řádku. Porty specifikované pomocí ListenAddress přepisují porty specifikované přes příkazovou řádku.
- -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í.
- -T
- Rozšířený testovací mód. Kontroluje správnost konfiguračního souboru, vypíše efektivní konfiguraci na stdout a skončí. Případně může být aplikováno Match pravidlo tím, že specifikujeme jednu, nebo více -C voleb.
- -t
- Testovací mód. Pouze kontroluje správnost konfiguračního souboru a normálnost přepínačů.
- -u len
- Tato volba je používána pro specifikaci velikosti pole ve struktuře utmp, kde bude uloženo jméno hosta. Pokud je délka jména hosta delší než len, pak bude použita hodnota v tečkové decimální konvenci. Toto umožňuje unikátní identifikaci hostů, jejichž jména jsou příliš dlouhá. Parametr -u0 indikuje, že pouze hodnota v tečkové desítkové soustavě by měla být použita v utmp souboru. Parametr -u0 je také používán k tomu, aby sshd neposílal DNS requesty, pokud je autentizační mechanismus nebo konfigurace nevyžadují. Autentizační mechanismus, který může vyžadovat DNS zahrnuje RhostsRSAAuthentication, HostbasedAuthentication a používá from="pattern-list" v souboru s klíčem. Konfigurační volby, které vyžadují DNS zahrnují použití USER@HOST v AllowUsers nebo DenyUsers.
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.Uživatelům je povoleno měnit svoje prostředí. Viz PermitUserEnvironment v sshd_config(5).
- 7.
- Přepne se do uživatelova domovského adresáře.
- 8.
- 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.
- 9.
- 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:
- 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). - no-user-rc
-
Znemožní spuštění ~/.ssh/rc. - permitopen="host:port"
-
Omezí lokální "ssh -L" předávání portů, takže je možné se připojit pouze ke specifikovanému hostovi a portu. IPv6 adresa může být specifikována v alternativní syntaxi host/port. Několik permitopen voleb může být specifikováno, ale musí být odděleny čárkami. Není aplikováno žádné rozpoznáváni vzorů nad specifikovanými jmény hostů. Musí to být domény nebo adresy. - tunnel="n"
-
Vnutí tun(4) zařízení na server. Bez této volby bude použito následující dostupné zařízení, požaduje-li klient tunel.
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. Jméno hosta nebo adresa mohou být volitelně uzavřeny uvnitř '[' a ']' následované ':' a nestandardním číslem portu.
Alternativně je možné jména hostů uchovávat v zašifrované podobě, což skryje jména hostů a adresy, pokud by byl prozrazen obsah souboru. Hashovaná jména hostů začínají znakem '|'. Na jednom řádku může být pouze jedno hashované jméno hosta a nelze aplikovat žádné zástupné znaky, které byly zmíněny výše.
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>.
VIZ TAKɶ
scp(1), sftp(1), ssh(1), ssh-add(1), ssh-agent(1), ssh-keygen(1), ssy-keyscan(1), chroot(2), hosts_access(5), login.conf(5), moduli(5), sshd_config(5), inetd(8), sftp-server(8)
AUTOŘI¶
OpenSSH je odvozeno od originálního a volného ssh 1.2.12, které bylo vydáno Tatu Ylonenem. Aaron Campbell, Bob Beck, MArkus Friedl, Niels Provos, Theo de Raadt and Dug Song odstranili mnohe chyby, doplnili funkčnost a vytvořili tak OpenSSH. Markus Friedl přispel k vývoji SSH protokolu ve verzích
1.5 a 2.0. Niels Provos a Markus Friedl přispěli k oddělení privilegií.
UPOZORNĚNͶ
Bezpečnost systému není zvýšena, pokud nejsou vypnuty služby rshd, rlogind a rexecd. (je tedy nutné kompletně zablokovat přístup přes rlogin a rsh do počítače)
7. září 2009 | SSH |