
Я пытаюсь подключиться по ssh к своей плате (плата Imx6 Humming) через ПК с помощью Putty. Сразу после приглашения на вход в систему в Putty я получаю сообщение «неожиданно закрытое сетевое соединение». Замена этих двух библиотек в корневой файловой системе решает проблему. Почему эти файлы создают проблему и какова их зависимость от ssh? Буду признателен за любую помощь относительно этих двух файлов библиотек.
решение1
libnss_files.so — это библиотека, которая фактически читает /etc/passwd, /etc/group, /etc/hosts. Без нее программы не смогут искать имена пользователей и идентификаторы пользователей — OpenSSH не будет знать ваш UID и ваш домашний каталог; фактически, он не будет знать, что вы существуете.
Аналогично, libnss_dns.so — это библиотека, которая делает DNS-запросы. Это не единственная DNS-библиотека в вашей системе, но она обрабатывает общие функции «преобразования домена в адрес», которые использует большинство программ.
В общем, это модули Glibc, которые обрабатывают поиск информации о каталогах из DNS и файлов соответственно. Здесь «информация о каталогах» означает 1) учетные записи пользователей, как в /etc/passwd или /etc/group, и 2) имена хостов, как в DNS или /etc/hosts. (Другими словами, каталог, как в телефонной книге, а не каталог, как в папке с файлами.)
ThelibcСтандартная библиотека, используемая программами, написанными на языке C, имеет общие функции для поиска информации о каталоге независимо от источника. То есть, фактическим программам не нужно заботиться о DNS или /etc – они просто вызывают функцию libc для поиска имени пользователя (или имени хоста, или группы, или порта TCP...), и libc получает ее из любого подходящего источника.
Glibc, библиотека libc, используемая в большинстве систем Linux, имеетмодульныйИсточники информации – системный администратор может добавлять новые, изменять их порядок и т. д. Вместо того, чтобы «ядро» libc знало специфику /etc/passwd или /etc/hosts, оно делегирует эту задачу модулю «libnss_files» – и аналогично, знания о DNS находятся в модуле «libnss_dns».
Всякий раз, когда программе необходимо разрешить доменное имя, libc проходит через каждый модуль, настроенный в /etc/nsswitch.conf – сначала он запрашивает модуль 'files' (который проверяет /etc/hosts), затем модуль 'dns' (который проверяет DNS), пока не получит ответ. Могут быть и другие модули для mDNS (домены ".local"), NetBIOS и т. д.
Аналогично, всякий раз, когда программе необходимо преобразовать имя пользователя в UID или UID в имя пользователя, libc просит модуль «files» получить пользователей из /etc/passwd. (Опять же, могут быть и другие модули, такие как «ldap», «pgsql» или «nis», которые получают информацию об учетных записях пользователей из альтернативных источников.)