Как ssh на серверы по имени хоста без имени домена?

Мне нужно зайти на несколько серверов на работу, чтобы выполнить мою работу. Я устаю вводить полное доменное имя сервера для доступа. Я вхожу в / из системы через ssh в нашей собственной частной сети. Я на 99% уверен, что это на нашей собственной частной сети. B / c на всех серверах есть ip addr 10.xyz. Есть ли способ ssh на серверы с именем хоста, а не с именем домена?

У нас есть серверы в нескольких странах. То, как названы наши серверы, очень длинный. Он называется следующим образом:

hostname.country.domainname.com

Я получаю carpal tunnel typing в ssh me@hostname1.country.domainname.com

каждый раз, когда я обращаюсь к одному из наших серверов. Если я нахожусь в США, и я пытаюсь получить доступ к другому хосту, который находится в США, я могу просто набрать ssh me@hostname2 и установить соединение. Однако, если я нахожусь в США и пытаюсь подключиться к серверу в Англии, я не могу набрать ssh me@hostname3.eng и подключиться к hostname3.

Обходной путь, который я сделал, – это настроить псевдоним в моем файле ~ / .ssh / config для некоторых серверов. Однако я не думаю, что в этот файл можно добавить 1000 серверов. Я уже добавил 20 серверов, и мои сотрудники думают, что я сумасшедший, хотя я думаю, что они сумасшедшие, чтобы набирать полное доменное имя, когда вы общаетесь.

Есть ли простой способ для нас настроить что-то, поэтому нам не нужно вводить наш доменnamename.com каждый раз?

  • раздражающее сообщение «Соединение X11 отклонено из-за неправильной аутентификации», в то время как нет никакой проблемы вообще
  • Лучший способ подключения к существующему пользовательскому контексту через SSH
  • ssh-agent не добавляет ключ при запуске графически
  • SSH-Keygen -i Fails: uudecode не удалось. Что может вызвать это?
  • Как устранить неисправную переадресацию X11 с помощью ssh?
  • `ssh -X` запрашивает определенный X-дисплей?
  • Как использовать SSH-ключи для SSH без пароля через приложения X11 (например, nautilus)?
  • Проблемы с передачей команд другому скрипту через ssh
  • 3 Solutions collect form web for “Как ssh на серверы по имени хоста без имени домена?”

    Вы можете использовать подстановочный знак и использовать %h в своей конфигурации

    например

     Host *.eng Hostname %h.domainname.com 

    Теперь, когда вы делаете ssh foo.eng он попытается подключиться к foo.eng.domainname.com .

    Вы также можете добавить другие параметры в эту конфигурацию; например, форсирование имени пользователя

     Host *.eng Hostname %h.domainname.com User me 

    Теперь, когда вы делаете ssh foo.eng он попытается подключиться к foo.eng.domainname.com в качестве пользователя.

     % ssh foo.eng ssh: Could not resolve hostname foo.eng.domainname.com: Name or service not known 

    (ну, очевидно, я получаю сообщение об ошибке, прежде чем это недействительное имя хоста для меня!)

    Итак, теперь вам нужно только одно правило для каждой страны.

    Если вы добавите

     search domainname.com 

    к /etc/resolv.conf , и использовать hostname.country , ssh (и другие сетевые программы, если на то пошло) автоматически добавит domainname.com для вас 1 .

    Я не думаю, что добавление разных доменов страны в ваш путь search – хорошая идея, потому что вы можете получить неожиданное поведение, если два сервера в двух разных странах используют одно и то же имя хоста 2

    Я считаю, что этот метод лучше, чем изменение конфигурации ssh поскольку это позволяет hostname.country разрешать независимо от используемой вами программы ( telnet , VNC, …).

    См. resolv.conf(5)


    1 Точнее, он добавит domainname.com если он не сможет самостоятельно решить hostname.country .

    2 В таком сценарии hostname будет разрешено для сервера в стране, домен которой указан первым в пути search .

    Вы можете использовать параметр CanonicalDomains в своей конфигурации ssh.

    Добавление следующего в ваш конфигурационный файл ssh заставит ssh попытаться добавить domainname.com на любой хост, у которого не более 1 точки его имени:

     CanonicalizeHostname yes CanonicalDomains domainname.com 

    С помощью этой конфигурации ssh foo.eng сначала попробует foo.eng.domainname.com и foo.eng если хост не найден. Аналогично, ssh github.com сначала попробует github.com.domainname.com , поэтому, если вы хотите подключиться к GitHub, ваш DNS-сервер не должен возвращать записи для не существующих хостов.

    CanonicalizeMaxDots можно использовать для управления количеством точек, которые могут отображаться в имени хоста, прежде чем ssh считает его полностью квалифицированным и не добавляет domainname.com . он по умолчанию равен 1, что должно быть достаточно для вас, учитывая схему, которую вы сейчас используете, но если вы когда-нибудь доберетесь до чего-то вроде hostname.city.country вам нужно будет увеличить ее.

    Linux и Unix - лучшая ОС в мире.