SSHFS 无法挂载用户主目录

SSHFS 无法挂载用户主目录

我正在尝试通过 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 需要从其配置目录中获取某些内容,因此它会尝试从中读取。Fuse 只会阻止该读取,从而导致死锁。

sshfs 需要什么东西~/.ssh

我尝试删除所有读/写权限~/.ssh,然后挂载到其他目录。这很有效。调试输出仅抱怨写入.ssh/known_hosts

答案1

您说得对,fuse 首先启动挂载,然后启动 ssh 进程。这会给您带来问题,因为默认情况下 ssh 读取~/.ssh/ssh_config~/.ssh/known_hosts


~/.ssh/id_*来自用户主目录的文件。此行为可以更改:

  1. ~/.ssh/ssh_config是默认的每用户配置文件。可以使用-F选项指定备选的每用户配置文件,或者使用-F /dev/null指定无每用户配置文件。
  2. ~/.ssh/known_hosts用于存储和检查主机密钥。您可以使用-o UserKnownHostsFile=/dev/null,然后手动将主机密钥添加到/etc/ssh/ssh_known_hosts或使用-o StrictHostKeyChecking=no
  3. ~/.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

相关内容