Автоматизация sshfs не работает

Вопрос или проблема

Я хочу смонтировать удаленный каталог и хочу автоматизировать это. Поэтому я написал скрипт ниже, который не работает должным образом.

#!/usr/bin/expect -f
spawn sshfs [email protected]:/home/user /mnt/remote
expect "assword:"
send "myPassword\r"

Когда я запускаю вышеуказанный скрипт и проверяю ls /mnt/remote, появляется следующая ошибка:

ls: невозможно получить доступ к /mnt/remote: Транспортный конечный пункт не подключен

Я использовал sshpass, но это не сработало:

sshpass -p myPassword sshfs [email protected]:/home/user /mnt/remote

Оболочка заблокирована и возникает та же ошибка.

Примечание: Если я запускаю sshpass -p vedams123 sshfs [email protected]:/home/user /mnt/remote, работает без каких-либо проблем.

Это происходит, когда в вашем целевом каталоге есть устаревшая сессия. Вы можете очистить сессию с помощью

fusermount -u /mnt/remote

где /mnt/remote — это тот путь, к которому настроен ваш локальный монтируемый файл.

Спасибо https://unix.stackexchange.com/a/215009/28280

Ответ или решение

Автоматизация подключения к удаленным директориям с использованием SSHFS может быть весьма полезной задачей, но она также может вызвать некоторые трудности. Рассмотрим проблему, с которой вы столкнулись, и предложим решения.

Проблема

Вы пытаетесь автоматизировать процесс монтирования удаленной директории с использованием скрипта написанного на expect и sshpass, но получаете ошибку:

ls: cannot access /mnt/remote: Transport endpoint is not connected

Эта ошибка обычно указывает на проблемы с соединением или наличие "застрявшей" сессии, которая мешает корректной работе SSHFS.

Решение

Вот несколько шагов, которые могут помочь вам устранить эту проблему:

  1. Проверка наличия "застрявших" сессий:
    Иногда, когда соединение с удаленным сервером прерывается или не закрывается должным образом, то может остаться "застрянувшая" сессия. Чтобы устранить эту ситуацию, выполните следующую команду:

    fusermount -u /mnt/remote

    Данная команда отключит монтированную директорию sshfs и позволит вам начать процесс заново.

  2. Оптимизация скрипта:
    Ваш оригинальный скрипт на expect может быть улучшен для надежной автоматизации. Также рекомендуется избегать хранения паролей в явном виде. Более безопасный подход – настроить ключи SSH для аутентификации. Однако, если вы всё же хотите использовать пароли, вот пересмотренный вариант вашего скрипта:

    #!/usr/bin/expect -f
    set timeout -1
    spawn sshfs [email protected]:/home/user /mnt/remote
    expect {
       "assword:" {
           send "myPassword\r"
           exp_continue
       }
       "yes/no" {
           send "yes\r"
           exp_continue
       }
    }

    Обратите внимание, что в этом скрипте управляется ситуацией, когда система запрашивает подтверждение (yes/no) для нераспознанного ключа SSH.

  3. Использование sshpass:
    Если вы хотите использовать sshpass, вам следует убедиться, что сам sshpass установлен, и команда выполняется корректно. Скрипт может быть следующим:

    sshpass -p "myPassword" sshfs [email protected]:/home/user /mnt/remote

    Убедитесь, что пароль заключен в кавычки, чтобы избежать проблем с символами, которые могут быть интерпретированы как специальные символы в командной оболочке.

  4. Настройка ключей SSH:
    Оптимальным вариантом будет использование публичных и приватных SSH-ключей. Следуйте следующим шагам для их настройки:

    • Создайте ключ с помощью команды ssh-keygen.
    • Скопируйте публичный ключ на удаленный сервер с помощью ssh-copy-id [email protected].
      Благодаря этому вы сможете подключаться без ввода пароля.
  5. Проверка работы:
    После выполнения всех этих шагов проверьте атрибуты монтирования:

    df -h | grep /mnt/remote

    Убедитесь, что он отображается в выводе, что означает корректное соединение.

Заключение

Автоматизация монтирования с использованием SSHFS может потребовать некоторых усилий, особенно при работе с аутентификацией и сетевыми соединениями. Следуя вышеперечисленным рекомендациям, вы сможете успешно настроить автоматизированное соединение. Если у вас остались проблемы, обратите внимание на сетевые настройки и права доступа к директориям. Если возникнут дополнительные вопросы, не стесняйтесь задавать их!

Оцените материал
Добавить комментарий

Капча загружается...