PRISIJUNGTI
    opened image

    Norint padaryti komandų įvedimo procesą, leidžiantį prisijungti prie serverių, greitesnį ir patogesnį, yra naudinga SSH komandų automatinio užpildymo funkcija. Ši funkcija naudoja konfigūracijos failus. Geriausia ir efektyviausia yra nustatyti automatinį užpildymą tinklo mazgams, nurodytiems .ssh/config, kas leidžia žymiai supaprastinti prisijungimą prie reikiamų serverių. Šiame straipsnyje mes išnagrinėsime, kaip įgyvendinti šią nustatymą Linux ir macOS operacinėse sistemose.

     

    Failas .ssh/config atlieka svarbų vaidmenį struktūrizuojant hostų sąrašą ir palengvinant prieigą prie jų valdant daugybę nuotolinių serverių. Tačiau nuolatinis rankinis serverių pavadinimų įvedimas kiekvieną kartą yra neefektyvus, todėl šį procesą galima supaprastinti naudojant automatinio užpildymo nustatymą.

     

    .ssh/config - kas tai yra? 

     

    Tekstinis dokumentas .ssh/config yra failas, kuriame yra nustatymai SSH ryšiams. Naudodami .ssh/config, jūs gausite galimybę naudoti raktus, pažymėti standartinius prievadus, nustatyti pseudonimus (alias) serveriams ir nurodyti kitus prisijungimo parametrus. Kiekvienas hostas šioje konfigūracijoje gali turėti savo unikalų alias, kas supaprastina SSH prisijungimo procesą.

     

    Failą .ssh/config galima lengvai atidaryti jums patinkančiame redaktoriuje. Tai gali būti, pavyzdžiui, gedit, vim arba nano. Jei dokumento .ssh/config nėra, naudojant komandą jis bus automatiškai sukurtas. 

     

    Kaip naudoti failą pavyzdžiuose minėtų grafinio redaktorių?

     

    Redaktorius nano:

    nano ~/.ssh/config

    Pavyzdys vim:

    vim ~/.ssh/config

    Pavyzdys gedit (grafinių sąsajų mėgėjams):

    gedit ~/.ssh/config &

    Jei grafinio redaktoriaus nėra, jį galima įdiegti naudojant šią komandą:

    sudo snap install gedit


     

    Tekstinio failo .ssh/config pavyzdys:

    nano ~/.ssh/config

    Host example-server

    HostName 192.168.1.100

    User user1

    Port 2222


     

    Toliau, kad išvengtumėte tolesnio pilno prisijungimo komandos įvedimo:

    ssh [email protected] -p 2222

    Galite naudoti šią variantą:

    ssh example-server


     

    Kodėl reikalingas automatinis užpildymas?

     

    Turint keletą praktinių pranašumų, kurie žymiai padidina darbo patogumą, automatinis SSH užpildymas Ubuntu sumažina laiką, reikalingą komandų įvedimui, ir pagerina sąveiką su nuotoliniais serveriais. Štai pagrindiniai argumentai už automatinį užpildymą:

     

    • Darbo supaprastinimas. Automatinis užpildymas suteikia galimybę greičiau įvesti reikiamas komandas, kas yra ypač svarbus elementas dirbant su ilgais keliais ar sudėtingomis komandomis. Jums nebereikia nuolat jų rašyti rankiniu būdu.

    Pažiūrėkime situaciją, kai jums reikia įvesti tam tikro hosto adresą. Norint išvengti šio varianto įvedimo:

    ssh [email protected]

    Pakaks parašyti:

    ssh use[TAB]

    Po to pavadinimas bus automatiškai užpildytas sistemos iki absoliutaus reikšmės.

     

    • Klaidų sumažinimas. Dėl automatinio užpildymo sumažėja rašybos klaidų ir neteisingo sudėtingų ir ilgų komandų įvedimo tikimybė, kas lemia retesnius gedimus. Automatinis įvedimas siūlo teisingus variantus, kreipdamasis į anksčiau nustatytus hostus .ssh/config

     

    • SSH darbo optimizavimas. Automatinis užpildymas atpažįsta įrašus su prisijungimo parametrais skirtingiems hostams, jei jūsų .ssh.config failas jau yra nustatytas, po to pasiūlys jums šiuos įrašus rašant ssh komandą. Dėl tokios automatinio parinkimo sistemos atsiranda galimybė greitai ieškoti jau nustatytų serverių ir prisijungti prie jų.

     

    Kaip tai gali būti užrašyta faile .ssh/config:

    Host myserver

    HostName myserver.com

    User myusername

    Port 2222

     

    Kaip rezultatas, remiantis jūsų konfigūracijomis, po ssh myser[TAB] įvedimo, sistema rekomenduos jums automatinio užpildymo variantus.

     

    • Lengvumas dirbant su keliais serveriais. Dirbant su keliais serveriais automatinio užpildymo funkcija žymiai palengvina valdymo procesą. Nereikia atsiminti kiekvienos kombinacijos domenams ar IP adresams —  galima apsieiti su .ssh/config dokumento konfigūracija, ir sistema pati pasiūlys galimus variantus.

     

    • Laiko taupymas. Naudojant automatinį SSH užpildymą, vartotojai gali sutaupyti laiko prisijungimui prie serverių, neįvedant visos komandos nuo nulio, o tiesiog pakartojant jau egzistuojančias komandas ar kelius. Ši funkcija yra ypač naudinga tiems, kurie nuolat kreipiasi į daugybę nuotolinių serverių. Pavyzdžiui, programuotojams ir sistemų administratoriams. 

     

    • Produktyvumo didinimas: Automatinis užpildymas leidžia sutelkti dėmesį į svarbesnes užduotis, minimalizuojant rutinas dirbant su skriptais ir terminale. Be to, automatinį užpildymą galima taikyti ir kitose situacijose, jei viskas tinkamai nustatyta, tai gali žymiai sumažinti atliekamo darbo apimtį ir padidinti produktyvumą.

     

    Šie pranašumai daro automatinį užpildymą nepakeičiamu įrankiu tiek ekspertams, tiek naujokams, dirbantiems su SSH Ubuntu.

     

    Bash-completion automatinio užpildymo konfigūracija SSH

     

    Pirmas etapas: nustatymas

    Norint nustatyti SSH automatinį užpildymą, jums reikės įdiegtos bash-completion paketo. Šis paketas paprastai būna iš anksto įdiegtas šiuolaikiniuose Linux distribucijose, tačiau jei jo nėra, jį galima įdiegti.

     

    Bash-completion diegimas Ubuntu ir Debian platformose:

    sudo apt update

    sudo apt install bash-completion


     

    Bash-completion diegimas CentOS ir Fedora platformose:


    sudo yum install bash-completion

    Arch Linux: sudo pacman -S bash-completion

    Aktyvavimas:

    Baigus diegimą, turėtumėte patikrinti automatinio užpildymo aktyvumą pridėdami į failą .bashrc arba .bash_profile šią eilutę:

    nano ~/.bashrc

    if [ -f /etc/bash_completion ]; then

        . /etc/bash_completion

    fi

    Kai patikrinsite aktyvavimą, perkraukite terminalą arba naudokite šią komandą:

    source ~/.bashrc

     

    Antras etapas: SSH automatinio užpildymo nustatymas

     

    Antrame konfigūravimo etape jums reikia prie hostų dokumente .ssh/config pridėti automatinį užpildymą.

    Norint atlikti šią procedūrą, naudojame užpildymo skriptą:

    Į katalogą /etc/bash_completion.d/ sukuriame arba redaguojame jau esamą automatinio užpildymo failą. Šis skriptas padės automatiškai įkelti reikiamus hostus iš dokumento .ssh/config.

    Sukurkite failą /etc/bash_completion.d/ssh:

    sudo nano /etc/bash_completion.d/ssh


    Įklijuokite šį kodą į atidarytą failą:

    _ssh_hosts() {

        COMPREPLY=($(compgen -W "$(awk '/^Host / {print $2}' ~/.ssh/config)" -- "${COMP_WORDS[COMP_CWORD]}"))

    }

    complete -F _ssh_hosts ssh


     

    Šis skriptas ištraukia hostų pavadinimus iš failo .ssh/config ir perduoda juos automatinio užpildymo funkcijai.

    Išsaugokite failą ir uždarykite redaktorių.

    Aktyvuokite pakeitimus:

    source /etc/bash_completion.d/ssh

    Dabar, kai įvesite ssh komandą ir pradėsite įvesti hosto pavadinimą, sistema pasiūlys automatinio užpildymo variantus.

     

    Patikrinkite veikimą

    Norėdami patikrinti automatinio užpildymo veikimą, tiesiog pradėkite įvesti SSH komandą ir paspauskite Tab klavišą. Jei viskas tinkamai nustatyta, sistema pasiūlys prieinamų hostų sąrašą iš jūsų failo .ssh/config.

    Pavyzdys:

    ssh exa<Tab>

    Rezultatas:

    ssh example-server


     

    Automatinio užpildymo palaikymas kitoms apvalkalo versijoms

    Automatinis užpildymas galimas ne tik Bash. Jei naudojate kitas apvalkalo versijas, tokias kaip Zsh, automatinį užpildymą taip pat galima nustatyti.

     

    Automatinio užpildymo nustatymas Zsh

    Zsh vartotojams nustatymo procesas šiek tiek skiriasi. Jums reikia į failą .zshrc įrašyti žemiau pateiktą eilutę, kad įsitikintumėte, jog automatinis užpildymas yra aktyvus:

    autoload -U compinit && compinit 

    Kitas žingsnis - sukurti automatinio užpildymo režimą:

    _ssh_hosts_zsh() {

        local hosts

        hosts=(${(f)"$(awk '/^Host / {print $2}' ~/ ssh/config)"})

        _describe -t hosts 'SSH Hosts' hosts

    }

    compdef _ssh_hosts_zsh ssh

    Po atliktų manipuliacijų išsaugokite ir perkraukite savo terminalą:

    source ~/.zshrc

    Sėkmingai užbaigus visą diegimo procesą, automatinis užpildymas Zsh bus paruoštas darbui.

     

    Darbas su keliais konfigūracijos failais

     

    Kai kuriais atvejais gali būti naudinga paskirstyti SSH nustatymus per kelis failus. Pavyzdžiui, tai gali būti susiję su skirtingomis serverių grupėmis. Tokiu atveju automatinio užpildymo nustatymas turėtų atsižvelgti į visus konfigūracijos failus.

    Tam galima pridėti kelis konfigūracijos šaltinius:

    _ssh_hosts() {

        COMPREPLY=($(compgen -W "$(awk '/^Host / {print $2}' ~/.ssh/config ~/.ssh/config.d/*)" -- "${COMP_WORDS[COMP_CWORD]}"))

    }

    complete -F _ssh_hosts ssh

    Dabar automatinis užpildymas veiks visiems hostams, nurodytiems visuose failuose kataloge ~/.ssh/config.d/. 

     

     

    Išvada

    SSH komandų automatinio užpildymo konfigūracija mazgams, nurodytiems dokumente .ssh/config, yra esminis etapas, leidžiantis padidinti darbo efektyvumą ir sumažinti klaidų tikimybę dirbant su nuotoliniais serveriais. Šiuo režimu jūs supaprastinsite prisijungimus ir galėsite sutelkti dėmesį į svarbiausias užduotis, nepriklausomai nuo to, ar naudojate Zsh, ar Bash.

    Svarbu nepamiršti nuolat atnaujinti tekstinį failą .ssh/config. Tai suteiks jums galimybę be problemų ir lengvai valdyti dideles serverių infrastruktūras, nes nereikės atsiminti sudėtingų prisijungimo komandų.