为 Mac OS X 上的本地文件夹安装 SSHFS 以编辑 Ubuntu AWS 实例上的文件
Mounting SSHFS for local folder on Mac OS X to edit files on Ubuntu AWS instance
我希望能够使用一个不错的 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
文件通过 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 \
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
日志级别给出相对相同的结果:
$ 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
关于修复什么/问题可能出在哪里的任何想法?
您是 运行 sudo
下的 sshfs
,这与 运行 sftp
作为您的用户不同,因为 root
找不到您的身份验证密钥:
IdentityFile=~/.ssh/aws.pem
扩展到您的用户 (/home/your-user/.ssh/aws.pem
) 的主目录,但扩展到 sudo
用户 (/root/.ssh/aws.pem
) 的 root
主目录,其中文件显然不是.
使用 PEM 文件的完整路径,例如
IdentityFile=/home/your-user/.ssh/aws.pem`
我希望能够使用一个不错的 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
文件通过 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 \
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
日志级别给出相对相同的结果:
$ 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
关于修复什么/问题可能出在哪里的任何想法?
您是 运行 sudo
下的 sshfs
,这与 运行 sftp
作为您的用户不同,因为 root
找不到您的身份验证密钥:
IdentityFile=~/.ssh/aws.pem
扩展到您的用户 (/home/your-user/.ssh/aws.pem
) 的主目录,但扩展到 sudo
用户 (/root/.ssh/aws.pem
) 的 root
主目录,其中文件显然不是.
使用 PEM 文件的完整路径,例如
IdentityFile=/home/your-user/.ssh/aws.pem`