opened image

SSH komandų automatinio užpildymo konfigūracija iš .ssh/config failo

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ų.