在Mac OS X上为本地文件夹安装SSHFS以编辑Ubuntu AWS实例

时间:2017-06-06 20:51:56

标签: macos ubuntu ssh fuse sshfs

我希望能够使用漂亮的IDE在本地编辑文件并拥有文件 在我的本地计算机(~/Code/myproject)上立即被推送到云中的Ubuntu计算机(/home/ubuntu/myproject)。

我为我的Mac OS X笔记本电脑(本地)计算机安装了FUSE and SSHFS

我在EC2上有一个Ubuntu 16.04 AWS实例:

ubuntu@ip-xxxxxx:~$ uname -a
Linux ip-xxxxxx 4.4.0-1017-aws #26-Ubuntu SMP Fri Apr 28 19:48:19 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux
ubuntu@ip-xxxxxxx:~$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 16.04.2 LTS
Release:    16.04
Codename:   xenial

我使用.pem文件通过-i标志(没有设置authorized_keys)SSH进入该框。

所以这就是我在本地机器上所做的事情:

$ mount  # check for mounted
/dev/disk1 on / (hfs, local, journaled)
devfs on /dev (devfs, local, nobrowse)
map -hosts on /net (autofs, nosuid, automounted, nobrowse)
map auto_home on /home (autofs, automounted, nobrowse)

$ sudo sshfs -o allow_other,defer_permissions,IdentityFile=~/.ssh/aws.pem,loglevel=debug \
    ubuntu@ec2-xxxxxxxx.compute-1.amazonaws.com:/home/ubuntu/myproject \
    /Users/me/Code/myproject

它提示我输入本地机器密码,然后我看到以下内容:

Password:
remote host has disconnected

显然,有些事情已经发生了:

$ mount
/dev/disk1 on / (hfs, local, journaled)
devfs on /dev (devfs, local, nobrowse)
map -hosts on /net (autofs, nosuid, automounted, nobrowse)
map auto_home on /home (autofs, automounted, nobrowse)
ubuntu@ec2-xxxxxxx.compute-1.amazonaws.com:/home/ubuntu/myproject on /Users/me/Code/myproject (osxfuse, synchronous)

如果我再次尝试相同的sshfs命令(没有unmoun - ting),我会得到一个不同的错误:

mount_osxfuse: mount point /Users/me/Code/myproject is itself on a OSXFUSE volume

我可以卸载并使用sudo diskutil umount force /Users/me/Code/myproject/重试,但是当我再试一次时,我会收到相同的原始错误。

我想也许这是我的远程服务器SFTP的问题所以我找到了远程盒子上的所有sftp-server位置:

$ sudo find / | grep sftp-server
...
/usr/lib/sftp-server
/usr/lib/openssh/sftp-server

然后我在我的/etc/ssh/sshd_config文件中尝试使用以下行:

#Subsystem sftp /usr/lib/openssh/sftp-server
Subsystem sftp /usr/lib/sftp-server

但重启后的配置似乎都不起作用。

我可以使用以下命令进行SFTP:

$ sftp -i ~/.ssh/aws.pem ubuntu@ec2-xxx.compute-1.amazonaws.com
Connected to ec2-xxx.compute-1.amazonaws.com.
sftp>

编辑:运行debug3 loglevel会得到相对相同的结果:

$ sudo sshfs -o allow_other,defer_permissions,IdentityFile=~/.ssh/aws.pem,loglevel=debug3 ubuntu@ec2-xxxx.compute-1.amazonaws.com:/home/ubuntu/myproject /Users/me/Code/myproject
sudo: cannot get working directory
The authenticity of host 'ec2-xxx.compute-1.amazonaws.com (xx.xx.xx.xx)' can't be established.
ECDSA key fingerprint is SHA256:xxxxxxxxxxxxxxx.
Are you sure you want to continue connecting (yes/no)? yes
remote host has disconnected

关于修复什么/问题在哪里的任何想法?

1 个答案:

答案 0 :(得分:2)

您正在sshfs下运行sudo,这与您的用户运行sftp不同,因为root无法找到您的身份验证密钥:< / p>

IdentityFile=~/.ssh/aws.pem

扩展到您的用户的主目录(/home/your-user/.ssh/aws.pem),但扩展到root用户sudo的主目录,其中文件显然不是。< / p>

使用PEM文件的完整路径,例如

/root/.ssh/aws.pem