我正在尝试从我的 Mavericks Mac 上的远程 Ubuntu 计算机自动挂载目录。SSHFS 在以多种不同方式手动安装时可以完美运行。标准 sshfs 挂载效果很好:
sshfs user@desk:/home/user desk
Run Code Online (Sandbox Code Playgroud)
我什至可以使用mount:
sudo mount -t sshfs -o allow_other,IdentityFile=/Users/user/.ssh/nopass_id_dsa user@192.168.1.2:/home/user desk
Run Code Online (Sandbox Code Playgroud)
(我按照OSXFuse自动安装说明进行设置mount_sshfs)
我想把它变成自动挂载。OSXFuse推荐的最简单的方法是将上面的mount命令变成一个/etc/fstab条目:
user@192.168.1.2:/home/user /Network/desk sshfs allow_other,IdentityFile=/Users/user/.ssh/nopass_id_dsa 0 0
Run Code Online (Sandbox Code Playgroud)
但这不起作用:
Network $ sudo mount desk
mount: desk: unknown special file or file system.
Run Code Online (Sandbox Code Playgroud)
同样,如果我这样做,sudo automount -vc那么当我尝试输入挂载点时,我要么会遇到很长的超时,要么会出现无用的“不允许操作”错误,具体取决于我如何处理 fstab 选项的格式。当我尝试设置自动挂载映射时,我遇到了相同的错误,如此处所述。
我的 fstab 条目有什么问题?或者,我还能如何在 OSX 上自动挂载 sshfs?
(我在 10.9.5 上使用自制程序的 sshfs 2.5.0)
我有两台 Linux 主机(都运行 Ubuntu 10.04),我希望其中一台能够访问另一台的部分文件系统。即我希望remote1能够访问remote2的文件:/home/username
这只是为了允许我以读写方式访问另一台计算机上的主目录,并且其他用户不需要也能够访问它。
每个主机上使用的“用户名”ID 都不同,原因我不会详细说明(同样,ADS 等)。
我尝试过 Samba,但发现它不可靠。例如,我有一个程序可以监视目录并更新大约 12,000 个文件的列表。我发现这个列表不断变化,文件丢失,有些文件随机无法读取。太不靠谱了。
我在remote1上有一些运行良好的东西:
sshfs remote2:/home/username ~/remote2 -o idmap=user -o uid=$(id -u) -o gid=$(id -g)
Run Code Online (Sandbox Code Playgroud)
这在一段时间内非常有效。不幸的是,remote1 是一台笔记本电脑,并且经常与 LAN 断开连接。当安装这个 sshfs 文件系统时,这似乎完全破坏了一切,并且通常需要重新启动才能恢复。
我开始研究 NFS,但几年前我遇到了有关用户 ID 映射的问题。当时,我发现有一个用户空间 NFS 服务器可以处理这个问题,但它有很多自己的问题。但那是 NFSv3。NFSv4“内核服务器”可以处理不同的用户 ID 并在它们之间正确映射吗?我真的不想使用 NIS,而且实际上我也无法更改用户 ID——它们是通过外部方式设置的。
另外,NFS 如何处理“不可靠”的网络连接?它会自动重新连接还是共享会被破坏,直到重新安装为止?
像 CIFS 这样的东西怎么样?这可以应对经常出现的、不可预测的网络故障吗?这可能会遇到与 Samba 相同的问题,但如果合适的话值得一试。
我还应该考虑其他选择吗?
我无法输入我的 sshfs,但我确定连接正常并且目标存在。每个文件操作都失败并显示Input/output error.
sshfs 输出:
$ sshfs -p 7292 server:/in/vm/dir ~/vm_dir -d
FUSE library version: 2.9.2
nullpath_ok: 0
nopath: 0
utime_omit_ok: 0
unique: 1, opcode: INIT (26), nodeid: 0, insize: 56, pid: 0
INIT: 7.20
flags=0x000017fb
max_readahead=0x00020000
INIT: 7.19
flags=0x00000011
max_readahead=0x00020000
max_write=0x00020000
max_background=0
congestion_threshold=0
unique: 1, success, outsize: 40
unique: 2, opcode: GETATTR (3), nodeid: 1, insize: 56, pid: 2287
getattr /
unique: 3, opcode: OPENDIR (27), nodeid: 1, insize: 48, pid: 21063
unique: 3, success, outsize: 32 …Run Code Online (Sandbox Code Playgroud) 我的情况:
ControlMaster auto在我的~/.ssh/config文件中进行了设置,因此我不会遇到身份验证延迟我已经开始使用autofs来简化我的工作,但是autofs想要以 root 身份运行它的所有挂载命令。当然,我可以以 root 身份生成一个新的 RSA 密钥对并将其导出,并将我自己的~/.ssh/config选项复制到超级用户的配置文件中,但我不想保留这些东西的两个副本,这并不能解决我的愿望每个主机只有一个打开的 SSH 连接。因此,我想让autofssshfs以非特权用户身份运行,就像在终端手动调用时一样。
我已经研究过autofs脚本,但这些脚本似乎不能解决我的问题。有什么建议?
有一个远程服务器,我每天都通过 ssh 连接到它。我在服务器上编辑了很多文件,所以我sshfs经常这样做。
我用$ sshfs user@host:/var/www/html ~/sshfs/html. 这在过去几个月中运作良好,即使现在也应该有效。但是,我遇到了一些奇怪的不一致的访问问题。
案例 1 - Sublime Text:我完全无法使用我选择的编辑器(Sublime Text)保存任何内容。我不能另存为来创建一个新文件~/sshfs/html/。我可以打开文件,但不能保存。
尝试保存时,Sublime 在警告框中显示以下消息:
Unable to save ~/sshfs/html/foo
Error: rename(/home/ben/sshfs/html/.subl219.tmp, /home/ben/sshfs/html/foo) failed
errno: 1
Run Code Online (Sandbox Code Playgroud)
案例 2 - Kate:我尝试在 Kate 中打开东西,看看 Sublime 是否只是愚蠢。我仍然无法编辑现有文件,但我可以在 Kate 中创建新文件而不会出现问题。
尝试保存编辑时,Kate 在警告框中给出以下消息:
The document could not be saved, as it was not possible to write to /home/ben/sshfs/html/foo.
Check that you have write access to this file or that enough disk …Run Code Online (Sandbox Code Playgroud) 我正在运行 Max OSX 10.9.3 并且我正在尝试在我的 MacBook Pro 和远程文件系统之间设置 SSHFS 文件共享。但是,当我尝试这样做时,它不起作用。
奇怪的是,它使目标目录消失。有没有其他人看到这种情况发生?这是一个错误吗?
首先看到我可以正常ssh进入目标机器:
% ssh remoteuser@XXX.XXX.XXX.XXX # <--- SSH to remote system works! See below.
remoteuser@XXX.XXX.XXX.XXX % ls -altr remoteDir
total 8
drwxr-xr-x 26 remoteuser remoteuser 4096 Jun 22 01:00 ..
drwxrwxrwx 2 remoteuser remoteuser 4096 Jun 22 01:08 .
remoteuser@XXX.XXX.XXX.XXX % exit
% # <--- Logged out of remote system
Run Code Online (Sandbox Code Playgroud)
接下来,我在本地创建一个目录并验证它是否已创建:
% pwd
/mnt
% ls
total 0
drwxr-xr-x 31 root admin 1122 Jun 18 18:34 ../
drwxr-xr-x 2 root …Run Code Online (Sandbox Code Playgroud) 我有一个 Makefile,其中包含一个sshfs命令,后跟一个cd命令:
mr: # mount-remote
sshfs -p 5022 -o nonempty myname@myssh.serveur.fr:mnt /home/julien/myworking_path
cd ./working_directory_mwe1/wk_subd_mwe2/
Run Code Online (Sandbox Code Playgroud)
第一个命令 sshfs 就像一个魅力一样,可以正确安装两个端点。但是,cd 命令不会更改目录。然后我必须手动重新输入。如果我手动输入,它就可以工作,但我希望在输入命令时完成mr。
我尝试了以下操作,但记住这可能是因为我在执行时连接了终端 2 秒,sshfs但这也不起作用。我尝试cd每秒重新运行一次,直到它起作用。
mr: # mount-remote
sshfs -p 5022 -o nonempty myname@myssh.serveur.fr:mnt /home/julien/myworking_path
until cd ./working_directory_mwe1/wk_subd_mwe2/ ; do sleep 1 ; done
Run Code Online (Sandbox Code Playgroud)
感谢您的热心帮助 :)
编辑:我忘记指定我尝试的最小工作目录cd正是端点处的目录,实际上,我意识到我的目标是:
mr: # mount-remote
sshfs -p 5022 -o nonempty myname@myssh.serveur.fr:mnt /home/julien/myworking_path
cd /home/julien/myworking_path/some_sub_dir1/som_sub_dir2
Run Code Online (Sandbox Code Playgroud) 如何使用sshfs的cygwin?直接方式不起作用:
$ apt-cyg install sshfs
Installing sshfs
Unable to locate package sshfs
Run Code Online (Sandbox Code Playgroud) 我正在运行 3 个 http 服务器,但没有什么特别之处。它只是通过 SSHFS 共享目录的 apache,查看 RAM 的使用情况,我可以看到 portmap 使用了相当多的 RAM/CPU,但我不知道它在做什么。
init-+-acpid
|-apache2---431*[apache2---{apache2}]
|-atd
|-cron---cron---sh---php---{php}
|-dbus-daemon
|-6*[getty]
|-memcached---5*[{memcached}]
|-newrelic-daemon---newrelic-daemon---11*[{newrelic-daemo}]
|-nrsysmond---nrsysmond---{nrsysmond}
|-portmap
|-rpc.statd
|-rsyslogd---3*[{rsyslogd}]
|-searchd---searchd---2*[{searchd}]
|-sshd-+-6*[sshd---sshd---sh---sftp-server]
| `-sshd---sshd---bash---pstree
|-udevd---2*[udevd]
`-zabbix_agentd---2*[zabbix_agentd]
Run Code Online (Sandbox Code Playgroud)
你认为我可以安全地停止/清除它吗?
这不起作用:
$ touch testfile
$ chmod 777 testfile
$ ls -l testfile
-rwxrwxrwx 1 quinn dialout 0 Apr 18 10:15 testfile
$ ./testfile
-bash: ./testfile: Permission denied
$ sudo ./testfile
sudo: unable to execute ./testfile: Permission denied
Run Code Online (Sandbox Code Playgroud)
我正在通过我的 fstab 中的这一行进行安装:
sshfs#127.0.0.1:/remote-dir /data/local-dir fuse port=2222,user,uid=1000,allow_other 0 0
Run Code Online (Sandbox Code Playgroud)
注意:我通过端口 2222 连接到本地主机,因为我使用的是隧道。
我试图在本地挂载一个 SSHFS 目录,失败了,现在我不能再使用我原来的目录了。
按照教程,我刚刚安装了sshfs软件包,执行了sudo modprobe fuse,然后创建了一个本地目录remote,我想在其中挂载远程目录。
然后我sshfs -o idmap=user "myuser@<host>:/home/myuser" remote按照教程中的说明运行了 ,但是我的连接速度很慢,所以我按了 Ctrl+C。
现在,如果我ls在其父目录上执行此操作,则会获得此条目(例如,我也保留了下一个条目):
...
d????????? ? ? ? ? ? remote
drwxr-xr-x 2 myuser myuser 4096 Mar 13 11:02 Videos
...
Run Code Online (Sandbox Code Playgroud)
如果我尝试cd remote,我会得到:
cd: transport endpoint is not connected: remote
尝试删除目录不成功:
rmdir: failed to remove ‘remote’: Device or resource busy
我怎样才能摆脱这个目录,最好不必重新启动?
我正在尝试使用 sshfs 在来自 Ubuntu 16.04 的 AWS 实例上挂载目录。
我正在使用的命令:
sshfs -o IdentityFile=keyfile.pem ec2-user@ecX-X-X-X.us-west-1.compute.amazonaws.com:/var/www sshfs/
Run Code Online (Sandbox Code Playgroud)
结果(使用 -o sshfs_debug)
SSHFS version 2.5
read: Connection reset by peer
Run Code Online (Sandbox Code Playgroud)
/var/log/secure 尝试连接后 AWS 实例上的条目:
May 10 00:00:33 ip-X-X-X-X sshd[19114]: Connection closed by X.X.X.X [preauth]
Run Code Online (Sandbox Code Playgroud)
我使用我个人运行的不同 VPS 进行了测试,我能够很好地使用 sshfs,并且我在此服务器中定期使用 ssh 没有任何问题。
该实例是使用创建的 amzn-ami-hvm-2015.09.0.x86_64-gp2 (ami-cd3aff89)