ssh
и host
разрешать имена по совершенно разным путям, поэтому неудивительно, что они иногда дают разные результаты, особенно когда разрешаемое имя не является полным доменным именем (отсюда и предложение использовать полные доменные имена везде).
Вы ничего не упоминаете о своей ОС и конфигурации вашей системы, поэтому я должен держать это в общих чертах, ориентируясь на Linux: детали MacOS несколько отличаются, а Windows - даже больше, но общие концепции совпадают.
host
запрашивает DNS, поэтому в основном он ищет /etc/resolv.conf
и запрашивает перечисленные там серверы, возможно, присоединяя имя домена, если имя хоста еще не полностью определено. Он игнорирует любой другой возможный источник, но имейте в виду, что в наши дни многие системы используют локальный кеширующий DNS-сервер (обычно dnsmasq
), который читает /etc/hosts
и другие источники перед запросом других DNS-серверов, поэтому, если host
запросы этого локального сервера, /etc/hosts
могут появиться.
ssh
следует своим путем. Я опишу, что openssh
делает под Linux, другие реализации отличаются. Сначала он ищет псевдонимы хоста, определенные в конфигурационных файлах (для всей системы /etc/ssh/ssh_config
и для каждого пользователя ~/.ssh/config
), затем он ищет другие источники в порядке, указанном в hosts:
директиве /etc/nsswitch.conf
. Скажи, что это что-то вроде:
hosts: files dns
это означает: посмотрите /etc/hosts
и затем запросите DNS ( /etc/resolv.conf
снова). Другие возможные источники являются устаревшими nis
и netinfo
услуги, LDAP, Active Directory, вы называете их.
Чтобы отладить ваш конкретный случай, вы должны следовать по пути, по которому следует ваша реализация, ssh
и выяснить, где он застрял.
storage
это живой домен верхнего уровня в Интернете.