Вопрос или проблема
Мой системный администратор управляет набором конфигураций SSH для наших удаленных серверов, эти конфигурации регулярно обновляются и загружаются в мою папку /etc/ssh/
. Однако имена хостов в управляемых конфигурациях SSH слишком длинные для ввода (я ленив). Могу ли я создать псевдонимы имен хостов в моем ~/.ssh/config
? Имейте в виду, что это не псевдоним для HostName
.
Например, мой администратор загружает конфигурации в мою папку /etc/ssh/ssh_config.d/
, которые выглядят следующим образом:
Host a.long.host.name
HostName real-host-name.example.com
ProxyCommand some proxy command
...
Я хочу дать a.long.host.name
другое, более короткое имя, чтобы я мог ввести ssh foo
вместо ssh a.long.host.name
, я не хочу использовать псевдонимы оболочки, потому что другие команды, такие как scp
, будут нуждаться в отдельных псевдонимах оболочки.
Я думаю, что ProxyCommand ssh -J localhost a.long.host.name
сработает, но localhost должен иметь включенный sshd
, что я не могу сделать.
“Host a.long.host.name” — это произвольное имя, оно может быть любым, что вам нравится, если только это не дубликат или зарезервированное слово и т. д. Это фактически псевдоним, специфичный для конфигурации SSH. Конфигурации SSH, специфичные для пользователя, будут иметь приоритет над системными конфигурациями в /etc/ssh/
Если вы знаете порт SSH сервера (например, 22), вы можете сделать это с помощью ProxyCommand
, хотя это выглядит не очень красиво и требует дополнительных ресурсов ЦП на сервере:
Host <your-alias>
ProxyCommand ssh -W localhost:22 <original-name>
Ответ или решение
Многоуровневый хост-алиас в конфигурации SSH
Ваша проблема с длинными именами хостов в конфигурациях SSH является распространенной среди системных администраторов и удаленных пользователей. К счастью, есть решение, которое позволяет создать сокращенные алиасы для длинных имен хостов, используя файл конфигурации SSH в вашем домашнем каталоге.
Основы конфигурации SSH
Файл ~/.ssh/config
используется для настройki параметров SSH для отдельных пользователей. Он имеет более высокий приоритет, чем системные настройки, размещенные, например, в /etc/ssh/ssh_config.d/
. Это означает, что вы можете переопределять параметры конфигурации для хостов без изменения их системного представления.
Создание алиасов
Чтобы создать алиас для хоста, который будет удобен для ввода, выполните следующие шаги.
-
Откройте файл
~/.ssh/config
для редактирования (если файл не существует, создайте его):nano ~/.ssh/config
-
Добавьте следующую конфигурацию:
Host foo HostName a.long.host.name ProxyCommand ssh -W localhost:22 a.long.host.name
В этом примере:
- Host — это ваши алиасы (в данном случае
foo
). - HostName — это полное имя хоста, которое предоставляет ваш системный администратор.
- ProxyCommand — позволяет использовать SSH через другой хост. В данном случае мы передаем команды на
localhost
, однако, как вы правильно заметили, этот вариант требует, чтобыsshd
был активирован на локальном компьютере, что может быть недоступно в вашем случае.
- Host — это ваши алиасы (в данном случае
Альтернативное решение без использования localhost
Если вам нельзя использовать localhost
в качестве прокси, вы можете просто создать алиас, который не использует ProxyCommand
, если у вас есть доступ к a.long.host.name
напрямую без посредников. Например:
Host foo
HostName a.long.host.name
Теперь, когда вы сохраните файл и выйдете из него, вы сможете использовать команду ssh foo
, и SSH автоматически подставит все необходимые параметры поиска, заданные системным администратором.
Заключение
Создание многоуровневых алиасов в конфигурации SSH может значительно упростить работу с длинными именами хостов. Обратите внимание, что для эффективной работы с ProxyCommand
может потребоваться дополнительная конфигурация вашей локальной системы. Однако, даже без него, использование коротких алиасов для хостов делает процесс подключения очень удобным.
Если потребуется поддержка более сложных конфигураций или настроек, всегда оставайтесь на связи с вашим системным администратором для получения актуальных рекомендаций.