sshfs 总是要求在 fstab 中输入密码?

sshfs 总是要求在 fstab 中输入密码?

我尝试使用以下行在 /etc/fstab 中输入 sshfs 安装:

sshfs#[email protected]:/media/usb0 /media/ExtHD fuse     defaults,nonempty,allow_other 0 0

以便在启动时安装该卷。启动后,没有任何反应,但是当我使用命令 sudo mount -a 时,总是提示我输入密码。我已经设置了 SSH 密钥并将其传输到 192.168.0.2 的计算机上,并且可以无需密码登录到常规 ssh。如何阻止熔断器询问我的密码,以便该卷可以在启动时自动安装?

如果有帮助的话,我正在尝试从运行 Arch Linux 的笔记本电脑连接到运行 Debian 的家庭服务器。谢谢

答案1

仅当进程ssh可以找到您的密钥时,基于密钥的身份验证才能起作用。您的密钥可能在您的主目录中;但你从来没有告诉过sshfs在哪里寻找钥匙。在启动时,它将root挂载所有文件系统,因此密钥必须位于/root/.ssh或在 中引用/root/.ssh/config

我建议您在登录后以您自己的用户身份安装文件系统。将其放入登录时执行的脚本中:

ssh-add ~/.ssh/name_of_key.id_rsa
sshfs homeserver:/media/usb0 ~/exthd

homeserver在您的中输入一个别名~/.ssh/config

Host homeserver
HostName 192.168.0.2
User oli

答案2

我能够以标准用户身份使用以下语法,通过 Ubuntu 14.04 的 fstab 挂载 sshfs(注意 CAPS 中的任何内容都是需要您填写的变量):

USER@HOST:/REMOTE_DIR /LOCAL_DIR fuse.sshfs delay_connect,_netdev,user,idmap=user,transform_symlinks,identityfile=/home/USERNAME/.ssh/id_rsa,allow_other,default_permissions,uid=USER_ID,gid=USER_GID 0 0

这是此处找到的信息的组合https://superuser.com/questions/669287/automount-sshfs-using-fstab-without-mount-a并添加延迟连接从这里https://askubuntu.com/questions/326977/sshfs-is-not-mounting-automatically-at-boot-despite-etc-fstab-configuration

我使用本教程来获取我的 USER_ID 和 USER_GID:https://kb.iu.edu/data/adwf.html

要在 Unix 中查找用户的 UID 或 GID,请使用 id 命令。要查找特定用户的 UID,请在 Unix 提示符下输入:

id -u username

将用户名替换为适当用户的用户名。要查找用户的 GID,请在 Unix 提示符下输入:

id -g username

另外,如果您想要完整的教程,它将发布在https://www.variux.com/sshfs-automount-at-boot-with-fstab-on-ubuntu-14-04/

答案3

我有同样的问题。

ssh-keygen我之前通过然后设置了 ssh 密钥ssh-copy-id -i ~/.ssh/id_rsa.pub [email protected]

ssh 工作得很好,没有要求我输入密码,所以我很困惑为什么 sshfs 仍然需要密码......

也就是说,

ssh [email protected] 

工作正常,但是当我输入时 sshfs 仍然要求输入密码

sudo sshfs [email protected]:/home/raspberry/Videos /home/pi/LinuxMintMountedFolder/ -o allow_other

正如吉尔斯上面所解释的,sshfs正在根目录中查找必要的密钥。

因此,我通过将文件 id_rsa 和 id_rsa.pub 从我的主文件夹的隐藏 .ssh 文件夹复制到根目录的 .ssh 文件夹即解决了这个问题

cp /home/pi/.ssh/id_rsa /root/.ssh/
cp /home/pi/.ssh/id_rsa.pub /root/.ssh/

然后,输入以下内容就可以了,而无需打扰我输入密码:

sudo sshfs [email protected]:/home/raspberry/Videos /home/pi/LinuxMintMountedFolder/ -o allow_other

答案4

实际上,您可以使用password_stdin选项在启动时挂载没有公钥的SSHFS,但不能使用fstab。

您需要的是一个小脚本文件和 cron。

请注意,公钥始终是更好的选择。但有时公钥不起作用(我自己也遇到过几次这个问题)。请注意,脚本文件将包含明文密码。因此,您应该确保只有 root 才拥有此文件的任何权限!

脚本文件可能如下所示(/root/automount.sh):

#!/bin/sh
if [ $(mount | grep 'user@server:/folder' | wc -l) -ne 1 ]
then
    echo 'PASSWORD' | sshfs user@server:/folder /mnt/mountpoint -o password_stdin,allow_other
    echo 'SSHFS has been mounted.'
else
    echo 'SSHFS is already mounted.'
fi

要在启动时运行它,您可以使用 crontab 作为 root 并输入以下行:

@reboot /root/automount.sh

如上所述,您应该确保绝对没有人可以读取该文件,因为它包含纯文本密码!

-rwx------ 1 root root 526 Nov 21 12:57 automount.sh

到目前为止,每次重新启动后,您的系统都会使用凭据自动挂载 SSHFS。

相关内容