Проблема с pam_mount и sshfs

Если бы Вы не должны были вводить пароль, то Вы могли бы сделать

ssh -t 'eclipse & exec bash'

-t флаг говорит ssh выделять терминал даже при том, что Вы даете ему название команды. Удаленная оболочка должна быть неинтерактивной, потому что она выполняет команду, но последняя вещь, которую она делает, exec bash, т.е. сама замена новым экземпляром оболочки, который является интерактивным. (Замена bash zsh или независимо от того, что Ваша любимая оболочка.)

Если необходимо ввести пароль, действительно необходимо ввести его в терминале некоторого вида (который является, почему Вам нужно expect если Вы собираетесь автоматизировать ту часть). ssh сознательно отказывается читать пароли из параметра командной строки или файла.

Одна вещь, которая может быть полезной, состоит в том, чтобы создать основное соединение SSH раз и навсегда, автожелезнодорожные перевозки на него. Пока ведущее устройство работает, можно установить ведомые соединения, которые не требуют никакой аутентификации. Вставьте следующие строки Ваш ~/.ssh/config:

Host nickname
HostName 10.101.0.133
ControlPath=~/.ssh-control:%l:%p:%r

Создайте основное соединение с ssh -MX nickname eclipse (внутри expect, если Вы все еще хотите передать пароль автоматически). Затем, пока Eclipse работает, можно сделать ssh nickname без переаутентификации.

4
13.11.2016, 15:27
1 ответ

Я решил проблему.

Сначала я создал глобальный known_hosts файл в /etc/ssh/ssh_known_hosts.

Основная проблема была видима в этой строке отладки:

command: 'pmt-fd0ssh' 'mount.fuse' 'sshfs#pszubert@HOST:' '/home/pszubert' '-oreconnect,idmap=user,password_stdin,nonempty'

Поскольку мы видим, что нет никакого пространства между -o и опции.

Добавление строки:

<fusemount>mount.fuse %(VOLUME) %(MNTPT) -o %(OPTIONS)</fusemount>

кому: pam_mount файл конфигурации (/etc/security/pam_mount.conf.xml) решенная проблема. Теперь mount.fuse призван это путь это:

command: 'pmt-fd0ssh' 'mount.fuse' 'sshfs#pszubert@HOST:' '/home/pszubert' '-o' 'reconnect,nonempty'

Затем важными вещами являются полномочия к /dev/fuse и /usr/bin/fusermount. Пользователь должен быть в fuse группа. В моем случае это не было возможно, потому что это - удаленный пользователь, таким образом, я изменил полномочия вручную:

chmod o+x /usr/bin/fusermount
chmod o+rw /dev/fuse
4
27.01.2020, 20:56

Теги

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