GNU/Linux >> Znalost Linux >  >> Linux

Pomocí konfiguračního souboru SSH

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říklad Host * odpovídá všem hostitelům, zatímco 192.168.0.* odpovídá hostitelům v 192.168.0.0/24 podsíť.
  • ? – Odpovídá přesně jednomu znaku. Vzor, Host 10.10.0.? odpovídá všem hostitelům v 10.10.0.[0-9] rozsah.
  • ! – Při použití na začátku vzoru neguje shodu. Například Host 10.10.0.* !10.10.0.5 odpovídá libovolnému hostiteli v 10.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:

~/.ssh/config
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ž je Host targaryen . Potom zkontroluje další sloky jeden po druhém na shodující se vzor. Další odpovídající je Host * !martell (to znamená všechny hostitele kromě martell ) a použije volbu připojení z této stanzy. Poslední definice Host * se také shoduje, ale ssh klient bude mít pouze Compression možnost, protože User možnost je již definována v Host 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 a Host * . 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 a Host * . 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 a Host * sekce.

Přepsat možnost konfiguračního souboru SSH #

Klient ssh čte svou konfiguraci v následujícím pořadí priority:

  1. Možnosti zadané z příkazového řádku.
  2. Možnosti definované v ~/.ssh/config .
  3. 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ář.


Linux
  1. Ssh – Jak urychlit příliš pomalé přihlašování Ssh?

  2. Účel použití Fifo vs dočasný soubor nebo potrubí?

  3. Jak připojit vzdálený hostitel pomocí příkazu ssh

  1. Jak změnit konfiguraci u-boot v Yocto

  2. Jak přimět ssh, aby se přihlásil jako správný uživatel?

  3. Odstraňte soubor v systému Linux pomocí čísla inodu

  1. Jak změnit limit_paměti v souboru .htaccess

  2. The Bash ‘?

  3. Jak změnit kódování, které používá můj SFTP server?