使用 fstab 自动挂载 sshfs,使用密码保护的私钥

问题描述 投票:0回答:3

我使用

ssh server
连接到我的家庭服务器,其中服务器在
~/.ssh/config
中配置为:

Host server
    HostName {server-address}
    User me
    IdentityFile ~/.ssh/id_rsa

IdentityFile
是受密码保护的私钥,所以我每次登录都必须输入密码。

我可以使用

sshfs me@{server-address}:/home/me /mnt/server
在该服务器上本地安装远程文件系统。再次,我必须输入密码才能使用私钥登录。我注意到我不需要在
sshfs
选项中实际指定密钥 - 大概
~/.ssh/id_rsa
只是默认位置?

最后,为了轻松安装系统,我将以下行添加到

/etc/fstab

me@{server-address}:/home/me  /mnt/server  fuse.sshfs  IdentityFile=/home/me/.ssh/id_rsa,defaults,noauto 0 0

这让我只需运行

mount /mnt/server
即可挂载文件系统 - 当然,我会被要求输入密码。

请注意,我添加了

noauto
选项,以便它不会在启动时安装,因为我担心如果没有密码短语无法安装文件系统,系统会挂起。

我的怀疑就在这里吗?如果系统尝试挂载服务器文件系统但未获得密码,系统是否会无法启动?有没有办法可以向

/etc/fstab
/
mount
命令提供密码,以便它能够在启动时启动文件系统?

linux private-key sshfs fstab
3个回答
0
投票

我不知道这个“解决方案”是否值得回答,但这是我解决它的方法:

我只是使用

ssh-keygen
生成另一个密钥(即
/home/user/.ssh/id_rsa_no_passphrase
),并且没有给该密钥提供密码。然后我使用
ssh-copy-id
将其上传到我的远程服务器。
更改我的 fstab 条目以引用
IdentityFile
字段中的新公钥后,它工作完美,现在在启动时自动挂载文件系统。

这是最终的 fstab 条目:

# sshfs
USER@SERVER:/home/sshfs /mnt/ssh    fuse.sshfs  defaults,_netdev,allow_other,default_permissions,identityfile=/home/USER/.ssh/id_rsa_no_passphrase,uid=UID,gid=GID    0   0

这可能不是问题的确切解决方案,但它似乎是一个有效的解决方法!


0
投票

在 ubuntu 20.04 服务器中,这对我有用(一步一步)

安装sshfs

sudo apt-get update
sudo apt-get install sshfs

我创建了密钥对(没有密码),并将其复制到远程服务器

ssh-keygen
ssh-copy-id REMOTE_USER@REMOTE_SERVER

在 /etc/fstab 中添加此行(感谢@Sealad),替换全部大写

REMOTE_USER@REMOTE_SERVER:/home/me  /mnt/server    fuse.sshfs  defaults,_netdev,allow_other,default_permissions,identityfile=/home/USER/.ssh/id_rsa,uid=UID,gid=GID    0   0

用它来获取UID和GID

id -u USER
id -g USER

并且只执行一次(它应该要求您输入远程密码)

sudo mount -a

重新启动系统以检查


-1
投票

我想给出这个问题唯一答案的替代方案。可以从现有私钥中删除密码,而不是创建新的密钥对(这次不保护私钥)。

就做

$ ssh-keygen -p
。删除密码后,fstab 中的 sshfs 可以完美运行。

我最终的 sshfs fstab 是这样的 USER@SERVER:/文件夹/mnt/sshfsmount fusion.sshfs noauto,x-systemd.automount,_netdev,allow_other,IdentityFile=/home/USER/.ssh/id_rsa,重新连接,follow_symlinks 0 0

© www.soinside.com 2019 - 2024. All rights reserved.