In de vorige post hebben we de basisprincipes van het gebruik van het ssh
-commando en enkele nuttige opties besproken. Maar het is behoorlijk vervelend om elke keer weer ingewikkelde IP-adressen, gebruikersnamen en poortnummers in te voeren. In zo'n geval kan het gebruik van een SSH Config-bestand deze rompslomp in één keer oplossen. Het is als een favorietenlijst waarin je vaak gebruikte servertoegangsinformatie kunt opslaan en waarmee je eenvoudig kunt inloggen met een alias.
Wat is een SSH Config-bestand?
Een SSH Config-bestand is een configuratiebestand dat de werking van de SSH-client aangepast aan jouw voorkeuren. Door toegangsinformatie voor specifieke hosts (gebruikersnaam, poort, te gebruiken sleutelbestand, enz.) van tevoren in dit bestand op te slaan, kun je later inloggen met slechts een korte alias.
- Plaats: Gewoonlijk bevindt het zich in de
.ssh
map van je gebruikershome-directory, onder de naamconfig
.- Voorbeeld:
~/.ssh/config
- Voorbeeld:
-
Bestand aanmaken: Als het
~/.ssh/config
-bestand niet bestaat, kun je het zelf aanmaken.bash touch ~/.ssh/config chmod 600 ~/.ssh/config # Beperk de lees- en schrijftoegang tot alleen de eigenaar
Regels voor het schrijven van config-bestanden
Het config-bestand is een eenvoudig tekstbestand en elke instelling voor een host begint met het Host
-sleutelwoord, gevolgd door een blok met instellingen.
Basisstructuur
Host [alias]
[optie1] [waarde1]
[optie2] [waarde2]
...
-
Host [alias]
: Dit geeft het begin van dit blok aan en definieert de alias die je wilt gebruiken. Deze alias wordt gebruikt in het SSH-commando. In plaats van de alias kun je ook het werkelijke hostadres (IP of domein) direct invoeren. Je kunt ook jokertekens (*
,?
) gebruiken. -
Inspringing: De opties onder
Host
moeten worden ingesprongen. Je kunt spaties of tabs gebruiken, maar het is beter om consistent te blijven. -
Opties: Onder de
Host
-sectie lijst je verschillende SSH-opties die van toepassing zijn wanneer je met deze alias inlogt. Deze opties zijn dezelfde als die je eerder in de vorm vanssh -optie
hebt gebruikt.
Veelgebruikte opties
Optie | Beschrijving | Voorbeeldwaarde |
HostName |
Het IP-adres of de domeinnaam van de server waarop je toegang zoekt | 192.168.1.100 of example.com |
User |
Gebruikersnaam voor toegang tot de externe server | ubuntu , ec2-user , root |
Port |
Het SSH-poortnummer van de externe server (standaard 22) | 2222 |
IdentityFile |
Pad naar het privésleutelbestand dat gebruikt zal worden voor de verbinding | ~/.ssh/id_ed25519_myserver |
ForwardAgent |
SSH-agent forwarding inschakelen (Agent Forwarding, bij gebruik van ssh-agent ) |
ja |
StrictHostKeyChecking |
Of hostkey-controle streng moet zijn (ja aanbevolen) |
nee (tijdelijk gebruiken tijdens initiële tests) |
PortForwarding |
Of poortforwarding is toegestaan | ja |
LocalForward |
Instelling voor lokale poortforwarding (-L optie) |
8080 localhost:80 |
ServerAliveInterval |
Interval voor het controleren of de server actief is (in seconden) | 60 (voorkomen van verbroken verbinding) |
ServerAliveCountMax |
Aantal pogingen om de verbinding te behouden voordat deze wordt verbroken bij servercontrole-fouten | 3 |
Voorbeeld van het schrijven van een SSH Config-bestand
Laten we instellingen voor een paar vaak benaderde servers toevoegen aan het ~/.ssh/config
-bestand.
# Eerste server: webserver (alias: webserver)
Host webserver
HostName 192.168.1.100
User ubuntu
Port 2222
IdentityFile ~/.ssh/id_ed25519_webserver # Sleutel voor webserver
# Tweede server: ontwikkelingsserver (alias: devbox)
Host devbox
HostName dev.example.com
User developer
IdentityFile ~/.ssh/id_rsa_dev # RSA-sleutel
# Poort 8000 lokaal doorsturen naar poort 80 op de externe server
LocalForward 8000 localhost:80
# Derde server: alle AWS EC2-servers (alias: aws-*)
Host aws-*
User ec2-user
IdentityFile ~/.ssh/aws_ec2_key.pem
# Regelmatig signalen verzenden om verbinding te behouden
ServerAliveInterval 60
ServerAliveCountMax 3
# Algemene instellingen voor specifieke IP-bereiken (alias: 10.0.0.*)
Host 10.0.0.*
User admin
Port 22
Uitleg:
-
webserver
: Hiermee kun je inloggen op de192.168.1.100
server als de gebruikerubuntu
met poort2222
en deid_ed25519_webserver
sleutel. -
devbox
: Je logt in op dedev.example.com
server met de gebruikerdeveloper
en deid_rsa_dev
sleutel, en je forwarded de lokale poort 8000 naar poort 80 op de externe server. -
aws-*
: Dit zijn de instellingen die van toepassing zijn op alle aliassen die beginnen metaws-
. Bijvoorbeeld, wanneer je inlogt metaws-prod
ofaws-dev
, worden deUser
enIdentityFile
instellingen automatisch toegepast.HostName
wordtprod
als je inlogt opaws-prod
(gebruik later hetssh aws-prod
commando). -
10.0.0.*
: Voor IP-adressen in het formaat10.0.0.x
wordt automatisch de gebruikeradmin
en poort 22 ingesteld.
Hoe gebruik je het Config-bestand
Nu je de instellingen in het config-bestand hebt opgeslagen, is het daadwerkelijke inloggen een stuk eenvoudiger. Laten we het voorbeeld volgen:
1. Inloggen met een alias
Voer het SSH-inlogcommando uit met alleen de alias.
webserver
alias gebruiken:
ssh webserver
Voer het wachtwoord in voor sleutel '/home/youruser/.ssh/id_ed25519_webserver':
ubuntu@webserver-ip:~ $
Dit commando werkt intern als `ssh -p 2222 -i ~/.ssh/id_ed25519_webserver ubuntu@192.168.1.100`.
devbox
alias gebruiken:
ssh devbox
Voer het wachtwoord in voor sleutel '/home/youruser/.ssh/id_rsa_dev':
developer@devbox-domein:~ $
(Als je ook verbinding maakt met de lokale poort 8000, wordt deze verbonden met poort 80 op dev.example.com)
aws-prod
(jokerteken alias) gebruiken:
ssh aws-prod
Voer het wachtwoord in voor sleutel '/home/youruser/.ssh/aws_ec2_key.pem':
ec2-user@aws-prod-hostname:~ $
Opmerking: Voor wildcard Host
aliassen zoals aws-prod
, waarbij de hostnaam niet specifiek is opgegeven, moet je wellicht expliciet de HostName
-optie opgeven of de hostnaam op de opdrachtregel specificeren. In het bovenstaande aws-*
voorbeeld is de HostName
niet opgegeven, dus wanneer je ssh aws-prod
uitvoert, probeert de SSH-client prod
als hostnaam te interpreteren. Het is gebruikelijk om een duidelijke definitie te gebruiken, zoals Host prod-server
gekoppeld aan HostName prod.example.com
.
Voordelen van het gebruik van een Config-bestand
- Gemak: Vervang lange en complexe SSH-opdrachten door korte aliassen, waardoor invoerfouten verminderen en tijd bespaard kan worden.
- Productiviteit: Je kunt snel schakelen tussen vaak gebruikte servers, wat de efficiëntie verhoogt.
- Beheerbaarheid: Alle inloggerelateerde instellingen kunnen op één plek worden beheerd, wat onderhoud vergemakkelijkt. Bijvoorbeeld, als het IP-adres van de server verandert, hoef je alleen het config-bestand aan te passen.
- Beveiliging: Je hoeft geen gevoelige informatie (zoals het pad naar sleutelbestanden) in de opdrachtgeschiedenis achter te laten.
Tot slot
Het SSH Config-bestand is een essentieel hulpmiddel voor elke ontwikkelaar en systeembeheerder die SSH gebruikt. Door dit bestand te gebruiken kun je je SSH-toegangservaring veel gemakkelijker en efficiënter maken. Open het ~/.ssh/config
bestand en maak je eigen alias aan!
Lees ook andere berichten gerelateerd aan SSH! Zoek in de zoekbalk aan de rechterkant naar 'ssh' om verschillende artikelen over SSH te bekijken.
Als je vragen hebt, laat het ons dan gerust weten in de comments!
댓글이 없습니다.