Příkaz Linux / Unix: sshd

název

sshd - démon OpenSSH SSH

Synopse

- - [] - - [] - - - - - - - - -

Popis

sshd (SSH Daemon) je démonový program pro ssh (1). Společně tyto programy nahradí rlogin a rsh a poskytují zabezpečenou šifrovanou komunikaci mezi dvěma nedůvěryhodnými hostiteli přes neistou síť. Programy jsou určeny pro snadnou instalaci a použití, jak je to jen možné.

sshd je démon, který poslouchá připojení od klientů. Za normálních okolností je spuštěn při zavádění z / etc / rc. Pro každé příchozí spojení je vyřazen nový démon. Vidlicové démony pracují s výměnou klíčů, šifrováním, ověřením, prováděním příkazů a výměnou dat. Tato implementace sshd současně podporuje SSH protokol verze 1 a 2.

SSH verze 1 protokolu

Každý hostitel má klíč RSA specifický pro hostitele (obvykle 1024 bitů), který se používá k identifikaci hostitele. Navíc, když démon spustí, generuje serverový klíč RSA (obvykle 768 bitů). Tato klávesa se normálně regeneruje každou hodinu, pokud byla použita, a nikdy není uložena na disku.

Kdykoli klient připojuje démon, reaguje pomocí veřejných klíčů a serverových klíčů. Klient porovná klíč hostitele RSA s vlastní databází, aby ověřil, že se nezměnil. Klient potom generuje 256-bitové náhodné číslo. Šifruje toto náhodné číslo pomocí klíčů hostitele a serveru a odešle šifrované číslo na server. Obě strany pak používají toto náhodné číslo jako klíč relace, který se používá k šifrování veškeré další komunikace v relaci. Zbývající část relace je zašifrována pomocí konvenční šifry, v současné době Blowfish nebo 3DES, přičemž standardně se používá 3DES. Klient si vybere šifrovací algoritmus, který se používá od těch, které nabízí server.

Dále server a klient zadejte ověřovací dialog. Klient se pokusí autentizovat pomocí autentizace .rhosts, ověřením .rhosts v kombinaci s ověřením hostitele RSA, ověřením odezvy na výzvu RSA nebo autentizací založenou na hesle .

Autentizace systému Rhosts je obvykle zakázána, protože je zásadně nejistá, ale v konfiguračním souboru serveru může být povolena, pokud je to požadováno. Zabezpečení systému není vylepšeno, pokud rshd rlogind a rexecd nejsou deaktivovány (čímž úplně vypnete rlogin a rsh do počítače).

Protokol SSH verze 2

Verze 2 funguje podobně: Každý hostitel má klíče specifické pro hostitele (RSA nebo DSA), který se používá k identifikaci hostitele. Při spuštění démona však nevytváří klíč serveru. Zabezpečení vpřed je zajištěno prostřednictvím klíčové dohody společnosti Diffie-Hellman. Výsledkem této klíčové dohody je sdílený klíč relace.

Zbytek zasedání je zašifrován pomocí symetrické šifry, v současnosti 128 bitových AES, Blowfish, 3DES, CAST128, Arcfour, 192 bitových AES nebo 256 bitových AES. Klient si vybere šifrovací algoritmus, který se používá od těch, které nabízí server. Navíc celistvost relace je poskytována prostřednictvím ověřovacího kódu šifrovací zprávy (hmac-sha1 nebo hmac-md5).

Protokol verze 2 poskytuje metodu ověřování uživatelů založenou na veřejném klíči (PubkeyAuthentication) nebo host hostitele (HostbasedAuthentication), konvenční autentizaci heslem a metody založené na reakci na výzvu.

Spuštění příkazu a předávání dat

Pokud se klient úspěšně ověří, zadá se dialog pro přípravu relace. V tomto okamžiku může klient požadovat věci, jako je přidělení pseudo-tty, přesměrování přesměrování X11, předávání spojení TCP / IP nebo přesměrování připojení ověřovacího agenta přes zabezpečený kanál.

Nakonec klient buď požádá o shell nebo o provedení příkazu. Strany pak vstupují do režimu relace. V tomto režimu mohou obě strany odesílat data kdykoli a tato data jsou předána do / z shellu nebo příkazu na straně serveru a uživatelský terminál na straně klienta.

Po ukončení uživatelského programu a ukončení všech předaných X11 a dalších připojení server odešle klientovi stav výstupu příkazu a obě strany opustí.

sshd lze konfigurovat pomocí volby příkazového řádku nebo konfiguračního souboru. Možnosti příkazového řádku překonávají hodnoty zadané v konfiguračním souboru.

sshd znovu načte svůj konfigurační soubor, když obdrží signál zavěšení, SIGHUP tím, že provede sám se jménem, ​​který byl spuštěn jako / usr / sbin / sshd

Možnosti jsou následující:

-b bitů

Určuje počet bitů v klíči serveru dočasného protokolu verze 1 (výchozí hodnota 768).

-d

Debugovací mód. Server odesílá podrobný výstup ladění do systémového protokolu a neumí se do pozadí. Server také nebude fungovat a bude zpracovávat pouze jedno připojení. Tato možnost je určena pouze pro ladění serveru. Možnosti více -d zvyšují úroveň ladění. Maximum je 3.

-E

Pokud je tato volba zadána, sshd pošle výstup namísto systémového protokolu standardní chybu.

-f konfigurační_soubor

Určuje název konfiguračního souboru. Výchozí hodnota je / etc / ssh / sshd_config sshd odmítá spustit, pokud neexistuje žádný konfigurační soubor.

-g login_grace_time

Poskytuje klientům čas potřebný k ověření (výchozí 120 sekund). Pokud se klientovi během několika sekund nepodaří ověřit uživatele, server se odpojí a ukončí. Hodnota nula znamená žádný limit.

-h host_key_file

Určuje soubor, ze kterého je čteno hostitelský klíč. Tato volba musí být zadána, pokud sshd není spuštěn jako root (protože běžné soubory klíče hostitele obvykle nejsou čitelné nikým jiným než kořenem). Výchozí hodnota je pro protokol verze 1 / etc / ssh / ssh_host_key a / etc / ssh / ssh_host_rsa_key a / etc / ssh / ssh_host_dsa_key pro protokolovou verzi 2. Je možné mít několik souborů klíčů hostitele pro různé verze protokolu a klíč hostitele algoritmy.

-i

Určuje, že sshd běží z inetd. sshd normálně není spuštěna z inetdu, protože potřebuje generovat klíč serveru před tím, než může reagovat na klienta, což může trvat desítky sekund. Klienti by museli čekat příliš dlouho, kdyby klíč byl obnoven pokaždé. Nicméně, s malými velikostmi klíčů (např. 512) pomocí sshd z inetd může být proveditelné.

-k key_gen_time

Určuje, jak často se obnoví klíč serveru dočasného protokolu verze 1 (výchozí 3600 sekund nebo jedna hodina). Motivace k regeneraci klíče poměrně často spočívá v tom, že klíč není nikde uložen a po zhruba hodině nebude možné obnovit klíč pro dešifrování zachycených komunikací, a to ani v případě, že je stroj prasklý nebo fyzicky zabaven. Hodnota nula znamená, že klíč nikdy nebude regenerován.

-o možnost

Může být použito k poskytnutí možností ve formátu použitém v konfiguračním souboru. To je užitečné při zadávání voleb, pro které není samostatná příznaková řádka příkazového řádku.

-p port

Určuje port, na kterém server naslouchá připojení (výchozí 22). Možnosti více portů jsou povoleny. Porty zadané v konfiguračním souboru jsou ignorovány při zadání portu příkazového řádku.

-q

Tichý režim. Do systémového protokolu se nezobrazí nic. Obvykle se zaznamenává počátek, ověřování a ukončení každého spojení.

-t

Testovací mód. Zkontrolujte pouze správnost konfiguračního souboru a správnost klíčů. To je užitečné pro spolehlivou aktualizaci sshd, protože se mohou změnit konfigurační možnosti.

-u len

Tato volba slouží k zadání velikosti pole ve struktuře utmp, která obsahuje jméno vzdáleného hostitele. Je-li vyřešené jméno hostitele delší než desetinná tečka, místo toho se použije desetinná tečka. To umožňuje hostitelům s velmi dlouhými názvy hostitelů, které přetékají toto pole, aby byly ještě jednoznačně identifikovány. Zadání - u0 označuje, že do souboru utmp musí být vloženy pouze tečky s desetinnou tečkou. - u0 je také možné použít k zabránění vytváření požadavků na službu sshd, pokud to nevyžaduje ověřovací mechanismus nebo konfigurace. Mechanismy ověřování, které mohou vyžadovat DNS, zahrnují RhostsAuthentication RhostsRSAAuthentication HostbasedAuthentication a pomocí možnosti = pattern-list v souboru klíčů. Možnosti konfigurace, které vyžadují službu DNS, zahrnují použití vzorku USER @ HOST v nástrojích AllowUsers nebo DenyUsers

-D

Pokud je tato volba specifikována, sshd se neodpojí a nestane se démonem. To umožňuje snadné sledování sshd

-4

Síly sshd používají pouze adresy IPv4.

-6

Síly sshd používají pouze adresy IPv6.

Soubor konfigurace

sshd čte konfigurační data z / etc / ssh / sshd_config (nebo souboru specifikovaného pomocí - f na příkazovém řádku). Formát souboru a možnosti konfigurace jsou popsány v sshd_config5.

Proces přihlášení

Když se uživatel úspěšně přihlásí, sshd provede následující:

  1. Pokud je přihlašovací jméno na tty a žádný příkaz nebyl zadán, vytiskne poslední přihlašovací čas a / etc / motd (pokud není zabráněno v konfiguračním souboru nebo $ HOME / .hushlogin viz část SX FILES).
  2. Pokud je přihlašovací jméno na tty, zaznamenává přihlašovací čas.
  3. Kontroluje / etc / nologin, pokud existuje, vytiskne obsah a ukončí (pokud není root).
  4. Změny spouštěné s běžnými oprávněními uživatelů.
  5. Nastaví základní prostředí.
  6. Číst $ HOME / .ssh / prostředí, pokud existuje a uživatelé mohou měnit své prostředí. Viz volba PermitUserEnvironment v sshd_config5.
  7. Změny domovského adresáře uživatele.
  8. Pokud existuje $ HOME / .ssh / rc, spustí se; else pokud / etc / ssh / sshrc existuje, spustí to; jinak běží xauth. Soubory `` rc '' jsou přiřazeny autentizačnímu protokolu X11 a cookie ve standardním vstupu.
  9. Spouští uživatelský shell nebo příkaz.

Formát souboru Authorized_Keys

$ HOME / .ssh / authorized_keys je výchozí soubor, který uvádí veřejné klíče, které jsou povoleny pro autentizaci RSA v protokolu verze 1 a pro ověřování veřejných klíčů (PubkeyAuthentication) v protokolu verze 2. AutorizovanýKeysFile může být použit k zadání alternativního souboru.

Každý řádek souboru obsahuje jeden klíč (prázdné řádky a řádky začínající znakem # jsou ignorovány jako komentáře). Každý veřejný klíč RSA se skládá z následujících polí, oddělených mezerami: volby, bity, exponent, modul, komentář. Každá veřejná klíčová verze protokolu 2 se skládá z: voleb, keytype, key64 encoded key, comment. Pole možností je volitelné. jeho přítomnost je určena podle toho, zda linka začíná číslem nebo ne (pole možností nikdy nezačíná číslem). Políčka bitů, exponentů, modulů a komentářů dávají klíč RSA pro protokolovou verzi 1; pole poznámky se nepoužívá pro nic (ale může být pro uživatele snadné identifikovat klíč). Pro protokol verze 2 je typ klíče `` ssh-dss '' nebo `` ssh-rsa ''

Všimněte si, že řádky v tomto souboru jsou obvykle dlouhé několik set bajtů (kvůli velikosti kódování veřejného klíče). Nechcete je zadávat; namísto toho zkopírujte identitu.pub id_dsa.pub nebo soubor id_rsa.pub a upravte jej.

sshd vynucuje minimální velikost modulu kláves RSA pro protokoly 1 a protokoly 2 kláves 768 bitů.

Možnosti (pokud jsou k dispozici) se skládají z specifikací volby oddělených čárkami. Žádné mezery nejsou povoleny, s výjimkou dvojitých uvozovek. Jsou podporovány následující specifikace možností (poznamenejte si, že klíčová slova jsou nerozlišují velká a malá písmena):

z = pattern-list

Určuje, že kromě ověřování veřejnými klíčy musí být kanonický název vzdáleného hostitele přítomen v seznamu oddělených čárkami ("*" a "?" Slouží jako zástupné znaky). Seznam může také obsahovat vzory negované tím, že je předepisuje `! ' ; jestliže kanonické jméno hostitele odpovídá negovanému vzoru, klíč není přijat. Účelem této možnosti je volitelně zvýšit zabezpečení: autentizace pomocí veřejného klíče sama o sobě nedůvěřuje síťovým nebo jmenovacím serverům ani cokoliv (ale klíč); nicméně, pokud někdo nějak ukradne klíč, klíč dovoluje vetřelcovi, aby se přihlásil odkudkoliv na světě. Tato další volba ztěžuje používání odcizeného klíče (jmenovité servery a / nebo směrovače by musely být kromě klíčů ohroženy).

příkaz = příkaz

Určuje, že příkaz je spuštěn při každém použití tohoto klíče pro ověření. Příkaz dodaný uživatelem (pokud existuje) je ignorován. Příkaz je spuštěn na pty, pokud klient požaduje pty; jinak je spuštěn bez tty. Pokud je požadován 8bitový čistý kanál, nesmí být požadován pty nebo byste měli specifikovat no-pty. Citlivost může být zahrnutá do příkazu citátem zpětným lomítkem. Tato volba může být užitečná pro omezení určitých veřejných klíčů, které provádějí pouze určitou operaci. Příkladem může být klíč, který umožňuje vzdálené zálohování, ale nic jiného. Všimněte si, že klient může zadávat přesměrování TCP / IP a / nebo X11, pokud nejsou výslovně zakázány. Všimněte si, že tato volba platí pro provedení shellu, příkazu nebo subsystému.

prostředí = NAME = hodnota

Určuje, že se při přihlašování pomocí tohoto klíče přidá řetězec do prostředí. Proměnné prostředí nastavené tímto způsobem potlačují ostatní výchozí hodnoty prostředí. Je povoleno několik možností tohoto typu. Zpracování prostředí je ve výchozím nastavení zakázáno a je řízeno prostřednictvím možnosti PermitUserEnvironment . Tato možnost je automaticky deaktivována, pokud je zapnutá funkce UseLogin .

no-forward-forwarding

Zakázání přesměrování protokolu TCP / IP, pokud je tento klíč použit pro ověřování. Jakékoli požadavky na předávání portů klientem vrátí chybu. To může být použito, např. V souvislosti s volbou příkazu .

no-X11-forwarding

Zakazuje předávání X11 při použití tohoto klíče pro ověření. Jakékoli žádosti o předání X11 od klienta vrátí chybu.

no-agent-forwarding

Zakazuje předávání ověřovacího agenta při použití tohoto klíče pro ověřování.

no-pty

Zabraňuje alokaci tty (žádost o přidělení pty se nezdaří).

allowopen = host: port

Omezte lokální přenos `` ssh -L '' tak, že se může připojit pouze k určenému hostiteli a portu. Adresy IPv6 lze zadat pomocí alternativní syntaxe: hostitelský port / port Možnosti více možností povolení mohou být odděleny čárkami. Na zadaných názvech hostitelů se nevyrovná žádná shoda, musí být doslovné domény nebo adresy.

Příklady

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

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

příkaz = "dump / home", no-pty, no-forward-forwarding 1024 33 23 ... 2323 backup.hut.fi

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

Formát souboru Ssh_Known_Hosts

Soubory / etc / ssh / ssh_known_hosts a $ HOME / .ssh / known_hosts obsahují hostitelské veřejné klíče pro všechny známé hostitele. Globální soubor by měl být připraven správcem (volitelný) a soubor per uživatele je udržován automaticky: kdykoli se uživatel připojí z neznámého hostitele, je jeho klíč přidán do souboru pro každého uživatele.

Každý řádek v těchto souborech obsahuje následující pole: názvy hostitelů, bity, exponent, modul, komentář. Políčka jsou oddělena mezerami.

Názvy hostitelů jsou seznamy vzorků oddělených čárkami ("*" a "?" Fungují jako zástupné znaky); každý vzorek je následně porovnán s kanonickým názvem hostitele (při autentizaci klienta) nebo s jménem dodaným uživatelem (při autentizaci serveru). Vzor může také předcházet `! ' pro označení negace: jestliže název hostitele odpovídá negovanému vzoru, není přijato (tímto řádkem), i když odpovídá jinému vzoru na řádku.

Bity, exponent a modul jsou odebírány přímo z hostitelského klíče RSA; lze je získat např. z /etc/ssh/ssh_host_key.pub Volitelné pole s komentáři pokračuje na konec řádku a nepoužívá se.

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

Při ověřování hostitele je ověřování akceptováno, pokud má nějaký odpovídající řádek správný klíč. Je tedy přípustné (ale nedoporučuje se) mít několik řádků nebo různé hostitelské klíče pro stejná jména. To se nevyhnutelně stane, když se do souboru vloží krátké formy názvů hostitelů z různých domén. Je možné, že soubory obsahují konfliktní informace; ověření je přijato, pokud lze z obou souborů nalézt platné informace.

Všimněte si, že řádky v těchto souborech jsou obvykle dlouhé stovky znaků a určitě nechcete ručně zadávat klíčy hostitele. Spíše je vygenerujte pomocí skriptu nebo pomocí příkazu /etc/ssh/ssh_host_key.pub a přidáním názvů hostitelů na přední stranu.

Příklady

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

Viz též

scsh (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 "Architektura protokolů SSH" draft-ietf-secsh-architecture-12.txt Leden 2002 nedokončený materiál

M. Friedl N. Provos WA Simpson "Diffie-Hellman Group Exchange pro protokol SSH Transport Layer" draft-ietf-seksh-dh-group-exchange-02.txt leden 2002 nedokončený materiál

Důležité: Použijte příkaz man ( % man ), abyste zjistili, jaký příkaz se používá v konkrétním počítači.