კომანდების შეყვანის პროცესის უფრო სწრაფი და კომფორტული გზით სერვერებთან დაკავშირებისათვის არსებობს სასარგებლო ფუნქცია SSH კომანდების ავტომატური დასრულების. ეს ფუნქცია იყენებს კონფიგურაციის ფაილებს. უკეთესი და ეფექტური იქნება ავტოდამატების კონფიგურაციის გამოყენება ქსელური узловებისათვის, რომლებიც მითითებულია .ssh/config-ში, რაც მნიშვნელოვნად ამარტივებს საჭირო სერვერებთან დაკავშირებას. მოცემულ მასალაში შევისწავლით, როგორ უნდა განვახორციელოთ ეს კონფიგურაცია Linux და macOS ოპერაციული სისტემებისათვის.
ფაილი .ssh/config მნიშვნელოვან როლს თამაშობს ჰოსტების სიის სტრუქტურირებაში და მათთან წვდომის გამარტივებაში მრავალი შორეული სერვერის მართვისას. თუმცა, მუდმივი ხელით სერვერების სახელების შეყვანა ყოველი ჯერზე არ არის ეფექტური, ამიტომ ამ პროცესის გამარტივება შესაძლებელია ავტომატური დასრულების კონფიგურაციის საშუალებით.
.ssh/config - რა არის ეს?
ტექსტური დოკუმენტი .ssh/config წარმოადგენს ფაილს, რომელიც შეიცავს SSH კავშირების პარამეტრებს. .ssh/config-ის საშუალებით თქვენ მიიღებთ შესაძლებლობას გამოიყენოთ გასაღებები, მიუთითოთ სტანდარტული პორტები, დააწესოთ ფსევდონიმები (ალიასები) სერვერებისათვის და განსაზღვროთ სხვა პარამეტრები. თითოეულ ჰოსტს ამ კონფიგურაციაში შეიძლება ჰქონდეს თავისი უნიკალური ალიასი, რაც ამარტივებს SSH კავშირის პროცესს.
ფაილი .ssh/config მშვიდად იხსნება თქვენთვის საყვარელი რედაქტორით. ეს შეიძლება იყოს, მაგალითად, gedit, vim ან nano. თუ .ssh/config დოკუმენტი არ არსებობს, ბრძანების გამოყენებისას ის ავტომატურად შეიქმნება.
როგორ გამოვიყენოთ ფაილი ზემოთ აღნიშნული გრაფიკული რედაქტორების მაგალითზე?
რედაქტორი nano:
nano ~/.ssh/config
მაგალითი vim:
vim ~/.ssh/config
მაგალითი gedit (გრაფიკული ინტერფეისის მოყვარულთათვის):
gedit ~/.ssh/config &
თუ გრაფიკული რედაქტორი არ გაქვთ, შეგიძლიათ დააყენოთ შემდეგი ბრძანების საშუალებით:
sudo snap install gedit
.ssh/config-ის ტექსტური ფაილის ნიმუში:
nano ~/.ssh/config
Host example-server
HostName 192.168.1.100
User user1
Port 2222
შემდეგ, რათა თავიდან ავიცილოთ სრული კომანდის ხელით შეყვანა:
ssh [email protected] -p 2222
შეგიძლიათ გამოიყენოთ შემდეგი ვარიანტი:
ssh example-server
რატომ არის საჭირო ავტომატური დასრულება?
ბევრი პრაქტიკული უპირატესობით, რაც მნიშვნელოვნად ზრდის მუშაობის კომფორტს, SSH-ის ავტომატური დასრულების ფუნქცია Ubuntu-ში ამცირებს კომანდების შეყვანისთვის საჭირო დროს და აუმჯობესებს შორეულ სერვერებთან ურთიერთობას. აი, ავტომატური დასრულების მთავარი არგუმენტები:
- მუშაობის გამარტივება. ავტომატური დასრულება საშუალებას გაწვდით საჭირო კომანდების უფრო სწრაფად დაწერას, რაც განსაკუთრებით მნიშვნელოვანია გრძელი გზების ან რთული კომანდების მუშაობისას. თქვენ აღარ გჭირდებათ მათი მუდმივი ხელით დაწერა.
მოვხედოთ სიტუაციას, როდესაც თქვენ უნდა შეიყვანოთ კონკრეტული ჰოსტის მისამართი. რათა თავიდან ავიცილოთ შემდეგი ვარიანტის შეყვანა:
კმარა მხოლოდ დაწეროთ:
ssh use[TAB]
ამის შემდეგ, სახელი ავტომატურად იქნება დამატებული სისტემის მიერ აბსოლუტურ მნიშვნელობამდე.
- შეცდომების შემცირება. ავტომატური დასრულების წყალობით მცირდება შეცდომების და არასწორი შეყვანის ალბათობა რთული და გრძელი კომანდების, რაც იწვევს ნაკლებად ხშირი შეცდომების. ავტომატური შეყვანა სთავაზობს სწორ ვარიანტებს, მიმართული ადრე კონფიგურირებულ ჰოსტებზე .ssh/config-ში
- SSH-ის მუშაობის ოპტიმიზაცია. ავტომატური დასრულება აღიარებს ჩანაწერებს კავშირების პარამეტრებით სხვადასხვა ჰოსტებთან, იმ შემთხვევაში, როდესაც თქვენი .ssh.config ფაილი უკვე არის კონფიგურირებული, რის შემდეგაც გთავაზობთ ამ ჩანაწერებს SSH კომანდის დაწერისას. ასეთი სისტემის წყალობით ავტომატური შერჩევა საშუალებას გაწვდით სწრაფი ძიების შესაძლებლობას უკვე კონფიგურირებულ სერვერებზე და მათთან დაკავშირებაზე.
როგორ შეიძლება ეს იყოს ჩაწერილი .ssh/config ფაილში:
Host myserver
HostName myserver.com
User myusername
Port 2222
შედეგად, თქვენი კონფიგურაციების საფუძველზე, ssh myser[TAB]-ის შეყვანის შემდეგ, სისტემა გირჩევთ ავტომატური დასრულების ვარიანტებს.
- მრავალ სერვერთან მუშაობის სიმარტივე. რამდენიმე სერვერთან ერთდროულად ურთიერთობისას ავტომატური დასრულების ფუნქცია მნიშვნელოვნად ამარტივებს მართვის პროცესს. არ არის საჭირო თითოეული კომბინაციის დამახსოვრება დომენების ან IP მისამართებისათვის — შეგიძლიათ მოიხმაროთ .ssh/config დოკუმენტის კონფიგურაცია, და სისტემა თავად გთავაზობთ შესაძლო ვარიანტებს.
- დროის დაზოგვა. SSH-ის ავტომატური დასრულების გამოყენებისას მომხმარებლები შეუძლიათ დაზოგონ დრო სერვერთან დაკავშირებაზე, არ შეყვანონ მთელი კომანდა თავიდან, არამედ უბრალოდ გაამეორონ უკვე არსებული კომანდები ან გზები. ეს ფუნქცია განსაკუთრებით სასარგებლოა მათთვის, ვინც მუდმივად მიმართავს მრავალ შორეულ სერვერს. მაგალითად, პროგრამისტების და სისტემური ადმინისტრატორებისათვის.
- პროდუქტიულობის გაზრდა: ავტომატური დასრულება საშუალებას გაწვდით ყურადღება გაამახვილოთ უფრო მნიშვნელოვან დავალებებზე, მინიმუმამდე დაიყვანოთ რუტინული მოქმედებები სკრიპტებთან და ტერმინალთან მუშაობისას. გარდა ამისა, ავტომატური დასრულება შესაძლებელია გამოყენებულ იქნას სხვა შემთხვევებში, თუ ყველაფერი სწორად არის კონფიგურირებული, ეს შეიძლება მნიშვნელოვნად შეამციროს შესრულებული სამუშაოს მოცულობა და გაზარდოს პროდუქტიულობა.
ეს უპირატესობები ავტომატურ დასრულებას შეუცვლელ ინსტრუმენტად აქცევს ექსპერტებისა და ახალბედებისათვის, რომლებიც მუშაობენ SSH-თან Ubuntu-ში.
bash-completion-ის ავტომატური დასრულების კონფიგურაცია SSH-ისათვის
პირველი ეტაპი: კონფიგურაცია
SSH-ის ავტომატური დასრულების კონფიგურაციისათვის თქვენ გჭირდებათ bash-completion-ის ინსტალირებული პაკეტი. ეს პაკეტი ჩვეულებრივ წინასწარ არის დაყენებული თანამედროვე Linux დისტრიბუციებში, მაგრამ თუ არ გაქვთ, შეგიძლიათ დააყენოთ.
bash-completion-ის ინსტალაცია Ubuntu და Debian პლატფორმებზე:
sudo apt update
sudo apt install bash-completion
bash-completion-ის ინსტალაცია CentOS და Fedora პლატფორმებზე:
sudo yum install bash-completion
Arch Linux-ისათვის: sudo pacman -S bash-completion
აქტივაცია:
ინსტალაციის დასრულების შემდეგ უნდა შეამოწმოთ ავტომატური დასრულების აქტივობა .bashrc ან .bash_profile ფაილში შემდეგი სტრიქონის დამატებით:
nano ~/.bashrc
if [ -f /etc/bash_completion ]; then
. /etc/bash_completion
fi
როდესაც შეამოწმებთ დამატების აქტივაციას, განაახლეთ ტერმინალი ან გამოიყენეთ შემდეგი ბრძანება:
source ~/.bashrc
მეორე ეტაპი: SSH-ის ავტომატური დასრულების კონფიგურაცია
მეორე ეტაპზე კონფიგურაციისათვის თქვენ უნდა დაამატოთ ავტომატური დასრულება ჰოსტებზე .ssh/config დოკუმენტში.
ამ პროცესის გასატარებლად, გამოვიყენოთ დასრულების სკრიპტი:
ფოლდერში /etc/bash_completion.d/ შექმენით ან შეცვალეთ უკვე არსებული ავტომატური დასრულების ფაილი. შემდეგი სკრიპტი დაგეხმარებათ ავტომატურად დატვირთოს საჭირო ჰოსტები .ssh/config დოკუმენტიდან.
შექმენით ფაილი /etc/bash_completion.d/ssh:
sudo nano /etc/bash_completion.d/ssh
ჩაწერეთ შემდეგი კოდი გახსნილ ფაილში:
_ssh_hosts() {
COMPREPLY=($(compgen -W "$(awk '/^Host / {print $2}' ~/.ssh/config)" -- "${COMP_WORDS[COMP_CWORD]}"))
}
complete -F _ssh_hosts ssh
ეს სკრიპტი იღებს ჰოსტების სახელებს .ssh/config ფაილიდან და გადასცემს მათ ავტომატური დასრულებისათვის.
შეინახეთ ფაილი და დახურეთ რედაქტორი.
აქტივაცია ცვლილებების:
source /etc/bash_completion.d/ssh
ახლა, როდესაც თქვენ აკრიფებთ SSH კომანდას და იწყებთ ჰოსტის სახელის შეყვანას, სისტემა გთავაზობთ ავტომატური დასრულების ვარიანტებს.
დამატების მუშაობის შემოწმება
ავტომატური დასრულების მუშაობის შესამოწმებლად, უბრალოდ დაიწყეთ SSH კომანდის აკრიფვა და დააჭირეთ Tab-ის ღილაკს. თუ ყველაფერი სწორად არის კონფიგურირებული, სისტემა გთავაზობთ თქვენს .ssh/config ფაილში ხელმისაწვდომი ჰოსტების სიას.
მაგალითი:
ssh exa<Tab>
შედეგი:
ssh example-server
ავტომატური დასრულების მხარდაჭერა სხვა შელფებისათვის
ავტომატური დასრულება შესაძლებელია არა მხოლოდ Bash-ისათვის. თუ თქვენ იყენებთ სხვა შელფებს, როგორიცაა Zsh, ავტომატური დასრულება ასევე შეიძლება კონფიგურირდეს.
ავტომატური დასრულების კონფიგურაცია Zsh-ისათვის
Zsh-ის მომხმარებლებისათვის კონფიგურაციის პროცესი ცოტა განსხვავებულია. თქვენ უნდა ჩაწეროთ შემდეგი სტრიქონი .zshrc ფაილში, რათა დარწმუნდეთ ავტომატური დასრულების აქტივობაში:
autoload -U compinit && compinit
შემდეგი ნაბიჯი არის ავტომატური დასრულების რეჟიმის შექმნა:
_ssh_hosts_zsh() {
local hosts
hosts=(${(f)"$(awk '/^Host / {print $2}' ~/ ssh/config)"})
_describe -t hosts 'SSH Hosts' hosts
}
compdef _ssh_hosts_zsh ssh
გააკეთეთ ცვლილებები, შეინახეთ და განაახლეთ თქვენი ტერმინალი:
source ~/.zshrc
წარმატებით დასრულების შემდეგ, Zsh-ში ავტომატური დასრულება იქნება აქტიური.
მრავალ კონფიგურაციის ფაილებთან ურთიერთობა
ზოგიერთ სიტუაციაში სასარგებლოა SSH-ის პარამეტრების განაწილება რამდენიმე ფაილზე. მაგალითად, ეს შეიძლება იყოს დაკავშირებული სხვადასხვა სერვერების ჯგუფებთან. ამ შემთხვევაში ავტომატური დასრულების კონფიგურაცია უნდა ითვალისწინებდეს ყველა კონფიგურაციის ფაილს.
ამისათვის შეგიძლიათ დაამატოთ რამდენიმე კონფიგურაციის წყარო:
_ssh_hosts() {
COMPREPLY=($(compgen -W "$(awk '/^Host / {print $2}' ~/.ssh/config ~/.ssh/config.d/*)" -- "${COMP_WORDS[COMP_CWORD]}"))
}
complete -F _ssh_hosts ssh
ახლა ავტომატური დასრულება იმუშავებს ყველა ჰოსტზე, რომელიც მითითებულია ყველა ფაილში დირექტორიაში ~/.ssh/config.d/.
შედეგი
SSH კომანდების ავტომატური დასრულების კონფიგურაცია ჰოსტებისათვის, რომლებიც მითითებულია .ssh/config დოკუმენტში, არის მნიშვნელოვანი ეტაპი, რომელიც ზრდის მუშაობის ეფექტურობას და ამცირებს შეცდომების ალბათობას შორეულ სერვერებთან ურთიერთობისას. ამ რეჟიმით თქვენ გაამარტივებთ დაკავშირებას და მიიღებთ შესაძლებლობას კონცენტრირდეთ ძირითადი დავალებების შესრულებაზე, მიუხედავად იმისა, რომ იყენებთ Zsh-ს თუ Bash-ს.
მნიშვნელოვანია არ დაგავიწყდეთ .ssh/config ტექსტური ფაილის актуალურ მდგომარეობაში შენარჩუნება და მუდმივად განახლება. ეს მოგაწვდით შესაძლებლობას პრობლემების გარეშე და მარტივად მართოთ დიდი სერვერული ინფრასტრუქტურები, რისათვისაც არ იქნება საჭირო რთული კომანდების დამახსოვრება დაკავშირებისათვის.