我有个问题。我添加了一个 SSH 服务器来安装到我的服务器。我将以下行添加到 /etc/fstab。
sshfs#[email protected]:/home/hd03_00_backup_server/ /mnt/server_backup fuse.sshfs IdentityFile=/root/.ssh/id_rsa_backup_server_home,port=23,rw 0 0
但命令
mount -a
仍然要求我输入密码。命令 :
sudo sshfs -p 23 [email protected]:/home/ /mnt/server_backup -o IdentityFile=/root/.ssh/id_rsa_backup_server_home
无需密码即可连接和安装。
答案1
这不是一个直接的答案,但这是我如何使用 systemd 安装单元实现同样的事情:
$ cat ~/.config/systemd/user/home-stew-shared.mount
[Mount]
What=%[email protected]:
Where=%h/shared
Type=fuse.sshfs
我将其放在总线上systemd --user
,因此它仅在拥有的用户登录时安装,并在该用户注销时卸载。我为每个用户提供了其中一个,因此任何登录的人都会在其主目录中获得他们的个人挂载。 , UID
,都是隐含的GID
,IdentityFile
但您可以选择添加一行:
Options=umask=0022,uid=%U,gid=%G,IdentityFile=%h/.ssh/id_rsa_backup_server_home
--system
如果您不介意root
拥有一切,您也可以选择在公交车上运行此程序。
我的答案在上面。以下是我尝试直接回答您的问题。我无法确定答案,但如果您不喜欢上面的 systemd 解决方案,我希望这至少能帮助您在排除故障时从不同的方向思考。
我相信mount
可以用作mount.fuse.sshfs
帮手。
$ dpkg -S /usr/sbin/mount.fuse.sshfs
sshfs: /usr/sbin/mount.fuse.sshfs
$ ls -l $_
lrwxrwxrwx 1 root root 12 Jul 7 2021 /usr/sbin/mount.fuse.sshfs -> ../bin/sshfs
这是由sshfs
debian 中的软件包提供的。如果您没有这个助手,您可以创建它并将其链接到/usr/bin/sshfs
.
ln -s /usr/bin/sshfs /usr/local/sbin/mount.fuse.sshfs
我不是这方面的专家/etc/fstab
,但我在阅读时man mount
发现:
程序 mount 和 umount(8) 支持文件系统子类型。子类型由“.subtype”后缀定义。例如“fuse.sshfs”。建议使用子类型表示法,而不是向挂载源添加任何前缀(例如“sshfs#example.com”已弃用)。
弃用可能表明您的行开头存在问题fstab
。您可能正在使用不受支持的标准组合
sshfs#[email protected]:/remote /local fuse ... <-- Deprecated syntax
[email protected]:/remote /local fuse.sshfs ... <-- New syntax
sshfs#[email protected]:/remote /local fuse.sshfs ... <-- Your syntax
最后一个想法是sshfs
港口。在您的 中/etc/fstab
,您定义port=23
为选项之一。在你的sshfs
,你使用-p 23
。如果换成你,会发生什么-o IdentityFile=...,port=23
?