Монтирование SSHFS для локальной папки в Mac OS X для редактирования файлов в экземпляре Ubuntu AWS

Я хочу, чтобы иметь возможность редактировать файлы локально, используя хорошую IDE и файлы на моем локальном компьютере (~/Code/myproject) немедленно получить толчок к машине с Ubuntu в облаке (/home/ubuntu/myproject).

Я установил FUSE и SSHFS для моего ноутбука Mac OS X (локального).

У меня есть экземпляр Ubuntu 16.04 AWS на EC2:

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 флаг (не настроен авторизованный ключ).

Итак, вот что я делаю на локальной машине:

$ 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 ответ

Решение

Вы управляете sshfs под sudo, который имеет значение от запуска sftp как ваш пользователь, потому что 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`
Другие вопросы по тегам