Zoeken op website

Hoe u aangepaste SSH-verbindingen kunt configureren om externe toegang te vereenvoudigen


SSH (SSH-client) is een programma voor externe toegang tot een machine. Het stelt een gebruiker in staat opdrachten uit te voeren op een externe host. Het is een van de meest aanbevolen methoden om in te loggen op een externe host, omdat het is ontworpen om veilige gecodeerde communicatie tussen twee niet-vertrouwde hosts via een onveilig netwerk mogelijk te maken.

SSH gebruikt zowel een systeembreed als een gebruikersspecifiek (aangepast) configuratiebestand. In deze tutorial leggen we uit hoe je een aangepast ssh-configuratiebestand kunt maken en hoe je bepaalde opties kunt gebruiken om verbinding te maken met externe hosts.

Vereisten:

  1. U moet de OpenSSH-client op uw Linux-bureaublad hebben geïnstalleerd.
  2. Begrijp de algemene opties die worden gebruikt voor externe verbindingen via ssh.

SSH-clientconfiguratiebestanden

Hieronder staan de locaties van de ssh-clientconfiguratiebestanden:

  1. /etc/ssh/ssh_config – dit is het standaard, systeembrede configuratiebestand. Het bevat instellingen die van toepassing zijn op alle gebruikers van een ssh-clientmachine.
  2. ~/.ssh/config of $HOME/.ssh/config – is het gebruikersspecifieke/aangepaste configuratiebestand. Het heeft configuraties die van toepassing zijn op een specifieke gebruiker. Het overschrijft daarom de standaardinstellingen in het systeembrede configuratiebestand. Dit is het bestand dat we gaan maken en gebruiken.

Standaard worden gebruikers in ssh geverifieerd met behulp van wachtwoorden, maar u kunt ssh wachtwoordloos inloggen instellen met behulp van ssh keygen in 5 eenvoudige stappen.

Opmerking: Als de map ~/.ssh niet bestaat op uw desktopsysteem, maak deze dan aan met de volgende machtigingen.


mkdir -p ~/.ssh
chmod 0700 ~/.ssh   

Het bovenstaande chmod commando houdt in dat alleen de gebruiker lees-, schrijf- en uitvoerrechten voor de map kan hebben, zoals vereist door de ssh-instellingen.

Hoe u een gebruikersspecifiek SSH-configuratiebestand kunt maken

Dit bestand wordt meestal niet standaard gemaakt, dus u moet het maken met alleen de lees-/schrijfrechten voor de gebruiker.


touch ~/.ssh/config
chmod 0700 ~/.ssh/config

Het bovenstaande bestand bevat secties die zijn gedefinieerd door hosts-specificaties, en een sectie wordt alleen toegepast op hosts die overeenkomen met een van de patronen die in de specificatie zijn ingesteld.

Het conventionele formaat van ~/.ssh/config is als volgt, en alle lege regels en regels die beginnen met ‘#’ worden als commentaar beschouwd:


Host    host1
	ssh_option1=value1
	ssh_option2=value1 value2
	ssh_option3=value1 

Host    host2
	ssh_option1=value1
	ssh_option2=value1 value2

Host  *
	ssh_option1=value1
	ssh_option2=value1 value2

Uit het bovenstaande formaat:

  1. Host host1 – is een headerdefinitie voor host1, dit is waar een hostspecificatie begint en eindigt met de volgende headerdefinitie, Host host2 waardoor een sectie.
  2. host1, host2 zijn eenvoudigweg hostaliassen die u op de opdrachtregel kunt gebruiken. Het zijn niet de daadwerkelijke hostnamen van de externe hosts.
  3. De configuratieopties zoals ssh_option1=value1, ssh_option2=value1 value2 zijn van toepassing op een overeenkomende host en moeten ingesprongen zijn voor een overzichtelijke opmaak.
  4. Voor een optie zoals ssh_option2=value1 value2 wordt eerst gekeken naar de waarde value1 en daarna naar value2.
  5. De headerdefinitie Host * (waarbij * een patroon is – jokerteken dat overeenkomt met nul of meer tekens) komt overeen met nul of meer hosts.

Nog steeds rekening houdend met het bovenstaande formaat, is dit de manier waarop ssh het configuratiebestand leest. Als u een ssh-opdracht uitvoert om op afstand toegang te krijgen tot host1, doet u het volgende:


ssh host1

Het bovenstaande ssh-commando doet de volgende dingen:

  1. komt overeen met de hostalias host1 in het configuratiebestand en past de opties toe die zijn ingesteld onder de definitiekop, Host host1.
  2. gaat vervolgens naar de volgende hostsectie, Host host2 en constateert dat de naam op de opdrachtregel niet overeenkomt, dus vanaf hier worden geen opties gebruikt.
  3. Het gaat verder naar de laatste sectie, Host *, die overeenkomt met alle hosts. Hier worden alle opties in deze sectie toegepast op de hostverbinding. Maar het kan geen waarden overschrijven van opties die al in de vorige sectie(s) werden gebruikt.
  4. Hetzelfde geldt voor host2.

Hoe u een gebruikersspecifiek SSH-configuratiebestand gebruikt

Als u eenmaal begrijpt hoe het ssh-clientconfiguratiebestand werkt, kunt u het als volgt maken. Vergeet niet om opties en waarden (hostaliassen, poortnummers, gebruikersnamen enzovoort) te gebruiken die van toepassing zijn op uw serveromgeving.

Open het configuratiebestand met uw favoriete editor:


vi ~/.ssh/config

En definieer de benodigde secties:


Host fedora25
        HostName 192.168.56.15
        Port 22
        ForwardX11 no

Host centos7
        HostName 192.168.56.10
        Port 22
        ForwardX11 no

Host ubuntu
        HostName 192.168.56.5
        Port 2222
        ForwardX11 yes

Host *
        User tecmint
        IdentityFile ~/.ssh/id_rsa
        Protocol 2
        Compression yes
        ServerAliveInterval 60
        ServerAliveCountMax 20
        LogLevel INFO

Een gedetailleerde uitleg van de bovenstaande ssh-configuratieopties.

  1. HostName – definieert de echte hostnaam om in te loggen, als alternatief kunt u een numeriek IP-adres gebruiken, dit is ook toegestaan (zowel op de opdrachtregel als in de HostName-specificaties) .
  2. Gebruiker – specificeert de gebruiker waarmee moet worden ingelogd.
  3. Poort – stelt het poortnummer in om verbinding te maken met de externe host, de standaardwaarde is 22. Gebruik het poortnummer dat is geconfigureerd in het sshd-configuratiebestand van de externe host.
  4. Protocol – deze optie definieert de protocolversies die ssh moet ondersteunen, in volgorde van voorkeur. De gebruikelijke waarden zijn ‘1’ en ‘2’. Meerdere versies moeten door komma's worden gescheiden.
  5. IdentityFile – specificeert een bestand waaruit de DSA-, Ed25519-, RSA- of ECDSA-authenticatie-identiteit van de gebruiker wordt gelezen.
  6. ForwardX11 – bepaalt of X11-verbindingen automatisch worden omgeleid via het beveiligde kanaal en de DISPLAY-set. Er zijn twee mogelijke waarden “ja” of “nee”.
  7. Compressie – wordt gebruikt om compressie in te stellen tijdens de externe verbinding met de “yes” waarde. De standaardinstelling is “nee”.
  8. ServerAliveInterval – stelt een time-outinterval in seconden in waarna, als er geen reactie (of gegevens) van de server is ontvangen, ssh een bericht via het gecodeerde kanaal zal sturen om een reactie van de server te vragen. De standaardwaarde is 0, wat betekent dat er geen berichten naar de server worden verzonden, of 300 als de BatchMode-optie is gedefinieerd.
  9. ServerAliveCountMax – stelt het aantal server-levende berichten in die kunnen worden verzonden zonder dat ssh enig antwoord van de server ontvangt.
  10. LogLevel – definieert het breedsprakigheidsniveau dat wordt gebruikt bij het loggen van berichten vanuit ssh. De toegestane waarden zijn: QUIET, FATAL, ERROR, INFO, VERBOSE, DEBUG, DEBUG1, DEBUG2 en DEBUG3. En de standaardinstelling is INFO.

De standaardmanier om verbinding te maken met elke externe Linux-host (CentOS 7 – in mijn geval), gedefinieerd in sectie twee van het configuratiebestand hierboven, typen we normaal gesproken de onderstaande opdracht:


ssh -i ~/.ssh/id_rsa -p 22 [email 

Met behulp van het ssh-clientconfiguratiebestand kunnen we echter eenvoudig de volgende opdracht typen:


ssh centos7 

U kunt meer opties en gebruiksvoorbeelden vinden op de manpagina van de ssh-clientconfiguratie:


$man ssh_config

Dat is het voor nu, in deze handleiding hebben we u uitgelegd hoe u een gebruikersspecifiek (aangepast) ssh-clientconfiguratiebestand in Linux gebruikt. Gebruik het onderstaande feedbackformulier om ons terug te schrijven over dit artikel.