2. díl - SSH - Instalace a nastavení serveru

Software SSH SSH - Instalace a nastavení serveru

Minule jsme si udělali menší úvod do SSH a ukázali si, jak se můžeme připojit k serveru. Dnes se podíváme na to, jak server vytvořit a nastavit.

Instalace

Mac

Pro Mac zde jen umístím tento tutoriál. Nemám jak to vyzkoušet, ale princip by měl být podobný jako pro Linux.

Linux

Pro Linux existuje několik řešení, ale zdaleka nejpoužívanější je OpenSSH. Pro jeho instalaci stačí zadat příkaz:

$ sudo apt-get install openssh-server

případně pro Fedoru:

$ sudo yum install openssh-server

Windows

Zde opět najdeme několik alternativ SSH serverů např. freeSSHd.

Aby jste ale neřekli, že jsem Vás odbyl pár programy, přidávám zde ještě odkaz na srovnání různých SSH serverů například i podle systémů, které podporují. ;-)

My si vyzkoušíme freeSSHd. Po stáhnutí a spuštění budete provedení krátkou instalací. zde bych podotknul, že je lepší neinstalovat to jako systémovou službu - je s tím více problémů než užitku. Po instalaci je třeba spustit freeSSHd (doporučuji s Admin právy - bez nich se mi neukládala konfigurace - to by šlo určitě řešit, ale jen jsem to vyzkoušel). Objeví se ikonka v systray. Pravé kliknutí na ni vyvolá jednoduchou nabídku - pomocí Unload můžeme program úplně vypnout.. Další možnost je vstoupit do nastavení.

Konfigurace

Linux a Mac

Hlavní úpravy konfigurace serveru na Linuxu a Macu se provádějí v souboru /etc/ssh/sshd_c­onfig. Konfigurace je ještě více než u klienta, popíšu opět jen základní možnosti.

Port 222

Změní port, na kterém server naslouchá - klienti jej musí znát a specifikovat, pokud je jiný než 22.

ListenAddress 192.168.1.2
ListenAddress 192.168.1.3

Definuje, ze kterých interfaců (v zásadě ze kterých síťových portů) je možné se přihlásit. Pokud má náš server například 4 porty (přičemž každým může být připojen do jiné sítě) a my chceme, aby se dalo přihlásit pomocí SSH jen z určité části sítě, přidáme toto do konfigurace.

ListenAddress 0.0.0.0

Výchozí je, že SSH naslouchá na všech interfacech. Takhle nějak by to vypadalo zapsané..

PermitRootLogin no

Zakazuje/povoluje přihlášení roota. Defaultně vypnuté, není důvod proč zapínat, když máme sudo. Je možné specifikovat volbu without-password. Pak se bude možně přihlásit na roota pouze jinými metodami než heslem.

PasswordAuthentication on

Zakáže/povolí autentifikaci heslem. Doporučeno vypnout a přihlašovat se jinými metodami - například klíčem. To ovšem není vždy možné a proto se i nadále často používá autentifikace heslem. Pokud je zapnutá, uživatelé musí zadat při přihlášení heslo, které je nastaveno u jejich účtu - jako by se přihlašovali k PC lokálně.

AllowTcpForwarding no

Zakáže/povolí TCP tunelování přes SSH. O Tunelování si povíme více v další části článku. Pokud tunelování nepoužíváte, doporučuji vypnout.

X11Forwarding no

Zakáže/povolí tunelování X serveru. Opět pokud nepoužíváte, vypnout.

GatewayPorts no

Povoluje vzdálený port forwarding, pokud nepoužíváte, vypnout.

AllowUsers bob alice franta

Povolí uvedeným uživatelům přístup k SSH. Pokud není volba uvedena, mohou se přihlásit všichni.

DenyUsers mallroy

Zakáže uživatelům přístup k SSH.

MaxStartups 2:30:10

Specifikuje 3 údaje (start:rate:full). Pokud se na server připojuje více než start připojení, každé nové připojení bude odmítnuto s pravděpodobností rate. Pravděpodobnost narůstá lineárně až do full, kdy se všechny nová připojení začnou odmítat.

LoginGraceTime 30

Doba v sekundách, za kterou server odpojí klienta, který se po připojení úspěšně nepřihlásil.

LogLevel VERBOSE

Nastavuje úroveň logování do souboru /var/log/auth.log. Možnosti jsou (seřazené od nejmíň upovídané po nejvíc) : QUIET, FATAL, ERROR, INFO, VERBOSE, DEBUG, DEBUG1, DEBUG2 a DEBUG3.

Banner /etc/issue

Nastavuje zprávu, co se zobrazí klientovi ihned po připojení. Lze takto upozornit někoho na logování systému, a vystrašit tak případné začínající útočníky.

Pro aplikování změn je nutné restartovat SSH server, jinak se změny neprojeví!

Windows

Podíváme se na konfiguraci freeSSHd serveru. Po otevření hlavního okna a tabu SSH, se vám zobrazí následující okno:

  • Listen - Zvolte interface, na kterém bude SSH server naslouchat
  • Port - Port, na kterém SSH bude naslouchat.
  • Max number of connections - Maximální počet současných připojení
  • Idle timeout - Čas, po kterém je nečinný (nezadává žádné příkazy, neběží program) uživatel odhlášen
  • Banner message - Soubor, jehož obsah se zobrazí po připojení - typicky nějaké upozornění
  • Command Shell - Shell, který bude použit pro uživatele (typicky cmd, ale je možné jej změnit třeba na PowerShell)

Dále zde jsou klíče - například při reinstalaci počítače je dobré je zálohovat a následně znovu načíst (obzvláště pokud jsme známý, používaný server). Pozor! Nikde nezveřejňovat - kdokoliv by se pak za vás mohl vydávat a ukrást údaje.

Po nastavení samotného připojení je třeba vytvořit uživatele, na které se budeme moci přihlašovat. Možností je několik, ale my si zatím vystačíme s ověřením pomocí hesla:

Po změně nastavení budete možná muset server restartovat (Unload a spustit znovu). Pokud se SSH server nespustí sám, můžete ho spustit ručně:

Pokud by se objevil error "specified address is already in use", znamená to, že v systému již běží služba, která naslouchá na portu 22 - můžeme buď změnit port a nebo se podívat na otevřené TCP připojení. To můžeme pomocí programu netstat z příkazové řádky.

netstat -anb

Vedle bude napsaný program, který toto připojení využívá. Jeho ukončení problém vyřeší. Pokud jste na Windows 8 nebo novější, je možné, že netstat není nainstalovaný - můžete ho doinstalovat z "Přidat nebo odebrat programy" a "Zapnout nebo vypnout funkce systému Windows" nebo použít nějakou alternativu.

Dnes jsme si ukázali základní nastavení a instalaci SSH serveru. Jestli máte možnost, vyzkoušejte například komunikaci mezi dvěmi PC, na které si nainstaluje a nastavíte SSH servery. Pokud tu možnost nemáte, můžete si vyzkoušet rozchodit SSH spojení mezi vaším OS a virtuálním počítači v něm běžícím. To už není tak jednoduché ;)

Příště se podíváme na pokročilé možnosti SSH - tunelování TCP, bezpečné kopírování souborů, spouštění okenních aplikací ze serveru na klientovi. Ukážeme si také, jak použít klíče pro ověřování uživatelů.


 

  Aktivity (1)

Článek pro vás napsal Filip Šohajek
Avatar

Jak se ti líbí článek?
Celkem (3 hlasů) :
55555


 


Miniatura
Předchozí článek
SSH - Konfigurace a připojení
Miniatura
Všechny články v sekci
SSH
Miniatura
Následující článek
SSH - TCP tunelování

 

 

Komentáře
Zobrazit starší komentáře (2)

Avatar
mkub
Redaktor
Avatar
mkub:

trosku mas tam chybu...

ListenAddress 192.168.1.2
ListenAddress 192.168.1.3

tam su uvedene 2 adresy z jednej, jedinej siete, co si myslim, ze bude sa bit, kedze ListenAddress urcuje, ze na akej adrese (nie porte) ma pocuvat sluzba SSH a spravny format zapisu je:

ListenAddress host|IPv4_addr|IPv6_addr
ListenAddress host|IPv4_addr:port
ListenAddress [host|IPv6_addr]:port
 
Odpovědět 4.6.2015 20:29
Avatar
David Novák
Tým ITnetwork
Avatar
Odpovídá na mkub
David Novák:

Mno zaprvé je to příklad - čísla jsou jednoduše smyšlená - záleží na reálné konfiguraci stroje.

Zadruhé nevidím žádný důvod, proč by to nemělo fungovat. Ten příkaz specifikuje, na jakém interface server naslouchá (resp. alespoň já to tak chápu.. v reálu jsem to zatím nezkoušel).

Hypoteticky máme server, co má 4 porty.. tři jsou připojeny do lokální sítě, jedna do nějaké jiné (na důvodu nezáleží.. někdo to tak nastavil)

fa01 - 192.168.1.1
fa02 - 192.168.1.2
fa03 - 192.168.1.3
fa04 - 154.4.6.1

V lokální síti ještě máme PC s adresou 192.168.1.4

Pokud je server nastavený jako výše, mělo by to fungovat následovně:
Pokud se PC pokusí připojit na první interface (ssh user@192.168.1.1), SSH server by na něj vůbec neměl reagovat. Pokud to zkusí na 02 nebo 03, mělo by to fungovat.. A pokud se někdo z venku pokusí připojit na 154.4.6.1, také by ho to mělo ignorovat..

Možná ještě lepší ilustrace by byla, kdyby bylo nastavení následující:

Port 222
ListenAddress 192.168.1.2:22
ListenAddress 192.168.1.3:2222
ListenAddress 154.4.6.1

Zvenku by se dalo připojit na 154.4.6.1 na port 222, zevnitř na adresu 192.168.1.2 a port 22 a na adresu 192.168.1.3 a port 2222..

Možná by to stálo za to vyzkoušet.. ;)

Odpovědět  +1 4.6.2015 21:28
Chyba je mezi klávesnicí a židlí.
Avatar
mkub
Redaktor
Avatar
Odpovídá na David Novák
mkub:

myslim, ze mat 2 rozhrania zariadenia pripojene do jednej siete je uplne zbytocne a pochybujem, ze to tak niekde robia... iba zbytocne su obsadene sietove rozhrania a bytocne sa plytva adresami...
skor maju na tom zariadeni 2 a viac rozhrani a kazde je prepojene do uplne inej siete

ja by som to urobil takto:

ListenAddress 154.4.6.1:222
ListenAddress 192.168.1.2:22

a k SSH by som sa pripajal cez adresu 192.168.2 a port 22 a adresa 192.168.1.3 by mohla byt pouzita pre klienta

a spravne sa nazyva interface, alebo rozhranie a nie port...

a takisto pre vlastnikov Unix like OS popis konfiguraku v anglictine:

man sshd_config
 
Odpovědět 5.6.2015 0:50
Avatar
David Novák
Tým ITnetwork
Avatar
Odpovídá na mkub
David Novák:

Promiň, ale.. Nevím jak lépe se už vyjádřit. Jasně jsem řekl, že to je jen příklad, který má ilustrovat chování SSH serveru v závislosti na tomto nastavení (jen tak mimochodem - zkoušel jsem a je to přesně tak, jak říkám), ne smysluplný nebo dokonce reálný příklad. Nechápu tedy, proč ho řešíš - napsal jsi, že tam máme chybu.. Ok, super. To se může stát ;)

Doufám, že teď chápeš, proč tam chyba není (v tom nastavení). Co se týče připojování dvou rozhraní do jedné sítě, tak běžně se to samozřejmě nedělá, protože je to zbytečné. Ale zapomínáš na jednu věc.. Připojení dvou interface do jedné sitě je fakticky zdvojnásobení datové propustnosti (pokud samozřejmě není omezována jinými síťovými prvky). Takže v sítích, kde je kladen důraz na co nevyšší propustnost se toto naopak používá často. ;)

Jinak ale, když někdo píše, že HYPOTETICKY něco nějak je a ještě je k tomu poznámka "(na důvodu nezáleží.. někdo to tak nastavil)", tak se tím autor snaží říct, že je to opravdu jen akademický příklad pro vysvětlení principu a nemá smysl řešit jeho reálnou aplikaci.

Jo a k tvé opravě termínů.. Všimni si, co používám:

Ten příkaz specifikuje, na jakém **interface** server naslouchá
Pokud se PC pokusí připojit na první **interface**

Jednou jsem to nazval "port", aby rozumněli případně i lidi, co tuto terminologii neznají. A jinak v tomto případě je to navíc zaměnitelný termín, protože fa rozhraní (pokud není virtuální) opravdu port je, ale na tom nezáleží...

Odpovědět  ±0 5.6.2015 1:24
Chyba je mezi klávesnicí a židlí.
Avatar
mkub
Redaktor
Avatar
Odpovídá na David Novák
mkub:
Připojení dvou interface do jedné sitě je fakticky zdvojnásobení datové propustnosti

pripajanie viac rozhrani do jednej, jedinej siete neriesi datovu priepustnost, skor sa moze stat, ze sa siet rychlejsie zahlti, ak to vykon serveru bude zvladat, ked pridu naraz poziadavky na tie rozhrania...
chcel by som vediet, kto to tak hlupo ma nastavene...

a ked prehadzujes terminy, ze raz interface, raz port, tak sa to moze zaciatocnikom miesat...

 
Odpovědět 5.6.2015 12:34
Avatar
David Novák
Tým ITnetwork
Avatar
Odpovídá na mkub
David Novák:

Jak neřeší? V našem případě máme jako rozhraní fast ethernet, což je 100Mb/s - tedy nic moc.. a použít dvě rozhraní je naprosto validní a u větších sítí dokonce nutné - pro zajištění redundance. Vysvětlím..

Dnes je typické řešit síť hiearchicky - opomenu rozdělování do podsítí případně virtuálních sítí a trunking. Pointa je v tom že existuje dvě a více úrovní switchů, které jsou mezi sebou spojeny podle určitých pravidel (a to víc než je na pohled třeba - redundance). Je to kvůli tomu, aby když vypadne jeden switch, neodpadla celá část sítě a také kvůli rozložení zátěže (každý switch má jen určitý výkon a zvládne přepínat jen x rámců/s).

Na screenu je ukázka takové základní, běžné konfigurace firemní sítě. Většinou se teda používají tři úrovně, ale pro ukázku to bude stačit. Pokud by to bylo jak říkáš, tak za serverem by byl jeden switch, do kterého by byly zapojeny switche, které jsou v kancelářích.. Kdyby měl tenhle hlavní switch závadu (což se běžně stává), celá síť přestane fungovat.. Z jedné kanceláře se nepřipojí do druhé a nikdo se nedostane k serveru..

Když to zapojíš, jak říkám já, tak v případě selhání jednoho hlavního switche se nic neděje (jen se zpomalí provoz). pří běžném provozu to funguje tak, že rámce jsou poslány tou nejrychlejší cestou k cíli - tj. počítač z kanceláře 1 pošle zprávu serveru - zpráva projde nejspíš Switchem8 a Switchem6 (řekněme, že jsou mezi nimi kratší dráty).. Dejme tomu, že toho posílá hodně a zahlcuje to jedno rozhraní (popř. i switch) - když v tu chvíli pošle zprávu někdo z kanceláře 2 (ta by normálně šla stejnou cestou jako z kanceláře 1 (jsou fyzicky hned vedle sebe), ale jelikož si switche udržují statistiku, která cesta je jak rychlá, tak bude komunikace probíhat přes Switch7, což vyústí v lepší čas odezvy a obecně vyšší výkon.

Jinak můžu třeba potvrdit, že přesně tohle se používá na Ekonomické fakultě Masarykovy univerzity v Brně - byl jsem tam v IT oddělení na praxi ;) (trochu offtopic: mají moc pěknouo serverovnu a zajímavé vybavení.. ;) )

Odpovědět 5.6.2015 13:17
Chyba je mezi klávesnicí a židlí.
Avatar
mkub
Redaktor
Avatar
Odpovídá na David Novák
mkub:

sice tym nezahltis to jedno rozhranie, ale zahlcujes celu siet...
v tomto pripade by nebolo prejst zo 100ME na aspon 1GE? alebo zaviest este jednu duplikovanu siet? v tom druhom pripade sa zataz rozdeli na dve separatne siete a nezahlhcuje sa zbytocne ani rozhranie, ako ani switch a pri vypadku switchu sa nestraca ziadna konektivita

 
Odpovědět 5.6.2015 16:40
Avatar
David Novák
Tým ITnetwork
Avatar
Odpovídá na mkub
David Novák:

je to jen hypotetické... :@

a nezahltí se vůbec nic.. proč by prosím tě mělo?
To nejsou rozbočovače.. To jsou switche! je to point-to-point spojení.. Můžeš server do jedné sítě připojit skrze 4 rozhraní a nic se zahlcovat nebude - data jdou jen tomu, kdo si o ně požádá..

Naopak, pokud máš jen jedno rozhraní a jeden switch, tak hrozí zahlcení! Máš nějakou divnou představu o tom, jak to funguje.. Server to nijak nezahltí - nemá jak.. On typicky sám o sobě nic generovat nebude.. a doba broadcastů je dávno pryč..

Samozřejmě, že v reálném nasazení by se použily 1GE rozhraní.. a nejspíš by se to rozdělilo do virtuálních sítí (normální podsítě jsou těžce na ústupu).. ale to se tu neřeší - ber to jako příklad principu..

Odpovědět 5.6.2015 16:51
Chyba je mezi klávesnicí a židlí.
Avatar
mkub
Redaktor
Avatar
Odpovídá na David Novák
mkub:

pokial mas len zopar klientov, tak sa ti ta siet nezahlti ani pri pripojeni vsetkych... ale pokial mas stovky az tisicky klientov a vsetky sa budu chciet pripojit na SSH, tak sa ti ta siet moze zahltit komunikaciou

a viem, co je switch a co hub a viem, aky je medzi nimi rozdiel

 
Odpovědět 5.6.2015 16:57
Avatar
David Novák
Tým ITnetwork
Avatar
Odpovídá na mkub
David Novák:

No a když by to bylo postavené, jak říkáš ty - jedno rozhraní, tak se to zahltí mnohem snáze, protože veškerá ta komunikace půjde přes jediný switch.. :D

Ale zrovna u SSH bych se toho nebál - žádost o připojení je jen pár paketů, SSH server bude mít typicky nastavený max. počet klientů a pokud máš síť dobře nastavenou, tak se to maximálně zpomalí.. Zahlcení nehrozí - CSMA/CD se už dlouho nepoužívá ;)

Odpovědět 5.6.2015 21:05
Chyba je mezi klávesnicí a židlí.
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 10 zpráv z 12. Zobrazit vše