Tutoriel Linux

Konfigurace SSH na Linuxu pro vaše servery, aniž byste museli vše znovu psát

Débutant4 min de lecture

Když spravujete více strojů, stejné možnosti SSH rychle skončí v historii: uživatel, port, soukromý klíč, někdy i skok. Soubor ~/.ssh/config nahrazuje tento nekonečný řádek krátkým názvem, například ssh preprod.

Nemusíte měnit server. Toto nastavení žije na vašem počítači a říká klientovi OpenSSH, jak se připojit k každému stroji. Především zabraňuje použití nesprávného klíče nebo portu, když si několik prostředí je podobných.

Vytvořte záznam pro každý server

Vytvořte složku, pokud neexistuje, a poté otevřete konfigurační soubor:

mkdir -p ~/.ssh
chmod 700 ~/.ssh
nano ~/.ssh/config

Poté přidejte blok pro každou mašinu. Zde preprod je pouze místní alias. Nahraďte adresu, účet, port a cestu k klíči svými hodnotami.

Host preprod
    HostName 192.0.2.44
    User admin
    Port 2222
    IdentityFile ~/.ssh/id_ed25519_preprod
    IdentitiesOnly yes

Pak budete moci spustit ssh preprod. HostName obsahuje skutečný DNS název nebo IP adresu, User vzdálený účet a Port SSH port. IdentityFile vybírá očekávaný soukromý klíč. S IdentitiesOnly yes klient nenabízí všechny klíče načtené vaším SSH agentem, což zabraňuje zbytečným pokusům na serveru, který omezuje autentizace.

Pokud již používáte klíč, nejprve zjistěte, že je dobře chráněn. Soukromý klíč by neměl být čitelný ostatními účty na vašem počítači:

chmod 600 ~/.ssh/id_ed25519_preprod
chmod 600 ~/.ssh/config

Průvodce pro vytvoření SSH klíče na Ubuntu pokrývá vytvoření páru klíčů. Nikdy nekopírujte soukromý klíč na server. Pouze veřejný klíč má své místo v ~/.ssh/authorized_keys na vzdálené straně.

Přidejte společná nastavení na konec souboru

Soubor config může obsahovat více bloků Host. Klient OpenSSH si pamatuje první nalezenou hodnotu pro většinu možností. Umístěte tedy nejpřesnější servery nahoru a obecné hodnoty na konec.

Host production
    HostName prod.example.net
    User deploy
    IdentityFile ~/.ssh/id_ed25519_production
    IdentitiesOnly yes

Host sauvegarde
    HostName backup.example.net
    User backup
    Port 2201
    IdentityFile ~/.ssh/id_ed25519_backup
    IdentitiesOnly yes

Host *
    ServerAliveInterval 30
    ServerAliveCountMax 3

Blok Host * se vztahuje na všechny aliasy. Je vhodný pro opravdu společná nastavení, zde pravidelný signál pro detekci zmrazeného spojení. Vyhněte se tomu, abyste do něj umístili klíč nebo uživatele, pokud vaše servery nepoužívají všechny stejný účet.

Můžete také seskupit hostitele, kteří dodržují stejné pravidlo, s výrazem jako Host *.intra. Udržujte výjimky nad tímto blokem. Nejasný alias nebo příliš brzy umístěné obecné pravidlo často přináší překvapující chování.

Zkontrolujte konfiguraci před připojením

Následující příkaz zobrazuje konečnou konfiguraci vypočtenou pro alias, aniž by otevřel relaci. Je to velmi užitečné po provedení úpravy:

ssh -G preprod | grep -E '^(hostname|user|port|identityfile|identitiesonly) '

Zkontrolujte, že hostname, user a port skutečně odpovídají cílovému stroji. Podívejte se také na cestu vrácenou pro identityfile. Pokud jste právě přesunuli klíč, SSH může stále směřovat na starý soubor.

Následně proveďte jednoduchý test:

ssh preprod
ssh -v preprod

Možnost -v zobrazuje kroky připojení a přečtené konfigurační soubory. Neveřejněte tuto výstup tak, jak je, v tiketě nebo chatu: může odhalit vaše názvy hostitelů, účty a místní cesty.

Když soubor config nestačí

Alias SSH řeší opakování možností. Opravené není server, který odmítá váš klíč, uzavřený port nebo změněný otisk hostitele. Pokud vás autentizace často žádá o vaše heslo, použijte ssh-agent místo vyjmutí hesla z klíče.

Chcete-li dosáhnout interního služby přes bastion, ponechte samostatný záznam s ProxyJump a otestujte jej odděleně. SSH tunel splňuje jinou potřebu: přenáší místní nebo vzdálený port, nenahrazuje konfiguraci hostitele.

  • Chraňte ~/.ssh s chmod 700 ~/.ssh.
  • Chraňte soubor config a každý soukromý klíč s chmod 600.
  • Zkontrolujte alias s ssh -G nom_alias před prvním připojením.
  • Testujte každý nový server s jeho aliasem, poté si udržte společné možnosti v bloku Host * umístěném na konci souboru.

Oficiální dokumentace ssh_config(5) podrobně popisuje každou direktivu. Vezměte si dvě minuty na přečtení výstupu z ssh -G před použitím aliasu na produkčním stroji: je to rychlejší než hledat, proč SSH vybral nesprávný klíč.

Počítač Linux připojený k několika serverům pro konfiguraci SSH
Lokální konfigurace SSH umožňuje připojit se k každému serveru s dedikovaným aliasem.