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