Android

Het ssh-configuratiebestand gebruiken

Load Kali Linux on a Raspberry Pi 4 Model B for a Mini Hacking Computer [Tutorial]

Load Kali Linux on a Raspberry Pi 4 Model B for a Mini Hacking Computer [Tutorial]

Inhoudsopgave:

Anonim

Een optie zou zijn om een ​​bash-alias te maken voor elke externe serververbinding. Er is echter een andere, veel betere en eenvoudiger oplossing voor dit probleem. Met OpenSSH kunt u een configuratiebestand per gebruiker instellen waarin u verschillende SSH-opties kunt opslaan voor elke externe machine waarmee u verbinding maakt.

Deze gids behandelt de basisprincipes van het SSH-clientconfiguratiebestand en legt enkele van de meest voorkomende configuratie-opties uit.

voorwaarden

We gaan ervan uit dat u een Linux- of macOS-systeem gebruikt met OpenSSH-client geïnstalleerd.

SSH Config Bestandslocatie

OpenSSH client-side configuratiebestand heet config , en het wordt opgeslagen in de map .ssh onder de thuismap van de gebruiker.

De map ~/.ssh wordt automatisch gemaakt wanneer de gebruiker de opdracht ssh voor de eerste keer uitvoert. Als de map niet op uw systeem bestaat, maakt u deze met de onderstaande opdracht:

mkdir -p ~/.ssh && chmod 700 ~/.ssh

Standaard bestaat het SSH-configuratiebestand mogelijk niet, dus u moet het mogelijk maken met de aanraakopdracht:

touch ~/.ssh/config

Dit bestand moet alleen leesbaar en beschrijfbaar zijn voor de gebruiker en niet toegankelijk voor anderen:

chmod 600 ~/.ssh/config

SSH Config Bestandsstructuur en patronen

Het SSH-configuratiebestand heeft de volgende structuur:

Host hostname1 SSH_OPTION value SSH_OPTION value Host hostname2 SSH_OPTION value Host * SSH_OPTION value

De inhoud van het SSH-clientconfiguratiebestand is georganiseerd in strofen (secties). Elke strofe begint met de Host en bevat specifieke SSH-opties die worden gebruikt bij het tot stand brengen van een verbinding met de externe SSH-server.

Inspringen is niet vereist maar wordt aanbevolen omdat het bestand hierdoor beter leesbaar is.

De Host kan één patroon of een lijst met patronen gescheiden van witruimte bevatten. Elk patroon kan nul of meer niet-witruimte-tekens of een van de volgende patroonspecificaties bevatten:

  • * - Komt overeen met nul of meer tekens. Host * komt bijvoorbeeld overeen met alle hosts, terwijl 192.168.0.* Overeenkomt met hosts in het subnet 192.168.0.0/24 . ? - Komt exact overeen met één karakter. Het patroon, Host 10.10.0.? komt overeen met alle hosts in 10.10.0. range. ! - Wanneer het aan het begin van een patroon wordt gebruikt, wordt de match ongedaan gemaakt. Host 10.10.0.* !10.10.0.5 komt Host 10.10.0.* !10.10.0.5 overeen met elke host in het 10.10.0.0/24 subnet behalve 10.10.0.5 .

De SSH-client leest het configuratiebestand stanza per stanza, en als er meerdere patronen overeenkomen, hebben de opties van de eerste overeenkomende stanza voorrang. Daarom moeten aan het begin van het bestand meer hostspecifieke verklaringen worden gegeven en meer algemene overschrijvingen aan het einde van het bestand.

U kunt een volledige lijst met beschikbare ssh-opties vinden door man ssh_config in uw terminal te typen of door naar de ssh_config man-pagina te gaan.

Het SSH-configuratiebestand wordt ook gelezen door andere programma's zoals scp , sftp en rsync .

SSH-configuratiebestand Voorbeeld

Nu we de basis van het SSH-configuratiebestand hebben behandeld, laten we het volgende voorbeeld bekijken.

Als u via SSH verbinding maakt met een externe server, geeft u meestal de externe gebruikersnaam, hostnaam en poort op. Als u zich bijvoorbeeld als gebruiker met de naam john bij een host met de naam dev.example.com op poort 2322 vanaf de opdrachtregel wilt aanmelden, typt u:

ssh [email protected] -p 2322

Om verbinding te maken met de server met behulp van dezelfde opties als in de bovenstaande opdracht, gewoon door ssh dev typen, plaatst u de volgende regels in uw "~/.ssh/config bestand:

~ /.Ssh / config

Host dev HostName dev.example.com User john Port 2322

Wanneer u nu ssh dev typt, leest de ssh-client het configuratiebestand en gebruikt de verbindingsdetails die zijn opgegeven voor de dev host:

ssh dev

Voorbeeld van gedeeld SSH-configuratiebestand

Dit voorbeeld geeft meer gedetailleerde informatie over de hostpatronen en optievoorrang.

Laten we het volgende voorbeeldbestand nemen:

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

  • Wanneer u ssh targaryen , leest de ssh-client het bestand en past de opties van de eerste overeenkomst toe, namelijk Host targaryen . Vervolgens controleert het de volgende strofes één voor één op een bijpassend patroon. De volgende overeenkomende is Host * !martell (wat betekent dat alle hosts behalve martell ), en deze past de verbindingsoptie van deze stanza toe. De laatste definitie Host * ook overeen, maar de ssh-client neemt alleen de optie Compression omdat de optie User al is gedefinieerd in de Host targaryen stanza.

    De volledige lijst met opties die wordt gebruikt wanneer u ssh targaryen is als volgt:

    HostName 192.168.1.10 User daenerys Port 7654 IdentityFile ~/.ssh/targaryen.key LogLevel INFO Compression yes

    Bij het uitvoeren van ssh tyrell de overeenkomende ssh tyrell : Host tyrell , Host *ell , Host * !martell en Host * . De in dit geval gebruikte opties zijn:

    HostName 192.168.10.20 User oberyn LogLevel INFO Compression yes

    HostName 192.168.10.50 User oberyn Compression yes

    Voor alle andere verbindingen gebruikt de ssh-client de opties die zijn opgegeven in de secties Host * !martell en Host * .

Overschrijf SSH Config File Option

De ssh-client leest zijn configuratie in de volgende volgorde van prioriteit:

  1. Opties opgegeven vanaf de opdrachtregel. Opties gedefinieerd in de ~/.ssh/config .Opties gedefinieerd in de /etc/ssh/ssh_config .

Host dev HostName dev.example.com User john Port 2322

en je wilt alle andere opties gebruiken, maar om verbinding te maken als root van de gebruiker in plaats van john , geef je gewoon de gebruiker op de opdrachtregel op:

ssh -o "User=root" dev

Met de optie -F ( configfile ) kunt u een alternatief configuratiebestand per gebruiker opgeven.

Om de ssh client te vertellen alle opties te negeren die zijn opgegeven in het ssh-configuratiebestand, gebruikt u:

ssh -F /dev/null [email protected]

Conclusie

We hebben u laten zien hoe u uw ssh-configuratiebestand voor gebruikers kunt configureren. Misschien wilt u ook een op SSH-sleutel gebaseerde verificatie instellen en verbinding maken met uw Linux-servers zonder een wachtwoord in te voeren.

Standaard luistert SSH op poort 22. Het wijzigen van de standaard SSH-poort voegt een extra beveiligingslaag toe aan uw server door het risico van geautomatiseerde aanvallen te verminderen.

SSH-terminal