我尝试使用以下行在 /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。