Что определяет имя хоста Linux?

Вы действительно можете подключить SSHFS без открытого ключа при запуске, используя параметр password_stdin, но не с помощью fstab.

Что вам нужно, так это небольшой файл сценария и cron.

Помните, что открытый ключ всегда является лучшим выбором. Но иногда открытые ключи не работают (у меня тоже была эта проблема несколько раз). Обратите внимание, что файл сценария будет содержать простой пароль. Поэтому вы должны убедиться, что только root имеет какие-либо права доступа к этому файлу!

Файл сценария может выглядеть так (/root/automount.sh):

#!/bin/sh
if [ $(mount | grep 'user@server:/folder' | wc -l) -ne 1 ]
then
    echo 'PASSWORD' | sshfs user@server:/folder /mnt/mountpoint -o password_stdin,allow_other
    echo 'SSHFS has been mounted.'
else
    echo 'SSHFS is already mounted.'
fi

Чтобы запустить это при запуске, вы можете использовать crontab как root и ввести следующую строку:

@reboot /root/automount.sh

Как указано выше, вы должны убедиться, что абсолютно никто не может прочитать файл, так как он содержит простой текстовый пароль!

-rwx------ 1 root root 526 Nov 21 12:57 automount.sh

К настоящему времени после каждой перезагрузки ваша система будет автоматически монтировать SSHFS с использованием учетных данных.

13
19.05.2017, 14:33
3 ответа

В Linux-системе есть две независимые(!) концепции имени хоста.

Существует то, что ядро ​​считает локальным именем хоста (обрабатывается системными вызовами gethostname/uname и sethostname) независимо от какого-либо сетевого подключения — эта механика по-прежнему существовала бы, если бы вы построили ядро ​​без поддержки сетей TCP/IP. .

Существует одно или несколько имен хостов, которые фактически подключены к TCP/IP (или другому сетевому стеку — не все сети в мире являются IP!) адресами хоста, и они обрабатываются в пользовательском пространстве функциями библиотеки распознавателя. (часть libc), которая определит такое имя, интерпретируя источники (локальный файл /etc/hosts, DNS, NIS....) в соответствии с правилами, которые вы им задаете в соответствующих файлах конфигурации (/etc/nsswitch.conf). , /etc/host.conf и т. д.).

5
27.01.2020, 19:53

Программа hostnameвыполняет системный вызов uname, как видно из запуска:

strace hostname
...
uname({sysname="Linux", nodename="my.hostname.com",...}) = 0
...

На справочной странице системного вызова uname говорится, что системный вызов извлекает из ядра следующую структуру:

  struct utsname {
               char sysname[];    /* Operating system name (e.g., "Linux") */
               char nodename[];   /* Name within "some implementation-defined
                                     network" */
               char release[];    /* Operating system release (e.g., "2.6.28") */
               char version[];    /* Operating system version */
               char machine[];    /* Hardware identifier */
           #ifdef _GNU_SOURCE
               char domainname[]; /* NIS or YP domain name */
           #endif
           };

Значит, доменное имя происходит из системы NIS/YP, если верить комментарию. Так что более чем вероятно, что в вашей сети может быть служба NIS / YP, которая возвращает вам имя, установленное ОС ubuntu.

11
27.01.2020, 19:53

Вероятно, во время установки Ubuntu подключался к Интернету через домашний маршрутизатор. Для этого он сообщил маршрутизатору имя своего хоста и получил временный локальный IP-адрес.

Теперь, когда вы перезагрузитесь в Fedora, она подключится к тому же маршрутизатору, чтобы получить свой IP-адрес, но старая аренда, созданная для Ubuntu, по-прежнему действительна. Поскольку это та же машина с той же сетевой картой и тем же аппаратным MAC-адресом, она будет повторно использовать ту же аренду.

Я предполагаю, что маршрутизатор отправляет имя хоста, на котором была зарегистрирована аренда IP, и Fedora получает его.

К сожалению, у меня нет доказательств или цитат, подтверждающих мой ответ, я могу просто рассказать о личном опыте установки Ubuntu в режиме двойной -загрузки с Windows. В то время Ubuntu отказывалась задавать во время установки то же имя хоста, которое я использовал в Windows, потому что оно утверждало, что это имя уже присутствует в сети. Скорее всего, у нас происходит что-то подобное.

Чтобы проверить, относится ли то, что я предполагаю, к вашей ситуации, попробуйте отозвать аренду IP-адреса в интерфейсе настройки вашего маршрутизатора, а затем перезагрузите Fedora. Если он больше не использует имя хоста Ubuntu,Я должен быть прав.

3
27.01.2020, 19:53

Теги

Похожие вопросы