I know this subject has been discussed so many times that I'm almost ashamed I haven't found the solution to my issue yet. Clearly there is something I quite don't understand and would really appreciate any input or pointer.
Backgroud
- Linux 3.2.0-4-amd64 #1 SMP Debian 3.2.51-1 x86_64 GNU/Linux
- All cmds are run as root and ssh key has been copied to remote's .ssh/authorized_keys
- use ssh-agent to unlock the key
- Normal sshfs cmd works as expected -
sshfs USER@REMOTE:/ /mnt/ssh/backup
- Adding the entry to fstab and doing a "mount -a" works as expected -
sshfs#USER@REMOTE:/ /mnt/ssh/backup/ fuse defaults 0 0
#:automount -V
Linux automount version 5.0.7
Directories:
config dir: /etc/default
maps dir: /etc
modules dir: /usr/lib/x86_64-linux-gnu/autofs
Compile options:
ENABLE_FORCED_SHUTDOWN ENABLE_IGNORE_BUSY_MOUNTS WITH_HESIOD
WITH_LDAP WITH_SASL LIBXML2_WORKAROUND
#:automount -m
autofs dump map information
===========================
global options: none configured
Mount point: /mnt/ssh
source(s):
instance type(s): file
map: /etc/auto.sshfs
backup | -fstype=fuse,rw,nodev,noatime,allow_other,default_permissions,max_read=65536 :sshfs#USER@REMOTE:/
auto.master
/mnt/ssh /etc/auto.sshfs --timeout=30,--ghost,--debug
auto.sshfs
backup -fstype=fuse,rw,nodev,noatime,allow_other,default_permissions,max_read=65536 :sshfs#USER@REMOTE:/
When I automount in foreground the auto.master as detailed below, the "backup" folder is created and the remote dir is mounted with no issue at all. I can ls -al the /mnt/ssh/backup folder and am indeed browsing the remote host
#:automount -f -v -d auto.master
#:ls -al /mnt/ssh/backup
attempting to mount entry /mnt/ssh/backup
lookup_mount: lookup(file): looking up backup
lookup_mount: lookup(file): backup -> -fstype=fuse,rw,nodev,noatime,allow_other,default_permissions,max_read=65536 :sshfs#USER@REMOTE:/
parse_mount: parse(sun): expanded entry: -fstype=fuse,rw,nodev,noatime,allow_other,default_permissions,max_read=65536 :sshfs#USER@REMOTE:/
parse_mount: parse(sun): gathered options: fstype=fuse,rw,nodev,noatime,allow_other,default_permissions,max_read=65536
parse_mount: parse(sun): dequote(":sshfs#USER@REMOTE:/") -> :sshfs#USER@REMOTE:/
parse_mount: parse(sun): core of entry: options=fstype=fuse,rw,nodev,noatime,allow_other,default_permissions,max_read=65536, loc=:sshfs#USER@REMOTE:/
sun_mount: parse(sun): mounting root /mnt/ssh, mountpoint backup, what sshfs#USER@REMOTE:/, fstype fuse, options rw,nodev,noatime,allow_other,default_permissions,max_read=65536
do_mount: sshfs#USER@REMOTE:/ /mnt/ssh/backup type fuse options rw,nodev,noatime,allow_other,default_permissions,max_read=65536 using module generic
mount_mount: mount(generic): calling mkdir_path /mnt/ssh/backup
mount_mount: mount(generic): calling mount -t fuse -s -o rw,nodev,noatime,allow_other,default_permissions,max_read=65536 sshfs#USER@REMOTE:/ /mnt/ssh/backup
spawn_mount: mtab link detected, passing -n to mount
mount_mount: mount(generic): mounted sshfs#USER@REMOTE:/ type fuse on /mnt/ssh/backup
But when I start the autofs service as detailed below, the "backup" folder gets created but as soon as I try to ls the directory, it just refuses to mount.
#:service autofs start
#:ls -al /mnt/ssh/backup
attempting to mount entry /mnt/ssh/backup
lookup_mount: lookup(file): looking up backup
lookup_mount: lookup(file): backup -> -fstype=fuse,rw,nodev,noatime,allow_other,default_permissions,max_read=65536 :sshfs#USER@REMOTE:/
parse_mount: parse(sun): expanded entry: -fstype=fuse,rw,nodev,noatime,allow_other,default_permissions,max_read=65536 :sshfs#USER@REMOTE:/
parse_mount: parse(sun): gathered options: fstype=fuse,rw,nodev,noatime,allow_other,default_permissions,max_read=65536
parse_mount: parse(sun): dequote(":sshfs#USER@REMOTE:/") -> :sshfs#USER@REMOTE:/
parse_mount: parse(sun): core of entry: options=fstype=fuse,rw,nodev,noatime,allow_other,default_permissions,max_read=65536, loc=:sshfs#USER@REMOTE:/
sun_mount: parse(sun): mounting root /mnt/ssh, mountpoint backup, what sshfs#USER@REMOTE:/, fstype fuse, options rw,nodev,noatime,allow_other,default_permissions,max_read=65536
do_mount: sshfs#USER@REMOTE:/ /mnt/ssh/backup type fuse options rw,nodev,noatime,allow_other,default_permissions,max_read=65536 using module generic
mount_mount: mount(generic): calling mkdir_path /mnt/ssh/backup
mount_mount: mount(generic): calling mount -t fuse -s -o rw,nodev,noatime,allow_other,default_permissions,max_read=65536 sshfs#USER@REMOTE:/ /mnt/ssh/backup
spawn_mount: mtab link detected, passing -n to mount
>> read: Connection reset by peer
mount(generic): failed to mount sshfs#USER@REMOTE:/ (type fuse) on /mnt/ssh/backup
dev_ioctl_send_fail: token = 22
failed to mount /mnt/ssh/backup
I've tested numerous workarounds, including but not limited to
- escaping the :sshfs#USER@REMOTE:/ -
:sshfs\#USER@REMOTE\:/
- removing the / -
:sshfs#USER@REMOTE:
- providing a path for my identity file in auto.sshfs -
IdentityFile=/root/.ssh/id_rsa
- specifying uid/gid in auto.master -
/mnt/ssh /etc/auto.sshfs uid=0,gid=0,--timeout=30,--ghost
I'm now out of ideas and stuck.
Thanks in advance, JS
UPDATE
@KaszpiR - Thanks for the effort but the proper key has already been uploaded to the remote's authorized_keys file and standard sftp or sshfs works flawlessly.
It seems that the autofs initscript (or one of the options used to launch automount in the script) is creating the issue but haven't had the time to debug it properly.
As a workaround you can remove the /etc/init.d/autofs script completely (update-rc.d autofs remove and move it to a backup location for safekeeping) and launch automount manually or via a script.