Wanneer u meerdere machines beheert, eindigen dezelfde SSH-opties snel in de geschiedenis: gebruiker, poort, privésleutel, soms een sprongetje. Het bestand ~/.ssh/config vervangt deze eindeloze regel door een korte naam, bijvoorbeeld ssh preprod.
U hoeft de server niet te wijzigen. Deze configuratie leeft op uw computer en vertelt de OpenSSH client hoe elke machine te bereiken. Het voorkomt vooral dat u de verkeerde sleutel of poort gebruikt wanneer meerdere omgevingen op elkaar lijken.
Maak een invoer per server
Maak de map aan als deze nog niet bestaat, en open vervolgens het configuratiebestand:
mkdir -p ~/.ssh
chmod 700 ~/.ssh
nano ~/.ssh/config
Voeg vervolgens een blok per machine toe. Hier is preprod alleen een lokale alias. Vervang het adres, het account, de poort en het pad naar de sleutel door uw waarden.
Host preprod
HostName 192.0.2.44
User admin
Port 2222
IdentityFile ~/.ssh/id_ed25519_preprod
IdentitiesOnly yes
U kunt dan ssh preprod uitvoeren. HostName bevat de echte DNS-naam of het IP-adres, User het externe account en Port de SSH-poort. IdentityFile selecteert de verwachte privésleutel. Met IdentitiesOnly yes biedt de client niet alle sleutels aan die door uw SSH-agent zijn geladen, wat onnodige pogingen op een server die de authenticaties beperkt, voorkomt.
Als u al een sleutel gebruikt, controleer dan eerst of deze goed beschermd is. Een privésleutel mag niet leesbaar zijn voor andere accounts op uw computer:
chmod 600 ~/.ssh/id_ed25519_preprod
chmod 600 ~/.ssh/config
De handleiding voor het genereren van een SSH-sleutel op Ubuntu behandelt het maken van het sleutelpair. Kopieer nooit een privésleutel naar de server. Alleen de openbare sleutel hoort thuis in ~/.ssh/authorized_keys aan de andere kant.
Voeg algemene instellingen toe aan het einde van het bestand
Een config bestand kan meerdere Host blokken bevatten. De OpenSSH-client onthoudt de eerste waarde die voor de meeste opties is gevonden. Plaats dus de meest specifieke servers bovenaan en de algemene waarden onderaan.
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
Het blok Host * is van toepassing op alle aliassen. Het is geschikt voor echt algemene instellingen, hier het periodiek verzenden van een signaal om een bevroren verbinding te detecteren. Vermijd het toevoegen van een sleutel of gebruiker als uw servers niet allemaal hetzelfde account gebruiken.
U kunt ook hosten groeperen die dezelfde regel volgen, met een patroon zoals Host *.intra. Houd de uitzonderingen boven dit blok. Een vage alias of een te vroeg geplaatste algemene regel zorgt vaak voor verrassend gedrag.
Controleer de configuratie voordat u verbinding maakt
De volgende opdracht toont de uiteindelijke configuratie die is berekend voor een alias, zonder een sessie te openen. Het is erg handig na een wijziging:
ssh -G preprod | grep -E '^(hostname|user|port|identityfile|identitiesonly) '
Controleer of hostname, user en port goed overeenkomen met de beoogde machine. Kijk ook naar het pad dat wordt geretourneerd voor identityfile. Als u net een sleutel hebt verplaatst, kan SSH nog steeds naar het oude bestand wijzen.
Voer vervolgens een eenvoudige test uit:
ssh preprod
ssh -v preprod
De optie -v toont de verbindingsstappen en de gelezen configuratiebestanden. Publiceer deze uitvoer niet zomaar in een ticket of chat: het kan uw hostnamen, accounts en lokale paden onthullen.
Wanneer het configuratiebestand niet voldoende is
Een SSH-alias lost de herhaling van opties op. Het corrigeert geen server die uw sleutel weigert, een gesloten poort of een gewijzigde hostfingerprint. Als de authenticatie u vaak om uw wachtwoord vraagt, gebruik dan ssh-agent in plaats van het wachtwoord van de sleutel te verwijderen.
Om een interne service via een bastion te bereiken, behoudt u een aparte invoer met ProxyJump en test deze apart. De SSH-tunnel voldoet aan een andere behoefte: het transporteert een lokale of externe poort, het vervangt niet de configuratie van een host.
- Beveilig
~/.sshmetchmod 700 ~/.ssh. - Beveilig het
configbestand en elke privésleutel metchmod 600. - Controleer de alias met
ssh -G nom_aliasvoordat u voor de eerste keer verbinding maakt. - Test elke nieuwe server met zijn alias, en behoud vervolgens de algemene opties in een
Host *blok dat onderaan het bestand staat.
De officiële documentatie ssh_config(5) beschrijft elke richtlijn. Neem twee minuten de tijd om de uitvoer van ssh -G door te nemen voordat u een alias op een productiecomputer gebruikt: het is sneller dan uitzoeken waarom SSH de verkeerde sleutel heeft gekozen.
