Jednou z nejatraktivnějších funkcí Linuxu je schopnost dovedně používat počítač pouze pomocí příkazů zadávaných do klávesnice – a ještě lépe, umět to dělat na počítačích kdekoli na světě. Díky OpenSSH mohou uživatelé POSIX otevřít zabezpečený shell na jakémkoli počítači, ke kterému mají oprávnění přistupovat, a používat jej ze vzdáleného umístění. Pro mnoho uživatelů Linuxu je to každodenní úkol, ale pro někoho, kdo to ještě nezkusil, může být matoucí. Tento článek vysvětluje, jak nakonfigurovat dva počítače pro zabezpečené připojení shell (SSH) a jak se bezpečně připojit z jednoho k druhému bez hesla.
Terminologie
Při diskusi o více než jednom počítači může být matoucí identifikovat jeden od druhého. Komunita IT má dobře zavedené termíny, které pomáhají objasnit popis procesu propojení počítačů dohromady.
- Služba: Služba je software, který běží na pozadí, takže jej mohou používat jiné počítače, než na kterém je nainstalována. Webový server například hostí službu pro sdílení webu . Tento termín naznačuje (ale netrvá na tom), že se jedná o software bez grafického rozhraní.
- Hostitel: Hostitel je jakýkoli počítač. V IT se počítačům říká hostitel protože technicky může každý počítač hostit aplikaci, která je užitečná pro jiný počítač. Svůj notebook možná nepovažujete za „hostitele“, ale pravděpodobně provozujete nějakou službu, která je užitečná pro vás, váš mobil nebo jiný počítač.
- Místní: Místní počítač je ten, který používáte vy nebo nějaký software. Každý počítač se označuje jako
localhost
, například. - Vzdálené: Vzdálený počítač je počítač, před kterým nejste fyzicky před námi, ani jej fyzicky nepoužíváte. Je to počítač v vzdáleném umístění.
Nyní, když je terminologie vyřešena, můžete začít.
Aktivovat SSH na každém hostiteli
Aby byly dva počítače připojeny přes SSH, musí mít každý hostitel nainstalován SSH. SSH má dvě součásti:příkaz, který používáte na místním počítači ke spuštění připojení, a server přijímat příchozí požadavky na připojení. Některé počítače se dodávají s jednou nebo oběma částmi SSH již nainstalovanými. Příkazy se liší v závislosti na vašem systému, aby bylo možné ověřit, zda máte nainstalovaný příkaz i server, takže nejjednodušší metodou je vyhledat příslušné konfigurační soubory:
$ file /etc/ssh/ssh_config
/etc/ssh/ssh_config: ASCII text
Pokud by to vrátilo No such file or directory
chyba, pak nemáte nainstalovaný příkaz SSH.
Proveďte podobnou kontrolu pro službu SSH (všimněte si d
v názvu souboru):
$ file /etc/ssh/sshd_config
/etc/ssh/sshd_config: ASCII text
Nainstalujte jeden nebo druhý podle potřeby:
$ sudo dnf install openssh-clients openssh-server
Na vzdáleném počítači povolte službu SSH pomocí systemd:
$ sudo systemctl enable --now sshd
Případně můžete povolit službu SSH v Nastavení systému v GNOME nebo Předvolbách systému na macOS. Na ploše GNOME se nachází v části Sdílení panel:
Spuštění zabezpečeného prostředí
Další zdroje pro Linux
- Cheat pro příkazy Linuxu
- Cheat sheet pro pokročilé příkazy systému Linux
- Bezplatný online kurz:Technický přehled RHEL
- Síťový cheat pro Linux
- Cheat sheet SELinux
- Cheat pro běžné příkazy pro Linux
- Co jsou kontejnery systému Linux?
- Naše nejnovější články o Linuxu
Nyní, když jste na vzdáleném počítači nainstalovali a povolili SSH, můžete se zkusit přihlásit pomocí hesla. Pro přístup ke vzdálenému počítači musíte mít uživatelský účet a heslo.
Váš vzdálený uživatel nemusí být stejný jako váš místní uživatel. Můžete se přihlásit jako libovolný uživatel na vzdáleném počítači, pokud máte heslo tohoto uživatele. Například jsem sethkenlon
na mém pracovním počítači, ale jsem seth
na mém osobním počítači. Pokud jsem na svém osobním počítači (což je můj aktuální místní počítač) a chci do svého pracovního počítače použít SSH, mohu to udělat tak, že se identifikuji jako sethkenlon
a pomocí mého pracovního hesla.
Chcete-li SSH do vzdáleného počítače, musíte znát jeho adresu internetového protokolu (IP) nebo jeho rozlišitelný název hostitele. Chcete-li zjistit IP adresu vzdáleného počítače, použijte ip
příkaz (na vzdáleném počítači):
$ ip addr show | grep "inet "
inet 127.0.0.1/8 scope host lo
inet 10.1.1.5/27 brd 10.1.1.31 [...]
Pokud vzdálený počítač nemá ip
zkuste ifconfig
místo toho (nebo dokonce ipconfig
v systému Windows).
Adresa 127.0.0.1 je speciální a je to ve skutečnosti adresa localhost
. Je to "loopback" adresa, kterou váš systém používá k dosažení sebe sama. To není užitečné při přihlašování ke vzdálenému počítači, takže v tomto příkladu je správná IP adresa vzdáleného počítače 10.1.1.5. V reálném životě bych to věděl, protože moje místní síť používá podsíť 10.1.1.0. Pokud je vzdálený počítač v jiné síti, pak IP adresa může být téměř jakákoliv (nikdy však 127.0.0.1) a k dosažení přes různé firewally je pravděpodobně nutné nějaké speciální směrování. Předpokládejme, že váš vzdálený počítač je ve stejné síti, ale pokud chcete dosáhnout vzdálenějších počítačů, než je vaše vlastní síť, přečtěte si můj článek o otevírání portů ve vaší bráně firewall.
Pokud můžete pingnout vzdálený počítač podle jeho IP adresy nebo jeho název hostitele a mít na něm přihlašovací účet, pak do něj můžete SSH:
$ ping -c1 10.1.1.5
PING 10.1.1.5 (10.1.1.5) 56(84) bytes of data.
64 bytes from 10.1.1.5: icmp_seq=1 ttl=64 time=4.66 ms
$ ping -c1 akiton.local
PING 10.1.1.5 (10.1.1.5) 56(84) bytes of data.
To je úspěch. Nyní se přihlaste pomocí SSH:
$ whoami
seth
$ ssh [email protected]
bash$ whoami
sethkenlon
Testovací přihlášení funguje, takže nyní jste připraveni aktivovat přihlašování bez hesla.
Vytvořte klíč SSH
Chcete-li se bezpečně přihlásit k jinému počítači bez hesla, musíte mít klíč SSH. Klíč SSH již možná máte, ale neuškodí vytvořit si nový. Klíč SSH začíná na vašem místním počítači. Skládá se ze dvou součástí:soukromého klíče, který nikdy s nikým a ničím nesdílíte, a veřejného klíče, který zkopírujete na jakýkoli vzdálený počítač, ke kterému chcete mít přístup bez hesla.
Někteří lidé vytvoří jeden klíč SSH a používají ho pro vše od vzdáleného přihlášení až po ověřování GitLab. Pro různé skupiny úkolů však používám různé klíče. Například používám jeden klíč doma k autentizaci na místních počítačích, jiný klíč k autentizaci na webových serverech, které spravuji, samostatný pro hostitele Git, další pro úložiště Git, která hostuji, a tak dále. V tomto příkladu vytvořím jedinečný klíč pro použití v počítačích v rámci mé místní sítě.
Chcete-li vytvořit nový klíč SSH, použijte ssh-keygen
příkaz:
$ ssh-keygen -t ed25519 -f ~/.ssh/lan
-t
volba znamená type a zajišťuje, že šifrování použité pro klíč je vyšší než výchozí. -f
volba znamená soubor a nastaví název souboru klíče a umístění. Budete vyzváni k vytvoření hesla pro váš klíč SSH. Měli byste vytvořit heslo pro klíč. To znamená, že při použití klíče budete muset zadat heslo, ale toto heslo zůstává místní a nepřenáší se po síti. Po spuštění tohoto příkazu vám zůstane soukromý klíč SSH s názvem lan
a veřejný klíč SSH s názvem lan.pub
.
Chcete-li získat veřejný klíč na váš vzdálený počítač, použijte ssh-copy-id
. Aby to fungovalo, musíte ověřit, že máte ke vzdálenému počítači přístup SSH. Pokud se nemůžete přihlásit ke vzdálenému hostiteli pomocí hesla, nemůžete nastavit ani přihlašování bez hesla:
$ ssh-copy-id -i ~/.ssh/lan.pub [email protected]
Během tohoto procesu budete vyzváni k zadání přihlašovacího hesla na vzdáleném hostiteli.
Po úspěchu se zkuste znovu přihlásit, ale tentokrát pomocí -i
možnost nasměrovat příkaz SSH na příslušný klíč (lan
, v tomto příkladu):
$ ssh -i ~/.ssh/lan [email protected]
bash$ whoami
sethkenlon
Opakujte tento postup pro všechny počítače ve vaší síti a budete moci procházet každým hostitelem, aniž byste museli znovu přemýšlet o heslech. Ve skutečnosti, jakmile máte nastaveno ověřování bez hesla, můžete upravit /etc/ssh/sshd_config
soubor zakázat ověřování hesla. To zabrání komukoli v používání SSH k ověření k počítači, pokud nemá váš soukromý klíč. Chcete-li to provést, otevřete /etc/ssh/sshd_config
v textovém editoru pomocí sudo
oprávnění a vyhledejte řetězec PasswordAuthentication
. Změňte výchozí řádek na tento:
PasswordAuthentication no
Uložte jej a restartujte server SSH (nebo pouze restartujte):
$ sudo systemctl restart sshd && echo "OK"
OK
$
Používání SSH každý den
OpenSSH změní váš pohled na výpočetní techniku. Už nejste vázáni pouze na počítač před vámi. S SSH máte přístup k jakémukoli počítači ve vaší domácnosti nebo serverům, na kterých máte účty, a dokonce i k mobilním zařízením a zařízením pro internet věcí. Odemknutím výkonu SSH se také odemkne výkon linuxového terminálu. Pokud nepoužíváte SSH každý den, začněte hned. Udělejte si s tím pohodlí, seberte klíče, žijte bezpečněji a rozšiřte svůj svět.