máy chủ có thể phân giải tên máy chủ, ssh không


14

Tôi đang cố gắng kết nối từ hệ thống 10.04 đến hệ thống 12.04 thông qua SSH. Thật kỳ lạ, các quy tắc trong resolv.confdường như chỉ có hiệu lực chọn lọc, khiến tôi bối rối. Quan sát:

[2] user@mach:~$ ssh pangolin
ssh: Could not resolve hostname pangolin: Name or service not known
[2] user@mach:~$ host pangolin
pangolin.subdomain.domain.tld has address 172.16.7.12

subdomain.domain.tldlà trên searchdòng trong /etc/resolv.confvà sử dụng hosttên được tìm kiếm đúng theo các quy tắc. Tuy nhiên, với máy khách SSH, sshtôi nhận được lỗi được sao chép ở trên. Làm sao có thể? Tôi luôn ấn tượng rằng các quy tắc phân giải tên trong resolv.confhệ thống toàn cầu áp dụng.

Lưu ý: /etc/hostskhông khai báo tên nào pangolincả. Gói openssh-serverđược cấu hình trên máy đích. Câu hỏi hoàn toàn là về lý do tại sao độ phân giải tên không nhất quán giữa hai chương trình.

Một lưu ý khác: lệnh hoạt động tốt khi tôi nhập tên miền đủ điều kiện, nghĩa là pangolin.subdomain.domain.tld.

Trong khi đó tôi khởi động lại máy khách (10.04) và vấn đề vẫn tồn tại. Một trình nền bộ nhớ đệm DNS chưa được cài đặt, vì vậy tôi cho rằng dù sao đó cũng không phải là vấn đề.


Các thông tin yêu cầu trong bình luận:

$ grep host /etc/nsswitch.conf
hosts:          files dns

/etc/resolv.conf, Tôi đã chuyển đổi tên miền một cách nhất quán:

# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
#     DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
nameserver 172.16.1.1
nameserver 172.16.1.5
search subdomain.domain1.com domain1.com domain2 domain3.com domain2.ccTLD domain3.net dev.domain1.com sdk.dev.domain1.com

... và đầy đủ /etc/nsswitch.conf:

$ cat /etc/nsswitch.conf
# /etc/nsswitch.conf
#
# Example configuration of GNU Name Service Switch functionality.
# If you have the `glibc-doc-reference' and `info' packages installed, try:
# `info libc "Name Service Switch"' for information about this file.

passwd:         compat
group:          compat
shadow:         compat

hosts:          files dns
networks:       files

protocols:      db files
services:       db files
ethers:         db files
rpc:            db files

netgroup:       nis

... và /etc/network/interfaces, đó là nguồn cho resolv.conf12.04:

# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
auto eth0
iface eth0 inet static
        address 172.16.1.234
        netmask 255.255.0.0
        gateway 172.16.255.254
        dns-nameservers 172.16.1.1 172.16.1.5
        dns-search domain1.com. domain2. domain3.com. domain2.ccTLD. domain3.net. dev.domain1.com. sdk.dev.domain1.com. subdomain.domain1.com.
        dns-domain subdomain.domain1.com.

Lưu ý: việc chuyển đổi tên miền đã được thực hiện sed, do đó, nó phù hợp giữa các tệp được sao chép khác nhau.


Không có ~/.ssh/config, nhưng đây là cái toàn cầu ( /etc/ssh/ssh_config), bị thu hẹp vì lý do ngắn gọn:

$ grep -v '^#' /etc/ssh/ssh_config |grep -v '^[[:space:]]*$'
Host *
    SendEnv LANG LC_*
    HashKnownHosts yes
    GSSAPIAuthentication yes
    GSSAPIDelegateCredentials no

$ mtr pangolin
Name or service not known: Success

1
Bạn có thể gửi bài của bạn /etc/resolv.confvà đầu ra của lệnh này grep host /etc/nsswitch.confkhông?
Awi

@Awi: đã thêm nó, cộng thêm một chút.
0xC0000022L

Hai câu hỏi 1) Nó có hoạt động như dự định nếu bạn sử dụng fqdn không? 2) Bạn có thể đăng nội dung của ~ / .ssh / config và / etc / ssh / ssh_config để xem có bất kỳ sự kỳ lạ nào không.
Patrick Regan

@PatrickRegan: Tôi sẽ chỉnh sửa nội dung được yêu cầu thành câu hỏi. Có, nó hoạt động với fqdn :) ... (cũng sẽ điều chỉnh câu hỏi theo khía cạnh đó)
0xC0000022L

@STATUS_ACCESS_DENIED: Bạn có thấy điều gì kỳ lạ với mtr pangolin?
pl1nk

Câu trả lời:


12

Trong khi đó sshvà các chương trình khác như pingsử dụng trình phân giải glibc để tra cứu tên máy chủ ('tê tê' trong trường hợp này), hãy hosttìm tên trực tiếp trong DNS, bỏ qua trình phân giải glibc. Đó là sự khác biệt.

Tuy nhiên, do trình phân giải glibc, trên máy của bạn, được định cấu hình để thử dnssau files, tôi không thể giải thích lý do tại sao trình phân giải không hostthành công khi thành công.

Tôi đã thấy hành vi này được báo cáo trước đây khi dnsmasq được sử dụng làm máy chủ chuyển tiếp cục bộ (https://bugs.launchpad.net/ubfox/+source/dnsmasq/+bug/998712) nhưng bạn không sử dụng máy chủ tên cục bộ như vậy; nhưng có lẽ vấn đề ở đó và ở đây không phải ở dnsmasq mà là ở trình giải quyết glibc.


Câu trả lời sâu sắc và súc tích. Con đường để đi! Cảm ơn.
0xC0000022L

9

Ssh của bạn có thể cố gắng giải quyết IP6 và hết thời gian thực hiện việc này. Nếu bạn không sử dụng IP6, hãy thử tắt IP6 /etc/ssh/ssh_configbằng cách thay đổi Địa chỉ gia đình từ anythành inet.


Điều này làm việc cho tôi, cảm ơn! Tôi đã không thông báo trước vì tất cả các máy chủ khác tôi đã cố gắng kết nối với ipv6 được hỗ trợ.
mniess

3

Tôi đã tình cờ gặp điều này một vài lần và nó luôn ném tôi cho đến khi tôi nhớ sáu hạn chế tên miền trong danh sách tìm kiếm trong độ phân giải.


1. Đây là một điểm rất tốt. Văn bản câu hỏi bao gồm một danh sách của tệp giải quyếtvv (mặc dù nó dường như đã được chỉnh sửa để ẩn danh thông tin). Dòng của tệp searchchứa hơn sáu tên miền. Trình phân giải glibc chỉ nhìn vào sáu miền đầu tiên hoặc 256 ký tự, tùy theo số lượng ít hơn. Tôi suy đoán rằng hosttiện ích không có hạn chế như vậy và điều đó hostthành công trong việc giải quyết tên với phần mở rộng tên miền thứ bảy hoặc sau đó.
jdthood

Cũng lưu ý rằng không nên có cả một dns-searchdòng và một dns-domaindòng trong một khổ thơ duy nhất trong / etc / mạng / giao diện. Các dns-domaintùy chọn thực sự không được chấp nhận; tất cả các tên miền tìm kiếm nên được đưa ra trên dns-searchdòng.
jdthood

3

Tôi đã gặp lỗi này bằng cách đặt một dòng nhập tên miền trước 2 dòng máy chủ tên một cách tình cờ. nslookup làm việc. wget làm việc ssh, scp, rsync không thành công.

di chuyển tên miền xuống bên dưới máy chủ tên và lưu độ phân giải cố định. không có gì khác là cần thiết cho tôi


3

Tôi biết rằng đây là một câu hỏi cổ xưa, nhưng tôi sẽ thêm vào những gì làm việc cho tôi.

Tôi đã có cùng một vấn đề và thấy rằng trong tôi nsswitch.conf, có mdnsngoài filesdns. Loại bỏ mdns4giải quyết vấn đề này cho tôi.


cũng làm việc cho tôi - Ubuntu 16.04
Buddy Palumbo

-1

Tôi đã phải đối mặt với vấn đề truy cập máy chủ sftp của tôi. Người dùng ftp không thể đăng nhập vào sftp từ một máy chủ khác. (Solaris - Mở ra). Tôi đã nhận xét mục "dns" trong nsswitch.conf và vấn đề đã được giải quyết.

Cảm ơn Arun Janardhanan (Dịch vụ phần mềm IBS)

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.