2017-06-06 29 views
3

我希望能够使用漂亮的IDE在本地编辑文件,并使本地计算机上的文件 立即被推送到Ubuntu云中的机器(/home/ubuntu/myproject)。在Mac OS X上安装用于本地文件夹的SSHFS以在Ubuntu上编辑文件AWS实例

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

我在EC2上使用Ubuntu 16.04 AWS实例:

[email protected]:~$ 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 
[email protected]:~$ lsb_release -a 
No LSB modules are available. 
Distributor ID: Ubuntu 
Description: Ubuntu 16.04.2 LTS 
Release: 16.04 
Codename: xenial 

我使用.pem文件通过SSH与-i标志箱(还没有建立的authorized_keys)。

因此,这里是我的本地机器上做:

$ 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 \ 
    [email protected]:/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) 
[email protected]:/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 [email protected] 
Connected to ec2-xxx.compute-1.amazonaws.com. 
sftp> 

编辑:运行debug3日志级别给出相对相同的结果:在什么来解决/在哪里这个问题可以

$ sudo sshfs -o allow_other,defer_permissions,IdentityFile=~/.ssh/aws.pem,loglevel=debug3 [email protected]:/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 

任何想法是?

+0

你可以与服务器上的'sftp'连接? – Jakuje

+0

是的,我可以。因此,sftp服务器正在运行 – lollercoaster

+0

试着用'loglevel = debug3'试一试并发布输出。 – Jakuje

回答

1

您正在运行sshfssudo下,这使得从运行sftp为用户的差异,becuause的root找不到自己的认证密钥:

IdentityFile=~/.ssh/aws.pem 

扩展到你的主目录为用户( /home/your-user/.ssh/aws.pem),而是root家里的sudo用户(/root/.ssh/aws.pem),其中文件显然不是。

使用完整路径PEM文件,如

IdentityFile=/home/your-user/.ssh/aws.pem` 
+0

哇!这工作!非常感谢。很好赶... – lollercoaster

+0

顺便说一下,是'sudo diskutil umount force/Users/me/Code/myproject'是卸载的最佳方式吗? – lollercoaster

+0

根据https://github.com/libfuse/sshfs/'umount mountpoint'应该完成这项工作(当然,如果你使用'sudo'安装''sudo'')。 – Jakuje