sshvà hostgiả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.
hosttruy vấn DNS, vì vậy về cơ bản, nó tìm kiếm /etc/resolv.confvà 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/hostsvà 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 hosttruy vấn máy chủ cục bộ đó, kết quả /etc/hostscó thể xuất hiện.
sshđi theo con đường riêng của nó. Tôi sẽ mô tả những gì opensshlà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_configvà 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/hostsvà sau đó truy vấn DNS ( /etc/resolv.confmột lần nữa). Các nguồn có thể khác là lỗi thời nisvà netinfodị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 sshtiếp theo và tìm ra nơi nó bị kẹt.
storagelà một tên miền cấp cao trực tiếp trên Internet.