我正在使用带有密码保护密钥对的 sshfs 来通过 shell 脚本挂载远程文件夹。我也在该脚本中使用了 ssh。
每次启动 shell 脚本时,我都会在命令行上收到每个 sshfs 调用的密码请求。我需要防止这种情况发生。
有没有办法将 sshfs 与 ssh-agent 和/或 kwallet 一起使用(就像我对 ssh 所做的那样)?或者我可以将现有的 ssh 连接与 sshfs 重用?
答案1
您是sshfs
从 shell 开始,还是从启动时脚本开始?
如果你从 shell 启动它,并且你有一个正在运行的 ssh-agent,它应该就可以工作:
$ ssh-add -l
2048 SHA256:XXXXX /home/ji/.ssh/id_rsa (RSA)
$ echo success > foo
$ scp foo ins:
...
$ rm foo
$ mkdir /tmp/j
$ sshfs ins: /tmp/j
$ cat /tmp/j/foo
success
如果您从环境中尚未有 SSH_AUTH_SOCK 的位置启动它,并且假设 ssh-agent 已经处于活动状态并具有密钥,则只需将 SSH_AUTH_SOCK 设置为正确的值,您可以通过运行ps uxeww | grep SSH_AUTH_SOCK
和处理输出来获取该值,或者只需查看/tmp/ssh-*/*
您可以访问的任何套接字并使用它!我假设您可以编写一个简单的 shell 脚本来执行此操作!
答案2
- 取消注释(或添加行)
user_allow_other
/etc/fuse.conf - 不使用 sudo 运行 mount
sshfs 在前台运行,我对此很满意。不想留下远程挂载,以免在生产系统中发生潜在事故。