ssh
và host
giải quyết các tên theo các đường dẫn hoàn toàn khác nhau, do đó, không có gì đáng ngạc nhiên khi đôi khi chúng mang lại kết quả khác nhau, đặc biệt khi tên để giải quyết không phải là FQDN (do đó đề xuất sử dụng FQDN ở mọi nơi.)
Bạn không đề cập bất cứ điều gì về hệ điều hành và cấu hình hệ thống của bạn, vì vậy tôi phải giữ nó chung chung, để mắt đến Linux: Các chi tiết MacOS có phần khác nhau, và Windows thậm chí còn nhiều hơn, nhưng các khái niệm chung là như nhau.
host
truy vấn DNS, vì vậy về cơ bản, nó tìm kiếm /etc/resolv.conf
và truy vấn các máy chủ được liệt kê ở đó, có thể đính kèm một tên miền nếu tên máy chủ chưa đủ điều kiện. Nó bỏ qua mọi nguồn có thể khác, nhưng hãy cẩn thận vì ngày nay, nhiều hệ thống chạy máy chủ DNS bộ nhớ đệm cục bộ (thường dnsmasq
) đọc /etc/hosts
và các nguồn khác trước khi truy vấn các máy chủ DNS khác, vì vậy nếu host
truy vấn máy chủ cục bộ đó, kết quả /etc/hosts
có thể xuất hiện.
ssh
đi theo con đường riêng của nó. Tôi sẽ mô tả những gì openssh
làm trong Linux, các triển khai khác nhau. Đầu tiên, nó tìm các biệt danh máy chủ được xác định trong các tệp cấu hình (toàn hệ thống /etc/ssh/ssh_config
và mỗi người dùng ~/.ssh/config
), sau đó nó tìm kiếm các nguồn khác theo thứ tự được chỉ định hosts:
trong lệnh /etc/nsswitch.conf
. Nói nó là một cái gì đó như:
hosts: files dns
điều này có nghĩa là: nhìn vào /etc/hosts
và sau đó truy vấn DNS ( /etc/resolv.conf
một lần nữa). Các nguồn có thể khác là lỗi thời nis
và netinfo
dịch vụ, LDAP, thư mục hoạt động, bạn đặt tên cho chúng.
Để gỡ lỗi trường hợp cụ thể của bạn, bạn nên theo con đường thực hiện ssh
tiếp theo và tìm ra nơi nó bị kẹt.
storage
là một tên miền cấp cao trực tiếp trên Internet.