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
~/.sshschmod 700 ~/.ssh. - Chraňte soubor
configa každý soukromý klíč schmod 600. - Zkontrolujte alias s
ssh -G nom_aliaspř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íč.
