---
title: 'Конфігурація автоматичного доповнення SSH-команд з файлу .ssh/config | Zomro'
description: 'Файл .ssh/config відіграє важливу роль у структуризації списку хостів та полегшенні доступу до них при управлінні безліччю віддалених серверів.'
image: 'https://dx86q6oq7ry0e.cloudfront.net/uploads/blog/seo%40server-panel.net/2024/11/11/screenshot_1_q50.jpg'
---

![opened image]()

  * [Zomro](https://zomro.com/ua/)
  * [Корисні статті](https://zomro.com/ua/blog/articles/)
  * Конфігурація автоматичного доповнення SSH-команд з файлу .ssh/config 



# Конфігурація автоматичного доповнення SSH-команд з файлу .ssh/config

11-11-2024

Для того, щоб зробити процес введення команд, що дозволяють підключитися до серверів, більш швидким і зручним способом, існує корисна функція автоматичного доповнення 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-команд з файлу .ssh/config](https://dx86q6oq7ry0e.cloudfront.net/uploads/blog/seo%40server-panel.net/2024/11/11/screenshot_1_q50.jpg)

**Приклад текстового файлу .ssh/config:**
    
    
    nano ~/.ssh/config
    
    
    Host example-server
    
    
    HostName 192.168.1.100
    
    
    User user1
    
    
    Port 2222

  
![Конфігурація автоматичного доповнення SSH-команд з файлу .ssh/config-1](https://dx86q6oq7ry0e.cloudfront.net/uploads/blog/seo%40server-panel.net/2024/11/11/screenshot_2_q50.jpg)

Далі, щоб уникнути подальшого введення вручну повної команди для підключення:
    
    
    ssh user1@192.168.1.100 -p 2222

Можна використовувати наступний варіант:
    
    
    ssh example-server

  
![Конфігурація автоматичного доповнення SSH-команд з файлу .ssh/config-2](https://dx86q6oq7ry0e.cloudfront.net/uploads/blog/seo%40server-panel.net/2024/11/11/screenshot_3_q50.jpg)

## **Для чого необхідне автоматичне доповнення?**

Маючи кілька практичних переваг, які значно підвищують зручність роботи, функція автоматичного заповнення SSH на Ubuntu зменшує кількість часу на введення команд і покращує взаємодію з віддаленими серверами. Ось головні доводи на користь автозаповнення:

  * **Спрощення роботи**. Автоматичне заповнення надає можливість швидше прописувати необхідні команди, що є особливо важливим елементом при роботі з довгими шляхами або складними командами. У вас відпадає обов'язок постійно прописувати їх вручну.



Подивимося на ситуацію, коли вам необхідно ввести адресу певного хоста. Для того, щоб уникнути набору наступного варіанту:
    
    
    ssh user@long-and-complicated-server-name.com

Достатньо буде написати:
    
    
    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

  
![Конфігурація автоматичного доповнення SSH-команд з файлу .ssh/config-3](https://dx86q6oq7ry0e.cloudfront.net/uploads/blog/seo%40server-panel.net/2024/11/11/screenshot_4_q50.jpg)

### **Встановлення 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-команд з файлу .ssh/config-4](https://dx86q6oq7ry0e.cloudfront.net/uploads/blog/seo%40server-panel.net/2024/11/11/screenshot_5_q50.jpg)

Вставте наступний код в відкритий файл:
    
    
    _ssh_hosts() {
    
    
        COMPREPLY=($(compgen -W "$(awk '/^Host / {print $2}' ~/.ssh/config)" -- "${COMP_WORDS[COMP_CWORD]}"))
    
    
    }
    
    
    complete -F _ssh_hosts ssh

  
![Конфігурація автоматичного доповнення SSH-команд з файлу .ssh/config-5](https://dx86q6oq7ry0e.cloudfront.net/uploads/blog/seo%40server-panel.net/2024/11/11/screenshot_6_q50.jpg)

Цей скрипт витягує імена хостів з файлу .ssh/config і передає їх для автодоповнення.

Збережіть файл і закрийте редактор.

Активуйте зміни:
    
    
    source /etc/bash_completion.d/ssh

Тепер при введенні команди ssh і початку введення імені хоста система запропонує варіанти автодоповнення.

**Перевірка роботи**

Щоб перевірити роботу автодоповнення, просто почніть вводити команду SSH і натисніть клавішу Tab. Якщо все налаштовано правильно, система запропонує список доступних хостів з вашого файлу .ssh/config.

Приклад:
    
    
    ssh exa<Tab>

Результат:
    
    
    ssh example-server

  
![Конфігурація автоматичного доповнення SSH-команд з файлу .ssh/config-6](https://dx86q6oq7ry0e.cloudfront.net/uploads/blog/seo%40server-panel.net/2024/11/11/screenshot_7_q50.jpg)

**Підтримка автодоповнення для інших оболонок**

Автодоповнення можливе не тільки для 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 в актуальному стані і постійно оновлювати. Це надасть вам можливість безпроблемного і простого управління великими серверними інфраструктурами, для чого не потрібно запам'ятовувати складні команди для підключення.

Схожі статті

[Інтеграція MySQL з системами моніторингу Zabbix та Grafana](https://zomro.com/ua/blog/articles/579-integration-of-mysql-with-zabbix-and-grafana-monitoring-systems) [Короткий огляд Cloudmodule](https://zomro.com/ua/blog/articles/523-cloudmodule-brief-overview) [API - Створення послуги](https://zomro.com/ua/blog/articles/462-api-creation-of-a-service) [Як скинути пароль у Windows 2019?](https://zomro.com/ua/blog/articles/159-sbros-parolja-na-windows-2019) [API - Отримання інформації про доступні тарифи та їх параметри](https://zomro.com/ua/blog/articles/464-api-obtaining-information-about-available-tariffs-and-their-parameters)

[ Сервер для Forex від €7.95/міс ](/ua/server-for-forex)
