2017-06-06 51 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