Linux
Název školy | Vyšší odborná škola obalové techniky a Střední škola, Štětí, příspěvková organizace | ||
Adresa školky | Kostelní 134, 411 08 Štětí | ||
IČ | 46773509 | ||
Název operačního programu | OP Vzdělávání pro konkurenceschopnost | ||
Registrační číslo | CZ.1.07/1.5.00/34.1006 | ||
Označení vzdělávacího materiálu | |||
Název tématické oblasti (sady) | Operační systémy | ||
Název materiálu | SSH | ||
Anotace | |||
Autor | Ivan Pomykacz | Jazyk | český |
Očekávaný výstup | |||
Klíčová slova | |||
Druh výukového zdroje | Výklad | Věková skupina žáků | 17+ |
Typ interakce | aktivita | Ročník | 4. |
Speciální vzdělávací potřeby | žádné | ||
Zhotoveno, (datum/období) | Celková velikost |
Obsah
- Služba SSH
- Instalace
- Parametry služby a konfigurace
- Připojení k serveru
- Konfigurace klienta
- SFTP server
Služba SSH
Poskytuje (v zabezpečené formě):
Vzdálený přístup k shellu. Můžete tak provádět všechny příkazy, jakoby jste byli přímo u počítače.
Různé způsoby autentizace uživatele. Např. pomocí klasického jména a hesla nebo použitím tzv. klíčů.
Přenos souborů;
Tunelování portů;
VPN;
Instalace
Instalace spočívá v instalaci balíčku: openssh-server
.
Ihned po instalaci je služba aktivní a lze se tedy připojit k serveru prostřednictvím SSH.
Službu lze vypnout (dočasně) příkazem service ssh stop
, případně restartovat service ssh restart
, a nebo spustit service ssh start
.
Dočasně znamená, že nově nastavený stav se vyruší restartem.
Trvalá deaktivace služby, resp. aktivace se provede příkazem: update-rc.d ssh disable
, resp. update-rc.d ssh enable
.
Uživatelé
Jakýkoli uživatel, který má platný login v systému se nyní může autentizovat proti serveru. Při úspěchu tak získá přístup k shellu, a může tedy spouštět libovolné příkazy (v rámci svých práv, samozřejmě).
Přístupy uživatelů a způsoby autentizace lze nastavit v konfiguračním souboru služby.
Parametry služby a konfigurace
Veškeré nastavení služby se odehrává v konfiguračním souboru /etc/ssh/sshd_config
.
Pokud provedete změny v tomto souboru, nebudou aktivní okamžitě.
V takovém případě budete chtít provést "reload" služby příkazem: service ssh reload
.
Lze použít i parametr restart
. To záleží, do jaké míry chcete ovlivnit stávající spojení.
ListenAddress
Služba standardně naslouchá na všech síťových rozhraních. Tzn., můžete se připojit jak ze vzdáleného počítače (pokud je server v síti), a nebo přímo z localhostu.
Direktivou ListenAddress
lze ovlivnit konkrétní rozhraní, na kterém má SSH naslouchat.
Hodnoty ::
, resp. 0.0.0.0
znamenají všechna rozhraní.
Port
Služba standardně naslouchá na TCP portu č. 22.
Z bezpečnostních důvodu se hodnota může změnit na jiné hodnoty, zpravidla z rozsahu od 1024 do 65535.
Je třeba ale upozornit na to, že změnou portu lze odrazit potenciální útok jen u hloupých robotů, kteří již dále nezkoumají, proč server odmítl spojení.
Logování
SSH používá logovací démon syslog a veškeré informace se zaznamenávají do souboru /var/log/auth.log
.
Autentizace heslem
Ve výchozím stavu je standardně povolena autentizace heslem, tzn., že uživatel se během přihlašování k serveru autentizuje použitím přihlašovacího jména a hesla.
Přenos této informace je ovšem již šifrovaný. Šifrovaný spoj se tedy nevytváří na základě uživatelova hesla.
Autentizace klíčem
I tento způsob je ve výchozím stavu povolen. Uživatel může využít ověření pomocí privátního a veřejného klíče.
Předpokladem je, že uživatel má již na serveru umístěný svůj veřejný klíč v souboru AuthorizedKeysFile
(jež je definovaný v konfiguračním souboru služby).
Autentizace uživatele pak proběhne "jakoby" bez hesla.
Heslo, resp. passphrase může být po uživateli požadována v případě použití zašifrovaného privátního klíče.
(Pokud ovšem uživatel nepoužívá ssh-agent
)
Další konfigurační volby
AuthorizedKeysFile
Umístění souboru s autorizovanými veřejnými klíči.
PermitRootLogin
Povolení přihlášení uživatele root (hodnota: yes | no
).
PubkeyAuthentication
Povolení přihlašování pomocí klíčů (hodnota: yes | no
).
AllowGroups
Povolené skupiny, které se mohou přihlásit prostřednictvím SSH (jména skupin jsou odděleny mezerou).
DenyGroups
Skupiny, které mají odepřený přístup k SSH.
AllowUsers
Obdobně jako skupiny, tak seznam povolených uživatelů.
DenyUsers
Seznam blokovaných uživatelů.
Podstatné je, v jakém pořadí se direktivy pro Allow a Deny vykonávají, zde: DenyUsers, AllowUsers, DenyGroups, a nakonec AllowGroups.
Připojení k serveru
Obecná syntaxe pro připojení klienta je:
ssh [-p 22] username@hostname
Port je výchozí, netřeba tedy zadávat. Jediné, co je třeba doplnit je username a hostname (což může být i IP adresa). Na heslo budete vyzváni záhy.
Konfigurace klienta
Linuxový ssh klient načítá konfiguraci ze souborů: (globální) /etc/ssh/ssh_config
a (lokální) ~/.ssh/config
.
V tom druhém si uživatelé zpravidla konfigurují přístupy k serverům.
Příklad nastavení hostitele
Řekněme, že se pravidelně připojuji do školy přes SSH s účtem spravce. Služba běží záměrně na jiném portu, zde 2014.
Sestavený příkaz by mohl vypadat: ssh -p 2014 spravce@ssh.odbornaskola.cz
Pokud ovšem mám takovýchto serverů více, každý na jiném portu, s jiným uživatelem, pak by se hodila možnost si nastavení pro jednotlivá připojení někam uložit.
A to je právě možné do souboru ~/.ssh/config
.
Záznam pro výše uvedený příklad by mohl vypadat takto:
Host skola HostName ssh.odbornaskola.cz Port 2014 User spravce
Nyní bude příkaz vypadat: ssh skola
SFTP server
Následuje příklad, jak využít SSH pouze pro přenos souborů (a nikoli pro přístup k příkazovému shellu)
I v tomto případě je nezbytné mít založený lokální účet - nechť se jmenuje: webmaster
.
Webmaster je takový atypický uživatel - potřebuje přístup k webovým stránkám, ale už nechceme, aby měl přístup k shellu, a mohl tak spouštět lib. příkazy.
Založení účtu by mohlo vypadat např. takto:
# useradd -d /srv/www -s /usr/lib/sftp-server webmaster
Všimněte si, že účet webmastera je nasměrován do jiného adresáře (ten jsme vytvořili jako uživatel root). Zároveň má webmaster nastavený zcela jiný příkazový shell, který se postará možnost transféru souborů, ale ničeho jiného.
Vnucený sftp-server
Další možností je, vnutit sftp přímo v konfiguračním souboru SSH služby. Např.:
Match User webmaster ChrootDirectory /srv/www AllowTCPForwarding no X11Forwarding no ForceCommand internal-sftp
Match User
se postará o to, že se po něm následující volby aplikují pouze na daného uživatele.
Zde se pak nabízí použití dalších direktiv a sice:
ChrootDirectory
Uzamkne uživatele v daném adresáři (tj, nemůže jej opustit). Velice výhodné, uživatel se tak alespoň bezprizorně neprochází po našem serveru.
AllowTCPForwarding
Zamezí použití dalších služeb ssh, jako např. přesměrování portů.
X11Forwarding
Zamezí použití konkrétně protokolu X11 (grafická nadstavba).
ForceCommand
Vynutí spuštění příkazového "shellu" (v příkladu internal-sftp
, což výše v souboru ukazuje právě na /usr/lib/sftp-server
).