Cum să configurați conexiunile SSH personalizate pentru a simplifica accesul la distanță


SSH (client SSH) este un program pentru accesarea de la distanță a unei mașini, care permite unui utilizator să execute comenzi pe o gazdă la distanță. Este una dintre cele mai recomandate metode de conectare la o gazdă la distanță, deoarece este concepută pentru a oferi comunicații criptate securizate între două gazde nesigure printr-o rețea nesigură.

SSH utilizează atât un fișier de configurare la nivel de sistem, cât și unul specific utilizatorului (personalizat). În acest tutorial, vom explica cum să creați un fișier de configurare ssh personalizat și să folosiți anumite opțiuni pentru a vă conecta la gazde la distanță.

Cerințe:

  1. Trebuie să fi instalat clientul OpenSSH pe desktopul Linux.
  2. Înțelegeți opțiunile comune utilizate pentru conexiunile la distanță prin ssh.

Fișiere de configurare a clientului SSH

Mai jos sunt locațiile fișierelor de configurare a clientului ssh:

  1. /etc/ssh/ssh_config – acesta este fișierul implicit de configurare la nivelul întregului sistem. Conține setări care se aplică tuturor utilizatorilor mașinii client ssh.
  2. ~/.ssh/config sau $HOME/.ssh/config – este fișierul de configurare specific utilizatorului/personalizat. Are configurații care se aplică unui anumit utilizator. Prin urmare, suprascrie setările implicite din fișierul de configurare la nivel de sistem. Acesta este fișierul pe care îl vom crea și folosi.

În mod implicit, utilizatorii sunt autentificați în ssh folosind parole, cu toate acestea, puteți configura autentificarea ssh fără parolă folosind ssh keygen în 5 pași simpli.

Notă: în cazul în care directorul ~/.ssh nu există pe sistemul desktop, creați-l cu următoarele permisiuni.


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

Comanda chmod de mai sus implică faptul că numai utilizatorul poate avea permisiuni de citire, scriere și executare pe director, așa cum este cerut de setările ssh.

Cum se creează fișierul de configurare SSH specific utilizatorului

De obicei, acest fișier nu este creat în mod implicit, așa că trebuie să îl creați cu permisiunile de citire/scriere numai pentru utilizator.


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

Fișierul de mai sus conține secțiuni definite de specificațiile gazdelor, iar o secțiune este aplicată numai gazdelor care se potrivesc cu unul dintre modelele stabilite în specificație.

Formatul convențional al ~/.ssh/config este următorul, iar toate liniile goale, precum și liniile care încep cu ‘#’ sunt considerate comentarii:


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

Din formatul de mai sus:

  1. Gazdă gazdă1 – este o definiție antet pentru gazdă1, aici începe o specificație gazdă și se termină cu următoarea definiție antet, gazdă gazdă2 o sectie.
  2. gazdă1, gazdă2 sunt pur și simplu aliasuri de gazdă de utilizat pe linia de comandă, nu sunt numele de gazdă reale ale gazdelor de la distanță.
  3. Opțiunile de configurare precum ssh_option1=value1, ssh_option2=value1 value2 se aplică unei gazde potrivite și ar trebui să fie indentate pentru o formatare bine organizată.
  4. Pentru o opțiune precum ssh_option2=value1 value2, valoarea value1 este luată în considerare mai întâi, apoi value2.
  5. Definiția antetului Gazdă * (unde * este un model – caracterul metalic care se potrivește cu zero sau mai multe caractere) se va potrivi cu zero sau mai multe gazde.

Încă ținând cont de formatul de mai sus, așa citește ssh fișierul de configurare. Dacă executați o comandă ssh pentru a accesa de la distanță host1 astfel:


ssh host1

Comanda ssh de mai sus va face următoarele lucruri:

  1. potrivește alias-ul de gazdă gazdă1 din fișierul de configurare și aplică opțiunile setate sub antetul definiției, gazdă gazdă1.
  2. apoi trece la următoarea secțiune de gazdă, Gazdă gazdă2 și constată că numele furnizat pe linia de comandă nu se potrivește, așa că nu sunt utilizate opțiuni de aici.
  3. Se trece la ultima secțiune, Gazdă *, care se potrivește cu toate gazdele. Aici, se aplică toate opțiunile din această secțiune conexiunii gazdă. Dar nu poate suprascrie nicio valoare a opțiunilor care au fost deja utilizate în secțiunile anterioare.
  4. Același lucru este valabil și pentru gazdă2.

Cum să utilizați fișierul de configurare SSH specific utilizatorului

După ce ați înțeles cum funcționează fișierul de configurare client ssh, îl puteți crea după cum urmează. Nu uitați să utilizați opțiuni și valori (alias-uri de gazdă, numere de port, nume de utilizator și așa mai departe) aplicabile mediului de server.

Deschideți fișierul de configurare cu editorul preferat:


vi ~/.ssh/config

Și definiți secțiunile necesare:


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

O explicație detaliată a opțiunilor de configurare ssh de mai sus.

  1. HostName – definește numele de gazdă real la care să vă conectați, alternativ, puteți utiliza adrese IP numerice, este de asemenea permis (atât pe linia de comandă, cât și în specificațiile HostName) .
  2. Utilizator – specifică utilizatorul cu care se va autentifica.
  3. Port – setează numărul portului pentru a se conecta la gazda de la distanță, valoarea implicită este 22. Utilizați numărul portului configurat în fișierul de configurare sshd al gazdei la distanță.
  4. Protocol – această opțiune definește versiunile de protocol pe care ssh ar trebui să le accepte în ordinea preferințelor. Valorile obișnuite sunt „1” și „2”, mai multe versiuni trebuie separate prin virgulă.
  5. IdentityFile – specifică un fișier din care este citită identitatea de autentificare DSA, Ed25519, RSA sau ECDSA a utilizatorului.
  6. ForwardX11 – definește dacă conexiunile X11 vor fi redirecționate automat pe canalul securizat și setarea DISPLAY. Are două valori posibile „da” sau „nu ”.
  7. Compresie – este folosit pentru a seta compresia în timpul conexiunii la distanță cu valoarea „da ”. Valoarea implicită este „nu”.
  8. ServerAliveInterval – setează un interval de expirare în secunde după care, dacă nu a fost primit niciun răspuns (sau date) de la server, ssh va trimite un mesaj prin canalul criptat pentru a solicita un răspuns de la server. Valoarea implicită este 0, ceea ce înseamnă că niciun mesaj nu va fi trimis către server sau 300 dacă a fost definită opțiunea BatchMode.
  9. ServerAliveCountMax – setează numărul de mesaje server live care pot fi trimise fără ca ssh să primească niciun răspuns de la server.
  10. LogLevel – definește nivelul de verbozitate care este utilizat la înregistrarea mesajelor din ssh. Valorile permise includ: QUIET, FATAL, ERROR, INFO, VERBOSE, DEBUG, DEBUG1, DEBUG2 și DEBUG3. Și implicit este INFO.

Modul standard de conectare la orice gazdă Linux de la distanță (CentOS 7 – în cazul meu), definit în secțiunea a doua a fișierului de configurare de mai sus, vom introduce în mod normal comanda de mai jos:


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

Cu toate acestea, cu utilizarea fișierului de configurare a clientului ssh, putem pur și simplu să introducem următoarea comandă:


ssh centos7 

Puteți găsi mai multe opțiuni și exemple de utilizare în pagina de manual de configurare a clientului ssh:


$man ssh_config

Asta e tot pentru moment, în acest ghid, v-am explicat cum să utilizați un fișier de configurare client ssh specific utilizatorului (personalizat) în Linux. Folosiți formularul de feedback de mai jos pentru a ne scrie înapoi cu privire la acest articol.