Pokud se pravidelně připojujete k více vzdáleným systémům přes SSH, zjistíte, že zapamatovat si všechny vzdálené IP adresy, různá uživatelská jména, nestandardní porty a různé možnosti příkazového řádku je obtížné, ne-li nemožné.
Jednou z možností by bylo vytvořit bash alias pro každé připojení ke vzdálenému serveru. Existuje však jiné, mnohem lepší a přímočařejší řešení tohoto problému. OpenSSH vám umožňuje nastavit konfigurační soubor pro jednotlivé uživatele, kde můžete uložit různé možnosti SSH pro každý vzdálený počítač, ke kterému se připojujete.
Tento článek popisuje základy konfiguračního souboru klienta SSH a vysvětluje některé nejběžnější možnosti konfigurace.
Předpoklady #
Předpokládáme, že používáte systém Linux nebo macOS s nainstalovaným klientem OpenSSH.
Umístění konfiguračního souboru SSH #
Konfigurační soubor OpenSSH na straně klienta se jmenuje config
a je uložen v .ssh
adresář pod domovským adresářem uživatele.
~/.ssh
adresář se automaticky vytvoří, když uživatel spustí ssh
příkaz poprvé. Pokud adresář ve vašem systému neexistuje, vytvořte jej pomocí níže uvedeného příkazu:
mkdir -p ~/.ssh && chmod 700 ~/.ssh
Ve výchozím nastavení konfigurační soubor SSH nemusí existovat, takže jej možná budete muset vytvořit pomocí touch
příkaz:
touch ~/.ssh/config
Tento soubor musí být čitelný a zapisovatelný pouze pro uživatele a nesmí být přístupný ostatním:
chmod 600 ~/.ssh/config
Struktura a vzory konfiguračního souboru SSH #
Konfigurační soubor SSH má následující strukturu:
Host hostname1
SSH_OPTION value
SSH_OPTION value
Host hostname2
SSH_OPTION value
Host *
SSH_OPTION value
Obsah konfiguračního souboru klienta SSH je uspořádán do stanz (sekcí). Každá stanza začíná Host
a obsahuje specifické možnosti SSH používané při navazování spojení se vzdáleným serverem SSH.
Odsazení není vyžadováno, ale je doporučeno, protože usnadňuje čtení souboru.
Host
Direktiva může obsahovat jeden vzor nebo seznam vzorů oddělených mezerami. Každý vzor může obsahovat nula nebo více znaků bez mezer nebo jeden z následujících specifikátorů vzoru:
*
- Odpovídá žádnému nebo více znakům. NapříkladHost *
odpovídá všem hostitelům, zatímco192.168.0.*
odpovídá hostitelům v192.168.0.0/24
podsíť.?
– Odpovídá přesně jednomu znaku. Vzor,Host 10.10.0.?
odpovídá všem hostitelům v10.10.0.[0-9]
rozsah.!
– Při použití na začátku vzoru neguje shodu. NapříkladHost 10.10.0.* !10.10.0.5
odpovídá libovolnému hostiteli v10.10.0.0/24
podsíť kromě10.10.0.5
.
Klient SSH čte stanzu konfiguračního souboru po stanze, a pokud se shoduje více než jeden vzor, mají přednost volby z první odpovídající stanzy. Proto by na začátku souboru mělo být uvedeno více deklarací specifických pro hostitele a na konci souboru obecnější přepisy.
Úplný seznam dostupných možností ssh najdete zadáním man ssh_config
ve vašem terminálu nebo na stránce manuálu ssh_config.
Konfigurační soubor SSH čtou také jiné programy, jako je scp
, sftp
a rsync
.
Příklad konfiguračního souboru SSH #
Nyní, když jsme probrali základy konfiguračního souboru SSH, podívejme se na následující příklad.
Při připojování ke vzdálenému serveru přes SSH byste obvykle zadali jméno vzdáleného uživatele, název hostitele a port. Chcete-li se například přihlásit jako uživatel s názvem john
na hostitele s názvem dev.example.com
na portu 2322
z příkazového řádku byste napsali:
ssh [email protected] -p 2322
Chcete-li se připojit k serveru pomocí stejných možností, jaké jsou uvedeny v příkazu výše, jednoduše zadáním ssh dev
, vložte následující řádky do "~/.ssh/config
soubor:
Host dev
HostName dev.example.com
User john
Port 2322
Nyní, když napíšete ssh dev
, ssh klient načte konfigurační soubor a použije podrobnosti o připojení, které jsou specifikovány pro dev
hostitel:
ssh dev
Příklad sdíleného konfiguračního souboru SSH #
Tento příklad poskytuje podrobnější informace o vzorech hostitele a prioritě možností.
Vezměme si následující příklad souboru:
Host targaryen
HostName 192.168.1.10
User daenerys
Port 7654
IdentityFile ~/.ssh/targaryen.key
Host tyrell
HostName 192.168.10.20
Host martell
HostName 192.168.10.50
Host *ell
user oberyn
Host * !martell
LogLevel INFO
Host *
User root
Compression yes
-
Když napíšete
ssh targaryen
, ssh klient přečte soubor a použije možnosti z první shody, což jeHost targaryen
. Potom zkontroluje další sloky jeden po druhém na shodující se vzor. Další odpovídající jeHost * !martell
(to znamená všechny hostitele kroměmartell
) a použije volbu připojení z této stanzy. Poslední definiceHost *
se také shoduje, ale ssh klient bude mít pouzeCompression
možnost, protožeUser
možnost je již definována vHost targaryen
sloka.Úplný seznam možností použitých při psaní
ssh targaryen
je následující:HostName 192.168.1.10 User daenerys Port 7654 IdentityFile ~/.ssh/targaryen.key LogLevel INFO Compression yes
-
Při spuštění
ssh tyrell
odpovídající vzory hostitelů jsou:Host tyrell
,Host *ell
,Host * !martell
aHost *
. Možnosti použité v tomto případě jsou:HostName 192.168.10.20 User oberyn LogLevel INFO Compression yes
-
Pokud spustíte
ssh martell
, odpovídající vzory hostitelů jsou:Host martell
,Host *ell
aHost *
. Možnosti použité v tomto případě jsou:HostName 192.168.10.50 User oberyn Compression yes
-
Pro všechna ostatní připojení použije klient ssh možnosti uvedené v
Host * !martell
aHost *
sekce.
Přepsat možnost konfiguračního souboru SSH #
Klient ssh čte svou konfiguraci v následujícím pořadí priority:
- Možnosti zadané z příkazového řádku.
- Možnosti definované v
~/.ssh/config
. - Možnosti definované v
/etc/ssh/ssh_config
.
Pokud chcete přepsat jednu možnost, můžete ji zadat na příkazovém řádku. Pokud máte například následující definici:
Host dev
HostName dev.example.com
User john
Port 2322
a chcete použít všechny ostatní možnosti kromě připojení jako uživatel root
místo john
jednoduše zadejte uživatele na příkazovém řádku:
ssh -o "User=root" dev
-F
(configfile
) umožňuje zadat alternativní konfigurační soubor pro jednotlivé uživatele.
Chcete-li sdělit ssh
Chcete-li klienta ignorovat všechny možnosti uvedené v konfiguračním souboru ssh, použijte:
ssh -F /dev/null [email protected]
Závěr č.
Ukázali jsme vám, jak nakonfigurovat svůj uživatelský konfigurační soubor ssh. Můžete také chtít nastavit ověřování na základě klíče SSH a připojit se k serverům Linux bez zadávání hesla.
Ve výchozím nastavení SSH naslouchá na portu 22. Změna výchozího portu SSH přidá vašemu serveru další vrstvu zabezpečení snížením rizika automatických útoků.
Pokud máte nějaké dotazy, zanechte prosím níže komentář.