Я пытаюсь настроить централизованный сервер домашнего каталога через sshfs и pam-mount.
В настоящее время я застрял на этом этапе:
При попытке смонтировать удаленный домашний каталог sshfs просто застревает:
d_inevitable@laptop:~$ sshfs -o nonempty,debug server: .
FUSE library version: 2.9.0
nullpath_ok: 0
nopath: 0
utime_omit_ok: 0
В этот момент он зависает.
Это происходит потому, что домашний каталог включает в себя ~/.ssh
. Поэтому, когда я пытаюсь sshfs -o nonempty server:.ssh .ssh
, происходит то же самое.
Я полагаю, что fuse каким-то образом инициализирует монтирование, но затем ssh нужно что-то из его каталога конфигурации, поэтому он пытается прочитать из него. Предохранитель просто заблокирует это чтение, что приведет к тупику.
Какие вещи нужны sshfs из ~/.ssh
?
Я попытался удалить все разрешения на чтение / запись из ~/.ssh
и затем смонтировать их в какой-то другой каталог. Это работало нормально. Вывод отладки жаловался только на запись в .ssh/known_hosts
.
Вы правы: fuse сначала инициирует монтирование, затем запускает процесс ssh. Это вызывает у вас проблемы, так как по умолчанию ssh читает файлы ~/.ssh/ssh_config
, ~/.ssh/known_config
, ~/.ssh/id_*
из дома пользователя. Это поведение можно изменить:
~/.ssh/ssh_config
является файлом конфигурации по умолчанию для каждого пользователя. Альтернативный файл конфигурации для каждого пользователя может быть указан с помощью опции -F
или с помощью -F /dev/null
, чтобы не указывать файл конфигурации для каждого пользователя. ~/.ssh/known_config
используется для хранения и проверки ключей хоста. Вы можете использовать -o UserKnownHostsFile=/dev/null
и либо вручную добавить ключ хоста в /etc/ssh/ssh_known_hosts
, либо использовать -o StrictHostKeyChecking=no
. ~/.ssh/id_*
файлы являются файлами идентификации по умолчанию, используемыми для аутентификации клиента. Если вы хотите аутентифицироваться с использованием файла идентификации, вам нужно держать его вне домашнего каталога и использовать -o IdentitiesOnly=yes -o IdentityFile=<path to private key>
. Или же вы можете аутентифицироваться в интерактивном режиме, если вы используете -o IdentitiesOnly=yes -o IdentityFile=/dev/null -o PubkeyAuthentication=no
. Например, для монтирования дома с использованием sshfs, аутентификации с использованием пароля, без проверки ключа хоста, запустите
sshfs user@server: ~/ -o nonempty -F /dev/null -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -o IdentitiesOnly=yes -o IdentityFile=/dev/null -o PubkeyAuthentication=no