我正在尝试使用公钥身份验证通过 sshfs 挂载远程文件系统。我收到此错误:execvp: No such file or directory
我可以确认公钥认证可以与 ssh 配合使用:
ssh -i /home/me/.ssh/myKey [email protected]
Last login: Sun Jan 13 21:25:13 2013 from 192.168.1.2
-bash-3.00$
我可以确认 sshfs 正在使用密码验证正确挂载远程目录:
sshfs [email protected]:/remote/dir /local/dir -o ssh_command="ssh"
[email protected]'s password:
[[email protected] .ssh]# df -h
Filesystem Size Used Avail Use% Mounted on
...
sshfs#[email protected]:/remote/dir
1000G 0 1000G 0% /local/dir
(我知道上面的‘-o’不是必需的。我用它来表明找不到ssh
不是失败的原因)但是当我尝试将公钥选项连接到 sshfs 挂载时,如下所示:
sshfs [email protected]:/remote/dir /local/dir -o ssh_command="ssh -i /home/me/.ssh/myKey",sshfs_debug
我得到这个:
execvp: No such file or directory
在控制台上并且目录没有被挂载。
我确认“没有这样的文件或目录”并不是找不到ssh
(我使用了 /usr/bin/ssh 只是为了确定)并且我确认密钥的路径是正确的:
ls -al /home/me/.ssh/myKey
-rw------- 1 nobody root 887 Jan 13 20:36 /home/me/.ssh/myKey
远程主机没有关于失败尝试的任何日志文件条目。
据我所知,我正在按照文档中的方式使用该命令,所以它应该可以工作,对吗?发生此故障的系统正在运行 RHEL5。
有人能解释一下这个问题或给我指明正确的方向吗?我快没有办法解决问题了。
为了保护无辜者,IP 和用户名已被更改。如果我在复制粘贴后出现拼写错误,请见谅。如果发现任何错误,我会修复。
答案1
由于我在 CentOS 上遇到了同样的问题,所以我假设它ssh_command
不会像宣传的那样工作(也意味着它与大多数可以挂接到 SSH 的其他东西(例如 rsync)的工作方式不同)。我开始寻找可以配置 SSH 来设置我需要的选项的方法,而不需要我从命令行向 sshfs 输入输入,然后我找到了有效的组合。
我添加了/etc/ssh/ssh_config
以下几行:
Host remotehost
HostName 192.168.1.1
User user
IdentityFile /home/me/.ssh/myKey
完成此操作后,我不再需要通过 sshfs 向 SSH 提供任何命令行选项,最终得到以下命令:
sshfs user@remotehost:/remote/dir /local/dir
需要注意的是,remotehost
sshfs 命令中的值与 ssh_config 中的密钥定义的值完全相同Host
。
如果有人知道使用命令行选项执行此任务的方法,我仍然会感兴趣,因为我认为它不应该像文档声称的那样需要进行系统范围的配置更改才能使其工作。在那之前,我至少有一个解决方法。我希望这可以帮助其他人避免我花在它上面的时间。
FWIW,第 4 篇此主题是我的灵感来源。第 5 篇文章看起来很有希望避免改变系统范围的配置,但这导致了错误execvp: Permission denied