Secure Shell (SSH)

Úvod

SSH (Secure Shell) je program k přihlašování se na počítače prostřednictvím sítě, ke spouštění příkazů na vzdálených počítačích a k přesouvání souborů z jednoho počítače na druhý. Poskytuje silnou aututentizaci a bezpečnou komunikaci na nezabezpečeném kanále. Je určen jako náhrada programů telnet, rlogin, rsh, rcp, rsync, rdist a nově také ftp (vyžaduje SSH2). Lze ho používat na platformách UNIX, Windows, Macintosh, OS/2 a Amiga. V tomto dokumentu je popsán protokol verze SSH 2.0. Hlavní rysy:

Princip fungování

SSH se skládá z programu běžícího na serveru, programu na uživatelském počítači a několika dalších pomocných aplikací. Oba počítače jsou propojeny běžnou nezabezpečenou IP síťí. O spojení vždy žádá uživatelský počítač. Server poslouchá na určeném portu (obvykle 22) a čeká na žádosti o spojení. K jednomu serveru může být připojeno v jednom okamžiku několik klientů.

Když se klient připojí k serveru, server odpoví odesláním řetězce s číslem verze. Klient si ověří identitu serveru a pošle zpět svou vlastní identifikaci. Tak se zkontroluje, zda je port v pořádku, odpovídá verze softwaru na obou stranách. Identifikační řetězce jsou člověku srozumitelné. Jestliže některá strana neporozumí nebo nepodporuje danou verzi, spojení se ukončí.

Po fázi identifikace obě strany začnou komunikovat binárně. Server začne odesláním svého veřejného hostitelského klíče (obvykle 1024 bitů, každý server má vlastní) a veřejného server klíče (typicky 768 bitů, mění se jednou za hodinu a nikdy se neukládá na disk). Server dále sdělí, kreré šifrovací algoritmy zná (3DES, Blowfish, ArcFour, IDEA nebo CAST-128). Klient vytvoří 256 bitový klíč pro toto spojení, zakóduje ho oběma RSA klíči a odešle jej jako klíč pro další komunikaci a ohlásí zvolený typ šifry. Oba počítače od této chvíle veškerá data šifrují domluveným klíčem a algoritmem. Server odešle zašifrované potvrzení. Zkontroluje se, zda je server zapsán v seznamu, není-li, jste na to upozorněni. Pokud se takové upozornění objeví, neignorujte ho. Může to znamenat, že se někdo pokouší vydávat se za server! Další možností je, že se na server hlásíte poprvé a nemáte hostitelský klíč serveru. Nebo správce serveru přeinstaloval SSH a vygeneroval nové klíče.

Poté se klient autentizuje některou ověřovací metodou. První možnost je srovnání RSA klíčů: Klient odešle svůj veřejný RSA klíč. Server klíč porovná s klíčem uloženým v $HOME/.ssh/authorized_keys a zakóduje jím 256 bitové číslo. Klient jej musí rozkódovat svým odpovídajícím soukromým RSA klíčem a poslat zpět MD5 kontrolní součet. Poté se může kontrolovat heslo. Jinou možností je příhlášení ze spřáteleného serveru (pravděpodobně se společnou autorizací na intranetu). Tato možnost je standardně zakázána z bezpečnostních důvodů. Využívá souborů ".rhosts" a "/etc/hosts.equiv". Pokud ji chcete použít, je nutné SSH instalovat jako root s volbou --with-rhosts. Lze ji kombinovat s autorizací RSA. Dále umí SSH použít ověření hesla bez RSA klíčů (jako běžný telnet, rsh nebo rlogin, ale vše se kóduje) nebo TIS autorizační server.

Po úspěšném ověření může klient požádat o otevření několika spojení. Nejčastěji jde o připojení na konzolu (pseudo tty), přesměrování X11 a některých TCP/IP portů, spuštění shellu nebo konkrétního příkazu.

Poté co je spuštěn shell nebo zadaný příkaz, spojení se přepne do interaktivního módu. V tomto módu mohou data plynout oběma směry, mohou být otevřena nová spojení atd. Interaktivní spojení se obvykle uzavírá po ukončení shellu nebo příkazu.

[^obsah^]  [>další část>]

xzarsky@fi.muni.cz