Подключение сетевого диска ssh windows

Время на прочтение
6 мин

Количество просмотров 16K

Я ленивый и потому люблю когда все организовано удобно, без лишних телодвижений. Иногда перебарываю лень, для того чтобы сделать удобно.

Однажды потребовалось мне организовать доступ к серверу по протоколу SMB и в поиске решения я наткнулся на следующую статью: Mounting your Nikhef home directory using SSH for Windows 8. Это было простое и удобное решение, которое использовало Putty. Чуть позже мне пришлось настраивать это решение на другом компьютере и я понял, что Putty тут лишний с тех пор как в Windows 10 появился встроенный ssh-клиент на основе OpenSSH.

Под катом — идентичная схема, только с использованием OpenSSH под Windows 10.

У меня схема организована следующим образом:

  1. На сервере запущена Samba, от имени пользователя www-data расшарена корневая папка с сайтами. Доступ к серверу только через ssh с авторизацией по ключу. Сервер за NATом, порт проброшен только для ssh.
  2. В процессе входа в аккаунт на домашней машине на Windows 10 через встроенный в систему OpenSSH устанавливается соединение с сервером с авторизацией по ключу.
  3. Туннелируется порт 445 удаленной машины на локальный порт 44445 сетевого loopback-адаптера доступного по адресу 10.255.255.1
  4. На loopback-адаптере 10.255.255.1 порт 44445 проксируется на локальный 445. Таким образом при подключении к \\10.255.255.1\ открывается удаленная шара с файлами (которая, при необходимости монтируется как сетевой диск).

Всё это автоматом – лень торжествует. Безопасно, быстро и нативно выглядит. Любым редактором могу открывать и править файлы на удаленном сервере как у себя на локальном — без проблем с загрузкой правленых файлов и установкой им необходимых разрешений. При этом нет проблем с безопасностью Samba.

Итак – сперва по шагам:

На стороне WINDOWS

Должен быть установлены OpenSSH. В Windows 10 и Windows Server 2019 появился встроенный SSH клиент на основе OpenSSH. Им мы и воспользуемся. Сначала убедимся что он установлен – наберем в командной строке

ssh

Если видим исполнение команды — все «Ок», клиент присутствует в системе.

Шаг 1. Настройка сетевого адаптера

Устанавливаем loopback-адаптер в системе. Мы будем обращаться по адресу к локальному адаптеру.

hdwwiz.exe

Запустится «Мастер установки оборудования» (Здесь я пользуюсь русской Windows 10 Pro).

«Далее» -> «Установка оборудования, выбранного из списка вручную» -> «Сетевые адаптеры» -> «Microsoft –> Адаптер замыкания на себя Microsoft KM-Test» -> «Далее»

Уверен, что эти шаги можно сделать из командной строки, но не нашел способ установки драйвера без devcon.exe, потому и не стал заморачиваться с автоматизацией этого шага.

Далее уже в CMD (от имени Администратора).

netsh interface show interface

Видим появился второй адаптер. У меня он называется Ethernet 2.

Теперь настроим адрес для этого адаптера

Или из командной строки:

netsh interface ip set address name="Ethernet 2" source=static address=10.255.255.1 mask=255.255.255.0

В результате у нас появился адаптер локально доступный по адресу 10.255.255.1

Теперь проблема в том, что нам необходимо получить доступ к общей папке через TCP-порт 445, но при загрузке Windows этот порт захватывается системным драйвером lanmanserver для всех интерфейсов. Отложив запуск драйвера lanmanserver и установив правило portproxy, мы можем обойти это.

Далее в командной строке от имени администратора меняем режим запуска сетевых служб (пробел после «start=» обязателен!!!):

sc config lanmanserver start= demand
sc config iphlpsvc start= auto

и настраиваем для адаптера с адресом 10.255.255.1 проксирование порта 44445 на локальный порт 445

netsh interface portproxy add v4tov4 listenaddress=10.255.255.1 listenport=445 connectaddress=10.255.255.1 connectport=44445

Теперь необходимо перезагрузиться, чтобы схема перехвата порта у службы lanmanserver сработала.

Проверяем что прослушивание порта осуществляется нашим loopback-адаптером, просмотрев открытые в системе порты

netstat -an | find ":445 "

Если мы видим

TCP    10.255.255.1:445    0.0.0.0:0       LISTENING

значит все в порядке и порт прослушивается на нужном адресе. Если же мы видим «0.0.0.0:445» — значит в нашей схеме что-то не сработало правильно. Проверить правила переадресации портов можно командой

netsh interface portproxy show v4tov4

Шаг 2. Ключ и рабочий скрипт

Создаем папку для вспомогательных файлов. Встроим, так сказать в систему наш способ.

mkdir %APPDATA%\CIFSoverSSH
cd %APPDATA%\CIFSoverSSH

Генерируем ключ для ssh-авторизации (назовем его, например: cifsoversshkey)

ssh-keygen -t rsa -N "" -f cifsoversshkey 

В результате будет сгенерирована пара открытого и закрытого ключа. Для того, чтобы OpenSSH не выдавал сообщение UNPROTECTED PRIVATE KEY FILE! нужно изменить права на файл ключа. Задачу мы будем запускать для одного пользователя, от имени которого мы собираемся работать в Windows. Можно через GUI, но мне показалось что картинок уже достаточно. В Windows это сделаем следующей командой:

icacls cifsoversshkey /RESET
icacls cifsoversshkey /grant Имя_Пользователя:F /inheritance:r

В результате текущий пользователь будет назначен владельцем, отключено наследование и удалены унаследованные права. Проверить мы это сможем командой

icacls cifsoversshkey 

Должны быть права только для текущего пользователя, иначе файл ключа не будет принят программой OpenSSH и соединение не будет подниматься!

Создадим в текущей папке пакетный файл cifsoverssh.cmd следующего содержания:

call cmd /c start "" /B C:\Windows\System32\OpenSSH\ssh.exe user@111.111.111.111 -p remoteport -i %APPDATA%\CIFSoverSSH\cifsoversshkey -L 10.255.255.1:44445:localhost:445 -N -o "StrictHostKeyChecking=no"

Где:
user@111.111.111.111пользователь на стороне linux сервера @ адрес удаленного сервера

Шаг 3. Ярлык или задача в планировщике

Создаем ярлык для следующей команды: powershell -nologo -noninteractive -windowStyle hidden -command «%APPDATA%\CIFSoverSSH\cifsoversshkey.cmd»
Это позволит запускать наш пакетный файл через powershell без открытия окна. Если запускать его через CMD будет открываться черное окно терминала и будет висеть все время, пока соединение будет установлено, а это неудобно и некрасиво.

Для автоматизации запуска при входе в систему можно создать задачу в планировщике:

schtasks /CREATE /RU %username% /TN "CIFS over SSH" /TR "powershell.exe -nologo -noninteractive -windowStyle hidden -command %APPDATA%\CIFSoverSSH\cifsoversshkey.cmd" /SC ONLOGON /DELAY 0000:10 /IT /RL highest

На стороне клиентского компьютера Windows все приготовления были закончены.

Настройка Linux сервера

Предполагается, что ssh-сервер был предварительно настроен и включена авторизация по ключу.

Подключаемся по ssh из командной строки на windows-машине

C:\Windows\System32\OpenSSH\ssh.exe user@111.111.111.111 -p remoteport

В домашней папке пользователя, от имени которого мы будем авторизовываться при создании туннеля ищем файл ~/.ssh/authorized_keys (если файл отсутствует – создадим его).

mkdir ~/.ssh && touch ~/.ssh/authorized_keys

Теперь необходимо в этот файл вставить содержимое нашего файла публичного ключа, созданного на нашей windows-машине (файл %APPDATA%\CIFSoverSSH\cifsoversshkey.pub). Откроем его в любом редакторе и вставим цепочку ключа с новой строки. Если есть другие ключи, просто вставим его с новой строки.

Устанавливаем Samba (на примере Debian)

apt update && apt install samba

Переименовываем старый файл настроек и создаем новый файл

mv /etc/samba/smb.conf /etc/samba/smb.conf.old
touch /etc/samba/smb.conf

Открываем пустой файл настроек и приводим его к следующему виду:

[global]
realm = webserver
server string = Web server
workgroup = WORKGROUP
# Setup charsets
dos charset = cp1251
unix charset = utf8
# Disable printers
load printers = No
show add printer wizard = no
printcap name = /dev/null
disable spoolss = yes
# Setup logging
log file = /var/log/smbd.log
max log size = 50
max xmit = 65536
debug level = 1
# Setup daemon settings
domain master = No
preferred master = Yes
socket options = IPTOS_LOWDELAY TCP_NODELAY SO_SNDBUF=65536 SO_RCVBUF=65536 SO_KEEPALIVE
os level = 65
use sendfile = Yes
dns proxy = No
dont descend = /proc,/dev,/etc
deadtime = 15
# Enable symlinks
unix extensions = No
wide links = yes
follow symlinks = yes

# Securtity settings
security = user
map to guest = Bad Password
guest account = nobody
create mask = 0664
directory mask = 0775
hide dot files = yes
client min protocol = SMB2
client max protocol = SMB3
[ShareName]
comment = Sites folder
path = /home/web
force user = www-data
force group = www-data
read only = No
guest ok = Yes
writable = yes
create mask = 0664
directory mask = 2775

В последней секции мы настраиваем непосредственно шару. В названии секции указываем имя шары ShareName. Path = путь к файлам, которые мы хотим расшарить. В параметрах force user и force group указываем linux-пользователя, от имени которого будут сохраняться файлы при изменении и создании в шаре. Так как у меня там лежат файлы для веб-сервера – у меня пользователь www-data

Перезапускаем Samba

systemctl restart smbd

Отключаемся и выходим в командную строку Windows

exit

Всё готово. Теперь остается только запустить наш ярлык или выйти из профиля пользователя windows и снова войти (если вы создали задачу в планировщике).

После этого ваша удаленная шара будет доступна по адресу \\10.255.255.1\ShareName — Можно даже монтировать её как сетевой диск.

SSHFS на Windows 10 для монтирования папки из Linux Debian 10

Сегодня расскажу как смонтировать папку (например, с сайтами) из Debian в Windows 10 по SSH (SFTP) с удобным включением/выключением. Под нужным пользователем (www-data) с нужными правами.

Ниже длинное вступление о том как и зачем мне это нужно. Его можно промотать.

Те кто читал мои посты в блоге и видел видосики на канале знают что в основном я занимаюсь разработкой своих сайтов на WordPress, Yii, Laravel. Основной инструмент — PhpStorm. Боевые проекты хостятся на разных вдсках в основном это FastVPS и RuWEB. Везде Debian + Nginx и везде более менее стандартный конфиг (с поправкой на версии и нагрузку кажого из проектов). Всего порядка десяка вдсок.

Разработка и бэкапы на локальной машине под Windows 10, где крутится усредненный аналог боевой конфиги в VirtualBox. Т.е. дев сервер сейчас это Debian 10 + Nginx 1.15.

Разработка и деплой на rsync

Со всех вдсок sh скрипт с помощью

ssh + rsync + mysqldump  собирает текущие версии проектов и в итоге на дев инстансте всегда актуальные данные любого из проектов. На деве ведется разработка, тестирование, минификация, обфускация и т.д.После чего тем же скриптом изменения деплоятся на прод, на конкретную вдску. Git используется только на деве.

Я знаю про Docker :)

Эта схема не тренд, а мой личный велосипед. Логичнее было все это хозяйство контейнезировать и деплоить через гит. Однако некоторые проекты контейнезировать без потерь крайне сложно, а городить разные инфраструктуры при работе в одни руки не эффективно. Мой велосипед вполне успешно работает уже много лет, но есть одна проблема, над которой я бьюсь столько же лет сколько велосипед существует.

Проблема на самом деле в PhpStorm

SSHFS на Windows 10 для монтирования папки из Linux Debian 10

В PhpStorm когда вы создаете проект из ранее созданных файлов ( Create New Project from Existing Files ) у вас есть по сути два выбора — файлы проекта расположены локально или удаленно. Если создать проект из удаленных файлов, то PhpStorm будет скачивать их все на локальный диск для индексации. А при изменении закачивать их обратно на удаленный сервер (например по SFTP). Это не проблема, когда разработка идет на одном компьютере.

Разработка на разных компах, в разных сетях

Однако я работаю сразу на 3х — стационарный десктоп под Windows 10, два ноутбука. Один ноут используется дома (нравится мне менять места и позы во время работы), второй используется реже — вне дома. И в этом случае возникает сложность синхронизации локальных проектов одного и того же удаленного проекта. Особенно если это проекты с множеством мелких файлов. Например Laravel c Laravel Mix. Короче жуткая головная боль.

Монтирование папки из Debian все бы решило

Куда проще если бы можно было подмонтировать удаленную папку сайта и создавать проект в PhpStorm как с локальными файлами. В Ubuntu это делается элементарно, а вот под виндой все на порядок сложнее.

Вариант с Samba

В принципе дома у меня работала схема с Samba сервером на дев виртуалке под юзером www-data. Но если работать с дев сервером с улицы (через проброс портов через роутер) и если домашний ip динамический, то возникает несколько сложностей — нужно каждый раз менять ip, пробрасывать порт в роутере ещё и на самбу (лишняя уязвимость), перемонтировать диски. Короче хотелось так чтобы как в Ubuntu. И выход нашелся.

Монтирование папки из Linux (Debian) в Windows по SFTP

Для монтирования папки из Linux в Window 10 по SFTP я использую связку billziss-gh/winfsp  + billziss-gh/sshfs-win . WinFSP — это порт https://github.com/libfuse/sshfs под винду. А sshfs — это как раз та сетевая файловая система что используется в Ubuntu для монтирования по SFTP. Как я и хотел.

Итак ставим сначала WinFSP, затем SSHFS-Win. Сразу после перезагрузки диски папки можно будет легко монтировать прямо из проводника Windows 10. См. картинку.

Монтирование папки через проводник в SSHFS-Win

Монтирование папки через проводник в SSHFS-Win

Однако в моем случае это не решило проблему.

Нестандартные порты SSH при монтировании

При монтировании папки через проводник вы можете указать путь до папки на сервере, но не можете указать порт SSH, если ssh висит не на 22. Это можно сделать в командной строке

net use Z: \\sshfs\[LOCUSER=]REMUSER@HOST[!PORT][\PATH]

Но тогда:

  • проводник, а соотв. и PhpStorm не увидит примонтированный диск
  • логин/пароль придется вводить каждый раз.

Есть ощущение что это все можно решить если глубоко погрязнуть в скрипты настройки SSHFS-Win, однако здесь есть и два GUI это SiriKali и SSHFS-Win-Manager  .

SiriKali мне жутко не понравился, а вот SSHFS-Win-Manager прижился. Собственно его использование решает почти все проблемы для монтирования дисков из Linux в Windows 10 по SFTP. Я напишу о его настройке чуть ниже. Однако в моем случае просто монтирования было не достаточно.

SSHFS-Win проблемы с юзером и правами на новые папки и файлы

Я ведь все эту чехарду устроил ради разработки и мне нужно чтобы работа на подмонтированном диске была из под юзера

wwwdata  юзер www-data по умолчанию не имеет доступа к консоли и под ним нельзя примонтировать диск. Также SSHFS-Win создает НОВЫЕ папки и файлы с правами 0700 (для уже созданных не меняет), а мне надо чтобы было 0755 на папки и 0644 на файлы.

Разрешаю монтирование под www-data

Это самое сомнительное решение. Во всей этой схеме. Однако для виртуалки за роутером я решил что сойдет.

sudo passwd wwwdata # задаем пароль для www-data

И в файле

/etc/passwd правлю строку:

wwwdata:x:33:33:wwwdata:/home:/bin/bash

Обрати внимание что я сменил и папку юзера на ту, которую буду монтировать. Перезагружаю виртуалку и все — под www-data можно логиниться и монтировать диски.

Права на вновь создаваемые папки и файлы под SSHFS-Win

Для задания нужных прав у WinFSP есть опции

create_file_umask  и

create_dir_umask . Их можно использовать в командной строке, однако проще в SSHFS-Win-Manager . Смотри картинки ниже.

Настройки SSHFS-Win-Manager

SSHFS на Windows 10 для монтирования папки из Linux Debian 10

Здесь я создал два диска с одной буквой. Все эти маунты ведут на одну и туже виртуалку VirtualBox. Но один на внутренний IP, а второй через внешний динамический IP (через роутер с проброшенными портами на 80, 443 и ssh). Т.е. дома я монтирую верхний вариант и проброс в роутере могу вообще закрыть. А если работаю вне дома, то монтирую нижний. При этом для PhpStorm это всегда один и тотже локальный диск V. Невероятно удобно.

SSHFS на Windows 10 для монтирования папки из Linux Debian 10

SSHFS на Windows 10 для монтирования папки из Linux Debian 10

На этой картинки расширенные настройки, которые позволяют выставить нужные мне права (0755 / 0644). Если тебе нужны другие права гугли “permission umask ”.

На данный момент схема хорошо работает. На 4G Laravel проект под PhpStorm индексируется на 20-30 секунд, что более чем приемлемо.  Если есть что дополнить или вопросы — пиши комменты (могут отлетать в премодерацию — это норма, я одобрю и отвечу). Также я есть в Телеграм.

SSHFS (SSH Filesystem) — это клиент файловой системы на основе FUSE для монтирования удаленных каталогов через SSH-соединение. SSHFS использует протокол SFTP, который является подсистемой SSH и включен по умолчанию на большинстве серверов SSH.

По сравнению с другими протоколами сетевой файловой системы, такими как NFS и Samba, преимущество SSHFS состоит в том, что он не требует дополнительной настройки на стороне сервера. Чтобы использовать SSHFS, вам нужен только SSH-доступ к удаленному серверу.

Поскольку SSHFS использует SFTP , все передаваемые данные между сервером и клиентом должны быть зашифрованы и расшифрованы. Это приводит к небольшому снижению производительности по сравнению с NFS и более высокой загрузке ЦП на клиенте и сервере.

Из этого туториала Вы узнаете, как установить клиент SSHFS в Linux, macOS и Windows и как смонтировать удаленный каталог.

Установка SSHFS

Пакеты SSHFS доступны для всех основных операционных систем, и установка довольно проста.

Установка SSHFS в Ubuntu и Debian

SSHFS доступен из репозиториев Ubuntu и Debian по умолчанию. Обновите индекс пакетов и установите клиент sshfs, набрав:

sudo apt updatesudo apt install sshfs

Установка SSHFS на CentOS

В CentOS и других производных от Red Hat выполните следующую команду для установки sshfs:

sudo yum install sshfs

Установка SSHFS на macOS

Пользователи macOS могут установить клиент SSHFS, загрузив пакеты FUSE и SSHFS с сайта osxfuse или через Homebrew:

brew cask install osxfusebrew install sshfs

Установка SSHFS в Windows

Пользователям Windows необходимо установить два пакета: WinFsp и SSHFS-Win.

  • WinFsp .
  • SSHFS-Win .

Монтирование удаленной файловой системы

Следующие инструкции применимы для всех дистрибутивов Linux и macOS.

Чтобы смонтировать удаленный каталог, пользователь SSH должен иметь к нему доступ. Команда монтирования SSHFS принимает следующий вид:

sshfs [user@]host:[remote_directory] mountpoint [options]

Команда sshfs прочитает файл конфигурации SSH и использует настройки для каждого хоста. Если удаленный каталог не указан, по умолчанию используется домашний каталог удаленного пользователя.

Например, чтобы смонтировать домашний каталог пользователя с именем «linuxize» на удаленном хосте с IP-адресом «192.168.121.121», сначала создайте каталог, который будет служить точкой монтирования, это может быть любое место, которое вы хотите:

mkdir ~/linuxizeremote

Затем используйте команду sshfs для монтирования удаленного каталога:

sshfs linux[email protected]:/home/linuxize /home/linuxize/linuxizeremote

Вам будет предложено ввести пароль пользователя. Чтобы не вводить пароль каждый раз при монтировании удаленного каталога, сгенерируйте ключи SSH и настройте вход SSH без пароля .

Теперь вы можете взаимодействовать с каталогами и файлами, расположенными на удаленном сервере, точно так же, как и с локальными файлами. Например, вы можете редактировать, удалять, переименовывать или создавать новые файлы и каталоги.

Если вы хотите навсегда смонтировать удаленный каталог, вам необходимо отредактировать файл /etc/fstab на локальном компьютере и добавить новую запись монтирования. Таким образом, когда ваша система загружается, она автоматически монтирует удаленный каталог.

Чтобы смонтировать удаленный каталог через SSHFS из /etc/fstab , используйте fuse.sshfs в качестве типа файловой системы.

/etc/fstab

user@host:/remote/dir  /local/mountpoint  fuse.sshfs  defaults  0  0

При создании постоянного монтирования убедитесь, что вы можете подключить удаленный хост с помощью аутентификации на основе ключа SSH.

Монтирование удаленной файловой системы в Windows

Пользователи Windows могут использовать проводник Windows, чтобы подключить сетевой диск к удаленному каталогу на SSH-сервере.

Откройте проводник Windows, щелкните правой кнопкой мыши «Этот компьютер» и выберите «Подключить сетевой диск». Выберите диск для монтирования и в поле «Папка» введите удаленного пользователя, сервер и путь в следующем формате:

На момент написания этой статьи SSHFS-Win не поддерживает аутентификацию на основе ключей, поэтому удаленный сервер SSH должен быть настроен для принятия аутентификации на основе пароля.

Для получения более подробной информации обратитесь к руководству по SSHFS-Win .

Отключение удаленной файловой системы

Чтобы отсоединить смонтированную файловую систему, используйте команду umount или fusermount после которой fusermount каталог, в котором она была смонтирована (точка монтирования):

fusermount -u /local/mountpoint
umount /local/mountpoint

Выводы

В этом руководстве вы узнали, как использовать SSHFS для монтирования удаленного каталога через SSH. Это может быть полезно, если вы хотите взаимодействовать с удаленными файлами с помощью приложений на локальном компьютере.

Чтобы получить полный список опций sshfs, введите в терминале man sshfs .

Вы также можете ограничить доступ пользователей к их домашнему каталогу, настроив среду SFTP Chroot Jail и изменив порт SSH по умолчанию, чтобы добавить дополнительный уровень безопасности на ваш сервер.

Если у вас есть какие-либо вопросы или отзывы, не стесняйтесь оставлять комментарии.

Введение

SSHFS — хороший инструмент для подключения сетевых дисков. При стабильном сетевом соединении связь с таким сетевым диском может держаться неделями без разрыва. Несколько проектов могут использовать один и тот же диск с помощью этого решения.

Зачем это мне?

Есть несколько сценариев использования, для которых потребуется сетевой диск:

  1. Объединение данных между двумя серверами. При сетевом соединении данные не повреждаются в случае, если они одновременно не используются на запись на обеих машинах.
  2. Передача данных на сервер, представление файлов сайта прямо в обозревателе файлов.
  3. Резервное копирование необходимых данных.

Поднять SSHFS сервер проще простого, если функционирует SSH доступ и SFTP доступ, то дополнительных действий не требуется. SSHFS — это нечто вроде продолжения технологии SFTP.

Привязывание к каталогам

Вы можете привязать определённого пользователя к конкретной директории на удалённой системе. Это может быть выполнено путём редактирования файла sshd_config:

/etc/ssh/sshd_config ….. Match User «someuser» ChrootDirectory «/chroot/%u» ForceCommand internal-sftp AllowTcpForwarding no X11Forwarding no …..

SSHFS для Linux

С клиентом для Linux дело обстоит просто. Сначала установите его командой для Ubuntu:

sudo apt update && sudo apt update && sudo apt install sshfs

Для CentOS:

yum install sshfs

После установки можете осуществлять подключение к серверу командой:

sshfs login@ipaddress:route mountpoint -p port

Вместе login укажите логин на сервере, к которому подключаетесь, вместо ipaddress укажите IP адрес вместо route укажите путь на сервере, к которому подключаетесь. mountpoint является точкой монтирования в локальной ОС. Папка должна существовать! Вместо port укажите порт, на котором слушает SSH сервер.

SSHFS также умеет конвертировать ID локального пользователя, подробнее смотрите в man по sshfs.

Для размонтирования используйте команду:

fusermount -u mountpoint

Где mountpoint — точка подключения, которую указывали при подключении.

SSHFS клиент для Windows

С клиентом для Windows могут быть сложности. Например, именование файлов в ext4 допустимо в верхнем и нижнем регистре, а Windows не понимает разницы между ними. Например, файлы README и readme для Windows будут считаться одним файлом. Так что будьте внимательны при использовании SSHFS на Windows.

Вы можете использовать графический интерфейс для упрощения работы с SSHFS в Windows. Этим способом и будем пользоваться.

Для начала скачайте и установите программы:

  1. sshfs-win GitHub
  2. Стабильную версию WinFsp
  3. sshfs-win-manager

После того, как всё установили, у Вас появится новая установленная программа. Найдите её в меню пуск и запустите. Она называется SSHFS Win Manager.

20200828104304_SSHFS-Win_Manager.png

Нажмите кнопку «Add connection» и заполните поля, указав настройки подключения:

  • В поле NAME укажите удобное имя. Под ним диск будет отображаться в проводнике.
  • В поле IP/Host укажите IP адрес а в поле Port укажите TCP порт, по которому слушает SSH-сервер. Если используется проброс портов, то указываете порт, на который сделан проброс (порт для внешнего мира).
  • В поле USER укажите пользователя в Linux на сервер, к которому подключаетесь.
  • В выборе Authentification method выберите Password, если используется авторизация по паролю или Private key (file), если используется SSH RSA ключ.
  • В поле PASSWORD укажите пароль, но только в случае, если используется авторизация по паролю.
  • В поле KEY FILE укажите путь к id_rsa Подробнее про этот файл читайте в инструкции Использование SSH с доступом по ключам.
  • В поле Remote укажите директорию, под которой будет подан сетевой диск. То есть указанная директория превратится в сетевой диск.
  • В выборе Drive Letter выберите букву диска, под которой диск должен отображаться в проводнике. Будьте внимательны, он не должен повторяться, то есть буква диска должна быть уникальной!

Нажмите Save, а затем на значок вставки штепселя в розетку. Проверьте, появился ли новый диск в проводнике. Если да, значит настроили всё верно. Теперь его можно использовать.

Thank you for reading this post, don’t forget to subscribe!

SSHFS (SSH Filesystem) – это кли­ент фай­ло­вой систе­мы на осно­ве FUSE для мон­ти­ро­ва­ния уда­лен­ных ката­ло­гов по SSH-соеди­не­нию. SSHFS исполь­зу­ет про­то­кол SFTP, кото­рый явля­ет­ся под­си­сте­мой SSH и вклю­чен по умол­ча­нию на боль­шин­стве сер­ве­ров SSH.

По срав­не­нию с дру­ги­ми про­то­ко­ла­ми сете­вой фай­ло­вой систе­мы, таки­ми как NFS и Samba, пре­иму­ще­ство SSHFS заклю­ча­ет­ся в том, что он не тре­бу­ет какой-либо допол­ни­тель­ной настрой­ки на сто­роне сер­ве­ра. Для исполь­зо­ва­ния SSHFS вам нужен толь­ко SSH-доступ к уда­лен­но­му серверу.

Посколь­ку SSHFS исполь­зу­ет SFTP, все пере­да­ва­е­мые дан­ные меж­ду сер­ве­ром и кли­ен­том долж­ны быть зашиф­ро­ва­ны и рас­шиф­ро­ва­ны. Это при­во­дит к слег­ка ухуд­шен­ной про­из­во­ди­тель­но­сти по срав­не­нию с NFS и более высо­кой загруз­ке ЦП на кли­ен­те и сервере.

Из этой ста­тьи вы узна­е­те, как уста­но­вить кли­ент SSHFS в Linux, macOS и Windows и как смон­ти­ро­вать уда­лен­ный каталог.

Паке­ты SSHFS доступ­ны для всех основ­ных опе­ра­ци­он­ных систем, и уста­нов­ка доволь­но проста.

SSHFS досту­пен из репо­зи­то­ри­ев Ubuntu и Debian по умол­ча­нию. Обно­ви­те индекс паке­тов и уста­но­ви­те кли­ент sshfs, набрав:

sudo apt updatesudo apt install sshfs

В CentOS и дру­гих про­из­вод­ных Red Hat для уста­нов­ки sshfs выпол­ни­те сле­ду­ю­щую команду:

Поль­зо­ва­те­ли macOS могут уста­но­вить кли­ент SSHFS, загру­зив паке­ты FUSE и SSHFS с сай­та osxfuse или через Homebrew:

brew cask install osxfusebrew install sshfs

Поль­зо­ва­те­лям Windows необ­хо­ди­мо уста­но­вить два паке­та, WinFsp и SSHFS-Win.

  • WinFsp.
  • SSHFS-Win.

Сле­ду­ю­щие инструк­ции при­ме­ни­мы для всех дис­три­бу­ти­вов Linux и macOS.

Что­бы смон­ти­ро­вать уда­лен­ный ката­лог, поль­зо­ва­тель SSH дол­жен иметь доступ к нему. Коман­да мон­ти­ро­ва­ния SSHFS име­ет сле­ду­ю­щий вид:

sshfs [user@]host:[remote_directory] mountpoint [options]

Коман­да sshfs про­чи­та­ет файл кон­фи­гу­ра­ции SSH и будет исполь­зо­вать настрой­ки для каж­до­го хоста. Если уда­лен­ный ката­лог не ука­зан, по умол­ча­нию исполь­зу­ет­ся домаш­ний ката­лог уда­лен­но­го пользователя.

Напри­мер, что­бы смон­ти­ро­вать домаш­ний ката­лог поль­зо­ва­те­ля с име­нем «andreyex» на уда­лен­ном хосте с IP-адре­сом «192.168.111.011», сна­ча­ла создай­те каталог,который будет слу­жить точ­кой мон­ти­ро­ва­ния, это может быть любое местоположение:

Затем исполь­зуй­те коман­ду sshfs для мон­ти­ро­ва­ния уда­лен­но­го каталога:

sshfs andreyex@192.168.111.011:/home/andreyex /home/andreyex/andreyexremote

Вам будет пред­ло­же­но вве­сти пароль поль­зо­ва­те­ля. Что­бы избе­жать вво­да паро­ля каж­дый раз, когда вы мон­ти­ру­е­те уда­лен­ный ката­лог, гене­ри­руй­те SSH-клю­чи и настра­и­вай­те Passwordless SSH Login.

Теперь вы може­те вза­и­мо­дей­ство­вать с ката­ло­га­ми и фай­ла­ми, рас­по­ло­жен­ны­ми на уда­лен­ном сер­ве­ре, так же, как и с локаль­ны­ми фай­ла­ми. Напри­мер, вы може­те редак­ти­ро­вать, уда­лять, пере­име­но­вы­вать или созда­вать новые фай­лы и каталоги.

Если вы хоти­те авто­ма­ти­че­ски мон­ти­ро­вать уда­лен­ный ката­лог, вам нуж­но отре­дак­ти­ро­вать файл /etc/fstab локаль­но­го ком­пью­те­ра и доба­вить новую запись о мон­ти­ро­ва­нии. Таким обра­зом, когда ваша систе­ма загру­жа­ет­ся, она авто­ма­ти­че­ски мон­ти­ру­ет уда­лен­ный каталог.

Что­бы смон­ти­ро­вать уда­лен­ный ката­лог через SSHFS /etc/fstab, исполь­зуй­те fuse.sshfs в каче­стве типа фай­ло­вой системы.

/etc/fstab

user@host:/remote/dir  /local/mountpoint  fuse.sshfs  defaults  0  0

При созда­нии посто­ян­но­го мон­ти­ро­ва­ния убе­ди­тесь, что вы може­те под­клю­чить уда­лен­ный хост с исполь­зо­ва­ни­ем аутен­ти­фи­ка­ции на осно­ве клю­ча SSH.

Поль­зо­ва­те­ли Windows могут исполь­зо­вать про­вод­ник Windows для сопо­став­ле­ния сете­во­го дис­ка с уда­лен­ным ката­ло­гом на сер­ве­ре SSH.

Открой­те про­вод­ник Windows, щелк­ни­те пра­вой кноп­кой мыши «Мой ком­пью­тер» и выбе­ри­те «Под­клю­чить сете­вой диск». Выбе­ри­те диск для мон­ти­ро­ва­ния и в поле «Пап­ка» вве­ди­те уда­лен­но­го поль­зо­ва­те­ля, сер­вер и путь в сле­ду­ю­щем формате:

На момент напи­са­ния этой ста­тьи SSHFS-Win не под­дер­жи­ва­ет аутен­ти­фи­ка­цию на осно­ве клю­чей, поэто­му необ­хо­ди­мо настро­ить уда­лен­ный ssh-сер­вер для при­ня­тия аутен­ти­фи­ка­ции на осно­ве пароля.

Что­бы отсо­еди­нить смон­ти­ро­ван­ную фай­ло­вую систе­му, исполь­зуй­те коман­ду umount или, fusermount а затем ката­лог, в кото­ром она была смон­ти­ро­ва­на (точ­ка монтирования):

fusermount -u /local/mountpoint

Из этой ста­тьи вы узна­ли, как исполь­зо­вать SSHFS для мон­ти­ро­ва­ния уда­лен­но­го ката­ло­га через SSH. Это может быть полез­но, когда вы хоти­те вза­и­мо­дей­ство­вать с уда­лен­ны­ми фай­ла­ми с помо­щью при­ло­же­ний на локаль­ном компьютере.

Для полу­че­ния пол­но­го спис­ка опций sshfs вве­ди­те man sshfs в свой терминал.

  • Подключение принтера по локальной сети через другой пк windows 7
  • Подключение блютуз наушников к компьютеру windows 10 нет звука
  • Подключение принтера по локальной сети windows 10 ошибка 0x0000011b
  • Подключение блютуз наушников к компьютеру windows 10 без адаптера
  • Подключение принтера к ноутбуку через сетевой кабель windows 10