GNU/Linux >> Znalost Linux >  >> Linux

10 nejlepších funkcí SSH, které MUSÍTE znát, abyste byli produktivnější

Tento článek pokračuje v naší sérii článků o Linuxu a pokrývá mnoho užitečných funkcí a triků SSH ke zlepšení vaší každodenní produktivity. Naše vizuály vám pomohou porozumět nastavení SSH, správě konfiguračních souborů, autentizaci, práci s více klíči SSH a samozřejmě místnímu a vzdálenému přesměrování portů SSH. Staňte se mistrem SSH za 10 minut!

Co je SSH

Secure Shell neboli SSH je síťový protokol, který vám umožňuje bezpečně se připojit ke vzdálenému serveru a používat k jeho správě rozhraní konzoly.

Když navážete připojení SSH, server za vás spustí shellovou relaci. Poté můžete zadat příkazy do svého klienta SSH a budou spuštěny na vzdáleném serveru.

Správci systému používají tento protokol k bezpečnému připojení a správě vzdálených serverů Linux.

Jak funguje SSH

Jako každá síťová aplikace používá SSH dvě součásti:

  • Klient SSH je aplikace, kterou nainstalujete do počítače, který budete používat pro připojení k počítači se systémem Linux v síti. Klient SSH naváže šifrované spojení mezi vaším počítačem a vzdáleným serverem.
  • Server SSH je serverová aplikace naslouchající na TCP/IP portu 22 pro klientská připojení. Pokud klient poskytl správné přihlašovací údaje, server SSH vytvoří novou uživatelskou relaci a umožní vám spouštět vzdálené příkazy.

Ověření SSH

SSH umožňuje používat více různých metod ověřování. Nejpoužívanější jsou:

  • Ověření hesla – budete požádáni o uživatelské jméno a heslo, abyste získali přístup ke vzdálenému hostiteli.
  • Ověřování pomocí klíče SSH – používáte veřejný a soukromý klíč SSH k ověření uživatele.

Ověřování pomocí klíče SSH

Tato metoda ověřování je považována za bezpečnější než používání hesel. Funguje to takto:

Algoritmus ověřování pomocí klíče SSH:

  • Klient zahájí připojení SSH.
  • Server odešle zpět náhodnou zprávu.
  • Klient zašifruje přijatou zprávu pomocí soukromého klíče SSH a odešle jej zpět na server.
  • Server dešifruje klientovu zprávu pomocí veřejného klíče SSH . Pokud je zpráva stejná, server udělí přístup.

Použití ověřování heslem v SSH není bezpečné. Pokud stále používáte ověřování heslem, musíte jej co nejdříve změnit na ověřování pomocí klíče SSH.

Jak nainstalovat klienta SSH

Ve většině systémů Linux a macOS je server SSH již nainstalován a je k dispozici ve výchozím nastavení. Ale pokud hrajete s Linuxem na svém virtuálním počítači, možná budete muset nainstalovat.

Ubuntu

Pro distribuce Linuxu založené na deb můžete nainstalovat klienta SSH pomocí následujících příkazů:

sudo apt-get update
sudo apt-get -y install openssh-client

CentOS, Fedora, RedHat

U linuxových distribucí založených na yum můžete klienta SSH nainstalovat pomocí následujících příkazů:

sudo yum -y install openssh-clients
sudo systemctl enable sshd
sudo systemctl start sshd

Windows

Pro operační systém Windows se PuTTY stal standardním de facto klientem SSH. Chcete-li jej nainstalovat, stáhněte si instalační program MSI z výše uvedeného odkazu a postupujte podle pokynů v části Jak nainstalovat PuTTY na Windows.

Zde je automatický způsob používání Chocolatey. Otevřete konzolu PowerShell v režimu „Spustit jako správce“) a proveďte následující příkazy:

Set-ExecutionPolicy RemoteSigned

Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))

choco install putty -y

Jak nainstalovat SSH server

Ve většině systémů Linux a macOS je klient SSH již nainstalován a je k dispozici ve výchozím nastavení. Ale pokud hrajete s Linuxem na svém virtuálním počítači, možná budete muset nainstalovat.

Server SSH – Ubuntu

Pro distribuce Linuxu založené na deb můžete nainstalovat klienta SSH pomocí následujících příkazů:

sudo apt-get update
sudo apt-get -y install openssh-server
sudo systemctl enable sshd
sudo systemctl start sshd

Server SSH – CentOS, Fedora, RedHat

U linuxových distribucí založených na yum můžete klienta SSH nainstalovat pomocí následujících příkazů:

sudo yum -y install openssh
sudo systemctl enable sshd
sudo systemctl start sshd

Server SSH – Windows

SSH server nelze nainstalovat na Windows. Ve světě Windows potřebujete k ovládání vzdálených serverů Windows používat Vzdálenou plochu a WinRM.

Vytvořit klíč SSH

Jakmile budete mít klienta SSH, můžete vytvořit soukromé a veřejné klíče SSH používané pro ověřování SSH Key-Based Authentication. Chcete-li vytvořit klíč SSH, spusťte v terminálu následující příkaz:

ssh-keygen -t rsa -b 4096 -C "[email protected]"

Tento příkaz vytvoří 4 kB klíč RSA:

  • ~/.ssh/id_rsa – Soukromý klíč SSH.
  • ~/.ssh/id_rsa.pub – Veřejný klíč SSH.

Důležité: Soubor soukromého klíče SSH nesmí být nikdy nikomu zobrazen ani odeslán.

Nastavení ověřování pomocí klíče SSH

Chcete-li na serveru nastavit ověřování SSH Key-Based Authentication, musíte provést následující kroky:

  • Přihlaste se na server.
  • Přejděte do domovského adresáře uživatele.
  • Upravit soubor ~/.ssh/authorized_keys a vložte obsah veřejného klíče soubor tam.
  • Uložte změny.

~/.ssh/authorized_keys může obsahovat tolik záznamů o souborech veřejného klíče, kolik potřebujete. Mnoho různých lidí se tedy může připojit k serveru pomocí stejného přihlašovacího jména, ale jejich souborů soukromých klíčů.

Jak se připojit pomocí SSH

Ke vzdálenému serveru Linux se můžete připojit pomocí klienta SSH zadáním následujícího příkazu:

ssh remote_username@host_ip_address

Použít různé klíče SSH pro různé servery

Je to rozšířená situace, kdy možná budete muset použít různé soukromé soubory klíčů SSH pro přístup k různým serverům. Existuje několik způsobů, jak to udělat.

Zadání klíče SSH v příkazu připojení

Chcete-li zadat požadovaný soukromý klíč jako součást příkazu připojení SSH, použijte -i příznak:

ssh -i ~/.ssh/another_private_key remote_username@host_ip_address

Použít agenta SSH

Pokud nemáte příliš mnoho soukromých klíčů, můžete použít agenta SSH.

SSH Agent je program, který načte váš soukromý klíč SSH do paměti a použije jej k předání autentizace SSH.

Linux

Spusťte ssh-agenta na pozadí:

eval "$(ssh-agent -s)"

Chcete-li přidat klíče SSH k agentovi, použijte následující příkazy:

ssh-add -K ~/.ssh/id_rsa
ssh-add -K ~/.ssh/another_private_key

Windows

Distribuce PuTTY obsahuje Pagent, který je umístěn v systémové liště a hraje stejnou roli. Klikněte pravým tlačítkem na Pagent a přidejte svůj klíč SSH.

Nyní klient SSH použije všechny načtené soukromé klíče jeden po druhém k ​​předání autentizace během připojení SSH.

Konfigurační soubor SSH

Další užitečný způsob, jak nakonfigurovat parametry klienta SSH, je pomocí ~/.ssh/config soubor.

Host *
  AddKeysToAgent yes
  UseKeychain yes
  IdentityFile ~/.ssh/id_rsa
Host exceptional.com
  AddKeysToAgent yes
  UseKeychain yes
  IdentityFile ~/.ssh/another_private_key

Ve výše uvedeném příkladu používáme výchozí ~/.ssh/id_rsa soubor soukromého klíče pro všechny servery kromě exceptional.com server. Pro exceptional.com serveru, použijeme ~/.ssh/another_private_key soubor.

Agent SSH a předávání klíčů

Další oblíbenou funkcí SSH, kterou denně používám, je přesměrování klíče SSH. Umožňuje vám používat místní klíče SSH pro připojení k různým serverům.

Přesměrování klíče SSH během spouštění klienta SSH můžete povolit zadáním -T příznak:

ssh -T remote_username@host_ip_address

Nebo můžete tuto konfiguraci trvale povolit u vás ~/.ssh/config soubor zadáním ForwardAgent yes :

Host *
  AddKeysToAgent yes
  UseKeychain yes
  IdentityFile ~/.ssh/id_rsa
  ForwardAgent yes

Přesměrování portu SSH

Protokol SSH vám umožňuje přesměrovat nejen komunikaci SSH Agenta prostřednictvím zabezpečeného kanálu SSH, ale také jakýkoli TCP provoz.

Pokud potřebujete přesměrovat provoz UDP, použijte nc v kombinaci s SSH.

Existují dva typy možností přesměrování portů.

Přesměrování místního portu

Nejlepší způsob, jak vysvětlit přesměrování místního portu SSH, je podívat se na následující diagram.

V tomto diagramu Hostitel skoku server má soukromé připojení k serveru Amazon RDS PostgreSQL.

 Klient notebook se může připojit k hostitelskému serveru Jump pomocí protokolu SSH.

Vlastník klienta laptop hledá způsob, jak se připojit k instanci Amazon RDS .

Funkce místního přesměrování portů SSH umožňuje navázání portu na klienta notebook. Provoz z vázaného portu je přesměrován přes Hostitel skoku serveru do instance Amazon RDS .

V důsledku toho se k instanci RDS připojíte z klienta notebooku, musíte nakonfigurovat pgsql na notebooku a připojte se k localhost:15432 .

Zde je návod, jak je třeba vytvořit připojení SSH k Hostiteli skoku z klienta Linuxu nebo macOS notebook:

ssh -L 127.0.0.1:15432:rds-endpoint-url:5432 ec2-user@jump_host_ip

Pokud používáte PuTTY, musíte provést změny v Připojení – SSH – Tunely před připojením k hostiteli Jump.

Vzdálené přesměrování portů

Vzdálené předávání portů SSH je o něco zajímavější funkcí, která řeší opačný problém. Umožňuje vám svázat port na vzdáleném serveru ssh a předat provoz přicházející na tento port do sítí za hostitelem klienta SSH.

Zde je příklad.

V našem příkladu máme Izolovaný server , která nemá přístup k internetu, a klient notebook, který používáme k připojení k Jump Host .

Provoz mezi Jump HostIzolovaný server není omezeno.

Musíme povolit Izolovaný server pro připojení k internetu. Jak to můžeme udělat?

Můžeme například spustit kontejner Docker s proxy serverem Squid na klientském notebooku na portu 8080. Poté se můžeme připojit k Jump Host pomocí SSH. Funkce vzdáleného předávání portů je svázat port 8081 na Hostitele skoku k přesměrování provozu na klienta port notebooku 8080 .

Výsledkem je Izolovaný server bude moci používat http://jump_host_ip:8081 jako proxy server.

Chcete-li povolit vzdálené předávání portů během připojení SSH v systému Linux nebo macOS:

ssh -R 8081:localhost:8080 ec2-user@jump_host_ip

Pro hostitele PuTTY a Windows:

Přehled

V tomto článku jsem popsal mnoho užitečných funkcí SSH, které používám při své každodenní práci. Doufám, že je také začnete používat. Pokud něco není jasné, kontaktujte mě v sekci komentářů níže. Rád vám pomohu.

Pokud pro vás byl tento článek užitečný, neváhejte mi pomoci jej rozšířit do světa!


Linux
  1. Co je VPS hosting? Vše, co potřebujete vědět o virtuálních privátních serverech

  2. 20 Příkazy OpenSSL Příklady, které musíte znát

  3. [Linux]:12 nejlepších bezpečnostních funkcí, které lze povolit na serveru SSH!

  1. Jak SSH na server pomocí jiného serveru?

  2. Odstraňování problémů s SSH

  3. Server Ubuntu Co potřebujete vědět

  1. Některé alternativy k „horní“ nástroji příkazového řádku, které byste možná chtěli vědět

  2. Redhat vs Ubuntu:15 základních faktů, které musíte vědět

  3. Můžete mít více než jeden soubor ~/.ssh/config?