我用来sshfs
通过 ssh 将包含一些 python 项目的文件夹安装到我的~/
目录中。
$ mkdir -p ~/mount/my-projects
$ sshfs [email protected]:/home/user/my-projects ~/mount/my-projects
我可以按照预期执行大多数命令:
$ ls ~/mount/my-projects
some-python-project
但如果我尝试对 执行任何操作sudo
,则会因权限被拒绝而失败:
$ sudo ls ~/mount/my-projects
ls: cannot access /home/user/mount/my-projects: Permission denied
我实际上想要完成的是在本地计算机上测试 python 包安装脚本:
$ cd ~/mount/my-projects/some-python-project
$ sudo python setup.py install
答案1
我相信您需要使用allow_other
sshfs 选项。为此,您应该使用 sudo 调用它,如下所示:-
sudo sshfs -o allow_other user@myserver:/home/user/myprojects ~/mount/myprojects
如果没有此选项,则只有运行 sshfs 的用户才能访问挂载。这是保险丝限制。输入 可获得更多信息man fuse
。
/etc/fuse.conf
您还应该注意(至少在 Ubuntu 上)您需要成为“fuse”组的成员,否则上面的命令将抱怨在没有“sudo”的情况下运行时无法访问。
答案2
sshfs
是一个用户态进程,因此不需要使用sudo
.
/root/.ssh
如果您确实以 sudo 身份运行它并使用 SSH 密钥身份验证,则将在和下搜索密钥不是在您的用户的/home/myuser/.ssh
.
这同样适用于能够使用的~/.ssh/config
文件。sshfs
如果你有~/.ssh/config
喜欢的:
Host remotehost
HostName 111.22.33.44
User root
Port 1234
IdentityFile ~/.ssh/id_rsa
然后您可以使用以下命令以普通用户身份安装远程主机:
sshfs remotehost: local_dir
要在 root 下运行,您可以附加-o IdentityFile /home/myuser/.ssh/id_rsa
到“raw”命令,或者使用用户 SSH 密钥的完整路径sshfs
来创建:/root/.ssh/config
Host remotehost
HostName 111.22.33.44
User root
Port 1234
IdentityFile /home/myuser/.ssh/id_rsa
现在sshfs remotehost: local_dir
也可以在 root 下工作。
就位后,您可以使用 (远程到本地)或 (本地到远程)
.ssh/config
在主机之间复制整个文件夹,因此对于单个一次性操作,您甚至可能不需要.scp -r remotehost:remotedir localdir
scp -r localdir remotehost:remotedir
sshfs
如果您使用相对远程路径,那么
remotehost:remotedir
将remotedir
相对于用户的主文件夹,即remotehost:remotedir
相当于remotehost:/home/myuser/remotedir
答案3
对我来说解决问题的方法是将选项添加allow_other
到命令中,如下所示:
$ sshfs -o allow_other [email protected]:/home/user/my-projects ~/mount/my-projects
那么你可能会得到错误:
仅当在 /etc/fuse.conf 中设置了“user_allow_other”时才允许使用选项allow_other,以使用您最喜欢的文本编辑器解决该头到/etc/fuse.conf并取消注释(删除后面的#)
user_allow_other
如果这解决了问题并且您可以sshfs
成功运行,那就太好了!如果没有,您应该尝试通过以下命令将您的用户添加到熔断组:
$ sudo usermod -a -G fuse mark
如果导致错误提示保险丝组不存在,您可以通过以下方式轻松创建该组:
$ sudo groupadd fuse