---
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/rus/)
  * [Полезные статьи](https://zomro.com/rus/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 в актуальном состоянии и постоянно обновлять. Это предоставим вам возможность беспроблемного и простого управления большими серверными инфраструктурами, для чего не потребуется запоминать сложные команды для подключения.

Похожие статьи

[Что такое субдомен?](https://zomro.com/rus/blog/articles/297-chto-takoe-subdomen) [Обязанности системного администратора: почему без него не обойтись?](https://zomro.com/rus/blog/articles/594-duties-of-a-system-administrator-why-cant-you-do-without-one-7) [Скрипт установки China Proxy Server на Ubuntu 22.04](https://zomro.com/rus/blog/articles/495-script-to-install-china-proxy-server-on-ubuntu-2204) [Безопасность на облачном VPS: как защитить сервер от атак](https://zomro.com/rus/blog/articles/541-security-on-cloud-vps-how-to-protect-the-server-from-attacks) [Восстановление базы данных PostgreSQL вручную после аппаратного сбоя](https://zomro.com/rus/blog/articles/568-manually-recovering-a-postgresql-database-after-a-hardware-failure)

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