Я ленивый и потому люблю когда все организовано удобно, без лишних телодвижений. Иногда перебарываю лень, для того чтобы сделать удобно.
Однажды потребовалось мне организовать доступ к серверу по протоколу SMB и в поиске решения я наткнулся на следующую статью: Mounting your Nikhef home directory using SSH for Windows 8. Это было простое и удобное решение, которое использовало Putty. Чуть позже мне пришлось настраивать это решение на другом компьютере и я понял, что Putty тут лишний с тех пор как в Windows 10 появился встроенный ssh-клиент на основе OpenSSH.
Под катом — идентичная схема, только с использованием OpenSSH под Windows 10.
У меня схема организована следующим образом:
- На сервере запущена Samba, от имени пользователя www-data расшарена корневая папка с сайтами. Доступ к серверу только через ssh с авторизацией по ключу. Сервер за NATом, порт проброшен только для ssh.
- В процессе входа в аккаунт на домашней машине на Windows 10 через встроенный в систему OpenSSH устанавливается соединение с сервером с авторизацией по ключу.
- Туннелируется порт 445 удаленной машины на локальный порт 44445 сетевого loopback-адаптера доступного по адресу 10.255.255.1
- На 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:WindowsSystem32OpenSSHssh.exe user@111.111.111.111 -p remoteport -i %APPDATA%CIFSoverSSHcifsoversshkey -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%CIFSoverSSHcifsoversshkey.cmd»
Это позволит запускать наш пакетный файл через powershell без открытия окна. Если запускать его через CMD будет открываться черное окно терминала и будет висеть все время, пока соединение будет установлено, а это неудобно и некрасиво.
Для автоматизации запуска при входе в систему можно создать задачу в планировщике:
schtasks /CREATE /RU %username% /TN "CIFS over SSH" /TR "powershell.exe -nologo -noninteractive -windowStyle hidden -command %APPDATA%CIFSoverSSHcifsoversshkey.cmd" /SC ONLOGON /DELAY 0000:10 /IT /RL highest
На стороне клиентского компьютера Windows все приготовления были закончены.
Настройка Linux сервера
Предполагается, что ssh-сервер был предварительно настроен и включена авторизация по ключу.
Подключаемся по ssh из командной строки на windows-машине
C:WindowsSystem32OpenSSHssh.exe user@111.111.111.111 -p remoteport
В домашней папке пользователя, от имени которого мы будем авторизовываться при создании туннеля ищем файл ~/.ssh/authorized_keys (если файл отсутствует – создадим его).
mkdir ~/.ssh && touch ~/.ssh/authorized_keys
Теперь необходимо в этот файл вставить содержимое нашего файла публичного ключа, созданного на нашей windows-машине (файл %APPDATA%CIFSoverSSHcifsoversshkey.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.1ShareName — Можно даже монтировать её как сетевой диск.
Ранее мы показали вам, как удаленно подключиться к вашей Linux-машине с Windows-машины (Нажмите здесь). Что делать, если вам нужно передать некоторые файлы между вашими системами Windows и Linux??
Что ж, USB-накопитель пригодится для простой передачи данных. Для большого количества файлов в разное время вам понадобится другой эффективный метод. Перенос данных между Linux и Windows через локальную сеть — рекомендуемый вариант. Благодаря простой и быстрой одноразовой настройке вы можете обмениваться файлами между различными машинами.
Обмен файлами между системами Linux и Windows
В этом руководстве мы проведем вас через обмен файлами между машинами Ubuntu и Windows по локальной сети, а также покажем вам, как передавать файлы между Windows и Linux на одном компьютере.
По сети
Перенос файлов между Ubuntu и Windows можно выполнять разными способами, но в этом руководстве мы обсудим следующие популярные методы:
- Передача файлов между Ubuntu и Windows через SSH.
- Перенос файлов между Ubuntu и Windows с помощью Samba.
- Передача файлов между Ubuntu и Windows с помощью общих сетевых папок.
Метод 1: передача файлов между Ubuntu и Windows через SSH
В этом методе вам необходимо установить и включить службу SSH в Ubuntu. Также нам понадобится клиентское приложение SSH в Windows. В этом уроке мы будем использовать Putty. Далее мы собираемся использовать командную строку для обмена вашими файлами по сети.
Шаг 1. Установите пакет SSH в Ubuntu, используя следующую команду.
sudo apt установить openssh-server
Шаг 2. После успешного завершения установки вы можете проверить статус службы SSH, используя следующую команду.
статус службы sudo ssh
Результат команды должен выглядеть как на скриншоте ниже:
Если служба не запущена, вы можете использовать следующую команду для ее запуска:
sudo service ssh start
Кроме того, чтобы разрешить запуск службы SSH при каждом запуске вашей системы, вы можете использовать следующую команду:
sudo service ssh включить
Шаг 3. Установите пакет net-tools.
sudo apt install net-tools
Шаг 4. Выполните следующую команду, чтобы получить IP-адрес вашего компьютера Ubuntu.
ifconfig
Шаг 5. На вашем компьютере с Windows нам понадобится SSH-клиент (это Putty) и PSCP. PSCP считается инструментом безопасного копирования, который используется вместе с Putty для безопасной передачи файлов по сети.
Вы можете скачать оба (Putty и PSCP) с официального сайта Putty. (Кликните сюда.) Обратите внимание, что Putty необходимо установить, а PSCP — нет. Вы должны поставить PSCP.exe на диске «C: », как вы вскоре увидите.
ШАГ 6. Теперь откройте проводник и используйте следующую команду, чтобы запустить перенос файлов с Windows-машины в Ubuntu.
c: pscp "C: Ubuntu Tutorials Общая папка Windows Общая папка Windows.txt "hendadel @ 192.168.1.8: windowssharedfile.текст
Шаг 7. Затем вы должны ввести свой пароль Ubuntu.
Шаг 8. После успешного ввода пароля команда скопирует текстовый файл с вашего компьютера с Windows в вашу домашнюю среду Ubuntu. Теперь вы можете проверить свой домашний каталог, и вы должны найти там файл.
Шаг 9. Теперь, если вам нужно перенести ваши файлы с машины Ubuntu в Windows, откройте файловый менеджер на вашем компьютере с Windows и используйте следующую команду. Будьте осторожны и не забудьте точку в конце команды.
c: pscp hendadel @ 192.168.1.8: ubuntushared .
Выполнив предыдущую команду, вы должны ввести пароль своей машины Ubuntu. Затем файл переносится из Ubuntu в текущий каталог Windows.
Метод 2: передача файлов через Samba
В этом методе мы собираемся установить пакет Samba в Ubuntu. Кроме того, используйте приложение запуска Windows для подключения к общим каталогам Ubuntu.
Шаг 1. Установите пакет Samba в Ubuntu, используя следующую команду.
sudo apt установить самбу
Шаг 2. Вы можете установить пароль на общий ресурс samba следующим образом.
sudo smbpasswd -a hendadel
где hendadel — пользователь Ubuntu, которого вы должны использовать при доступе к общему каталогу Ubuntu.
Шаг 3. Давайте создадим каталог, который будет использоваться для обмена вашими файлами.
mkdir / главная / hendadel / UbuntuSharedDir
Шаг 4. Используя свой любимый текстовый редактор, откройте файл конфигурации samba.
Судо vi / и т. д. / самба / smb.conf
Шаг 5. Добавьте следующие строки в конец файла конфигурации самбы.
[UbuntuSharedDir] путь = / home / hendadel / UbuntuSharedDir available = да допустимые пользователи = hendadel только для чтения = нет возможности просмотра = да общедоступно = да доступно для записи = да
Файл конфигурации самбы должен выглядеть следующим образом:
Сохраните и выйдите из файла конфигурации samba.
ШАГ 6. Перезапустите службу samba, используя следующую команду:
sudo service smbd перезапуск
Шаг 7. На компьютере с Windows откройте приложение запуска из меню Пуск и введите IP-адрес компьютера Ubuntu с именем общего каталога, как показано ниже.
2.168.1.8 UbuntuSharedDir
Нажмите кнопку ОК, чтобы продолжить.
Шаг 8. Появится сообщение безопасности Windows, вам нужно будет ввести свое имя пользователя и пароль samba. Затем нажмите кнопку ОК, чтобы продолжить.
Шаг 9. Теперь у вас должен быть доступ к общему каталогу Ubuntu, и вы можете передавать файлы.
Метод 3: общие сетевые папки
Это самый простой способ из всех. В этом методе мы предоставляем доступ к любой папке с машины Windows, чтобы она была видна на машине Ubuntu.
Шаг 1. На компьютере с Windows щелкните правой кнопкой мыши значок сетевых подключений в правом нижнем углу панели задач.
Шаг 2. Выберите «Открыть настройки сети и Интернета».”
Шаг 3. Затем выберите «Параметры доступа».”
Шаг 4. Теперь в вашем текущем сетевом профиле выберите следующие параметры:
- Включите обнаружение сети.
- Включите общий доступ к файлам и принтерам.
Не забудьте сохранить изменения.
Шаг 5. Теперь откройте проводник и перейдите в каталог, которым вам нужно поделиться. Щелкните папку правой кнопкой мыши и выберите Свойства.
ШАГ 6. После открытия свойств папки, давайте выберем вкладку Sharing. Также нажмите кнопку Advanced Sharing.
Шаг 7. Установите флажок «Открыть общий доступ к этой папке».
Если вам нужно установить разрешения для общей папки, например (Чтение, Запись), вы можете нажать кнопку разрешений и установить свои разрешения.
Нажмите кнопку ОК, чтобы продолжить.
Шаг 8. Теперь на машине Ubuntu откройте файловый браузер.
Шаг 9. На левой панели выберите «Другие места.”
Шаг 10. На нижней панели введите IP-адрес вашего компьютера с Windows и путь к общей папке следующим образом:
smb: // 192.168.1.6 / Общая папка Windows
Затем нажмите кнопку Подключить.
Шаг 11. Должно появиться сообщение аутентификации. Введите свой логин и пароль. Нажмите кнопку Connect, чтобы продолжить.
Шаг 12. Затем вы должны увидеть свою общую папку Windows. Теперь вы можете передавать файлы между двумя машинами.
Передача файлов между Windows и Linux на одном компьютере
Ранее мы рассмотрели, как мы можем обмениваться файлами между ПК с Linux и ПК с Windows по сети. Некоторые из используемых утилит включают SSH, Samba и общие сетевые папки. Здесь мы рассмотрим относительно похожую ситуацию, только на этот раз она будет на той же машине.
Вам может быть интересно, почему мы не можем копировать файлы напрямую из раздела Linux в раздел Windows и наоборот? Простой ответ таков; Это будет работать для одного, но не работает для другого. Давайте посмотрим на причины этого.
Почему это непросто
Формат раздела NTFS, используемый Windows, не поддерживает права доступа к файлам Linux. Поэтому мы не можем рассматривать установку Linux на раздел NTFS, отличный от Ext4. С другой стороны, Windows не может читать файловую систему Linux, даже если системы Linux могут читать раздел NTFS. В большинстве случаев раздел Linux не указан в списке «Этот компьютер » раздел на Windows при двойной загрузке. Следовательно, вы можете скопировать файл из раздела Windows в Linux, но не наоборот.
Простое решение
Имея в виду приведенную выше информацию, нам нужно найти способ отдать предпочтение обеим операционным системам и избежать проблем с повреждением данных. Например, если вы удалите или измените какой-либо файл в разделе Windows при доступе к нему с помощью Linux, высока вероятность того, что Windows может вызвать некоторые ошибки при загрузке.
Поскольку Linux не может работать в разделе NTFS или FAT32, а Windows не может читать файловую систему Linux, нам нужно будет настроить третий раздел, к которому будут иметь доступ обе операционные системы. Этот третий раздел будет содержать файлы, которыми обычно пользуются два. Назовем это SharedPartition.
Мы можем использовать другие методы для обмена файлами, включая внешнее хранилище, такое как USB, или онлайн-хранилище, например Google Drive и DropBox. Однако это утомительно, так как для переключения с одной ОС на другую потребуется перезагрузка, а другой метод зависит от пропускной способности.
Создать SharedPartition
Независимо от того, есть ли у вас SSD или жесткий диск, нам потребуется как минимум четыре раздела:
- Раздел Linux
- Раздел Windows
- Пространство подкачки
- Общий раздел (NTFS)
Я считаю, что у вас уже есть первые три. Для создания SharedPartition, Вы можете смело проверить наш пост «Создание или изменение размеров разделов в Linux».’Убедитесь, что вы отформатировали его в NTFS. Кроме того, вам может потребоваться понимание таблицы разделов, используемой на ваших дисках. Это может быть GPT или MBR. Наш пост «Загрузка Linux или Windows с USB-накопителя» дает вам исчерпывающее руководство по этому вопросу. Вы также поймете преимущество одного перед другим.
До сих пор у нас уже есть SharedPartition к которому могут получить доступ обе операционные системы. Однако нам может потребоваться выполнить некоторые настройки, такие как автоматическое монтирование в Linux и установить его в качестве местоположения по умолчанию для различных файлов.
Настроить автоматическое монтирование в Linux
Нам нужно будет выполнить несколько команд в командной строке. Если вы только начинаете, не паникуйте. Скопируйте и вставьте команды, как они указаны ниже. В этом посте мы выбрали дистрибутив Linux Ubuntu 20.04 LTS.
Примечание: Не забудьте заменить имя SharedPartition с меткой вашего нового раздела в любой из команд.
Шаг 1. Установите драйвер ntfs-3g, который позволяет Linux читать и записывать разделы NTFS.
sudo apt установить ntfs-3g
Шаг 2. Создайте каталог, в который мы будем монтировать наш новый раздел.
sudo mkdir / media / SharedPartition
Шаг 3. Получите UUID (универсальный уникальный идентификатор) нового SharedPartition с помощью команды ниже.
sudo blkid
Вы должны увидеть такой вывод.
Скопируйте UUID SharedPartition. UUID определяет раздел в файле / etc / fstab.
Шаг 4. Поскольку мы будем редактировать файл / etc / fstab, создайте резервную копию с помощью команды ниже.
sudo cp / etc / fstab / etc / fstab.резервное копирование
Шаг 5. Выполните команду ниже, чтобы отредактировать / etc / fstab с помощью редактора nano.
судо нано / и т. д. / fstab
Вы должны увидеть окно, подобное приведенному ниже. Добавьте следующую строку в конце, но не забудьте заменить UUID своим.
# SharedStorage UUID = 66E53AEC54455DB2 / media / SharedPartition / ntfs-3g auto, user, rw 0 0
После этого шага перезагрузите компьютер. Теперь вы должны увидеть SharedPartition установлен под ‘Другие места ‘ меню.
Настройте специальные папки (Linux)
Специальные папки в Linux — это те, которые находятся в вашем домашнем каталоге. Они включают рабочий стол, документы, видео и т. Д. Выполните приведенную ниже команду, чтобы отредактировать их пути.
судо нано .config / user-dirs.dirs
Теперь нам нужно отредактировать пути, чтобы они указывали на наш SharedPartition, смонтированный в / media / SharedPartition. Например, для «Загрузки» мы добавим путь «/ media / SharedPartition / Downloads » и удалите «$ HOME / Загрузки » дорожка. После применения изменений у вас должно получиться примерно следующее:
Сохраните изменения и закройте редактор Nano.
Настройте специальные папки (Windows)
Шаг 1. Откройте проводник и введите %Профиль пользователя% в адресной строке. Нажмите Enter.
Шаг 2. Выберите папку, скажем «Загрузки», к которой вы хотите получить доступ в обеих операционных системах. Щелкните правой кнопкой мыши и выберите параметр свойств.
Шаг 3. В открывшемся всплывающем окне выберите вкладку Местоположение.
Вы увидите путь по умолчанию к вашему местоположению загрузок.
Шаг 4. Нажми на Двигаться кнопка. Откроется окно, в котором вы выберете новый путь для загрузок. Перейдите к своему SharedPartition и выберите папку Downloads, уже созданную в Linux. Нажми на Выберите папку кнопка.
Шаг 5. Нажмите кнопку «Применить», чтобы внести изменения.
Вы увидите всплывающее окно с предложением переместить содержимое из старой папки в это новое место. Нажмите ОК.
это оно. Теперь вы можете сделать то же самое для других папок. Теперь все, что вы сохраняете в этих папках, e.грамм., Документы в Windows будут доступны в Linux в каталоге Documents.
Использование другого раздела для обмена файлами между двумя операционными системами является наиболее надежным вариантом, поскольку Windows не может читать файловую систему Linux без использования стороннего программного обеспечения. При использовании этого метода вам не нужно иметь дубликаты файлов. Обе операционные системы могут читать и писать в одном разделе.
SSHFS (SSH Filesystem) — это клиент файловой системы на основе FUSE для монтирования удаленных каталогов по SSH-соединению. SSHFS использует протокол SFTP, который является подсистемой SSH и включен по умолчанию на большинстве серверов SSH.
По сравнению с другими протоколами сетевой файловой системы, такими как NFS и Samba, преимущество SSHFS заключается в том, что он не требует какой-либо дополнительной настройки на стороне сервера. Для использования SSHFS вам нужен только SSH-доступ к удаленному серверу.
Поскольку SSHFS использует SFTP , все передаваемые данные между сервером и клиентом должны быть зашифрованы и расшифрованы. Это приводит к слегка ухудшенной производительности по сравнению с NFS и более высокой загрузке ЦП на клиенте и сервере.
Установка SSHFS
Пакеты SSHFS доступны для всех основных операционных систем, и установка довольно проста.
Установка SSHFS в Ubuntu и Debian
SSHFS доступен из репозиториев Ubuntu и Debian по умолчанию. Обновите индекс пакетов и установите клиент sshfs, набрав:
sudo apt update
sudo apt install sshfs
Установка SSHFS на CentOS
В CentOS и других производных Red Hat для установки sshfs выполните следующую команду:
sudo yum install sshfs
Установка SSHFS на macOS
Пользователи macOS могут установить клиент SSHFS, загрузив пакеты FUSE и SSHFS с сайта osxfuse или через Homebrew:
brew cask install osxfuse
brew 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 linuxize@192.168.121.121:/home/linuxize /home/linuxize/linuxizeremote
Вам будет предложено ввести пароль пользователя. Чтобы не вводить пароль каждый раз, когда вы монтируете удаленный каталог, генерируйте 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 могут использовать проводник Windows для сопоставления сетевого диска с удаленным каталогом на сервере SSH.
Откройте проводник Windows, щелкните правой кнопкой мыши «Этот компьютер» и выберите «Подключить сетевой диск». Выберите диск для монтирования и в поле «Папка» введите удаленного пользователя, сервер и путь в следующем формате:
\sshfsuser@host[PATH]
На момент написания этой статьи SSHFS-Win не поддерживает аутентификацию на основе ключей, поэтому необходимо настроить удаленный ssh-сервер для принятия аутентификации на основе пароля.
Для более подробной информации обратитесь к руководству по SSHFS-Win .
Размонтирование удаленной файловой системы
Чтобы отсоединить смонтированную файловую систему, используйте команду umount
или, fusermount
а затем каталог, в котором она была смонтирована (точка монтирования):
fusermount -u /local/mountpoint
umount /local/mountpoint
Вывод
Из этого руководства вы узнали, как использовать SSHFS для монтирования удаленного каталога через SSH. Это может быть полезно, когда вы хотите взаимодействовать с удаленными файлами с помощью приложений на локальном компьютере.
Для получения полного списка опций sshfs введите man sshfs
свой терминал.
Вы также можете ограничить доступ пользователей к их домашнему каталогу, настроив среду SFTP Chroot Jail и изменив порт SSH по умолчанию, чтобы добавить дополнительный уровень безопасности вашему серверу.
Securing Windows File Shares with SSH Port Forwarding
This article is not about SFTP or SCP file transfer. It is instead about accessing Windows file shares — folders exposed to a local network using built-in Windows functionality — via SSH tunneling (port forwarding).
We no longer support tunneling Windows file shares over SSH. Changes in Windows design have made this usage scenario between difficult and impossible. The following is old information that we continue to provide only as a courtesy. We do not recommend that you try this. We recommend finding a way to use SFTP access to the file share instead.
Recent Windows Versions
In recent versions of Windows, including Vista, Windows 7, and 2008, setting up port forwarding of file shares over SSH is now considerably more difficult. We recommend adapting your approach so that you can use SFTP or SCP for file transfer instead.
If you would still like to port forward Windows file shares, you may be able to achieve this using an approach described by Jan Just Keijser in this tutorial. Jan’s tutorial was written with PuTTY in mind, but the crucial steps will work identically with Bitvise SSH Client.
Note: Following this tutorial will cause SMB to run much later after booting the computer. This may cause problems if your computer is joined to the domain, because Group Policy is distributed via SMB from the domain controller. Other boot-time tasks such as virus scanner updates also sometimes use SMB, and may fail.
In the event that Jan’s tutorial becomes unavailable, the following is a summary:
- Note that all command lines shown below will require an elevated administrative Command Prompt.
- You will need an additional (real or virtual) network adapter on which you can disable the Client for Microsoft Networks functionality. An easy way to obtain this additional adapter is by installing a Microsoft Loopback Adapter. You can do so through the Add Hardware Wizard:
- Run hdwwiz.exe.
- Select «Install the hardware that I manually select from a list». Click Next.
- Select «Network Adapters». Click Next.
- Select manufacturer «Microsoft» and then adapter «Microsoft Loopback Adapter». Click Next until finished.
- Configure the network adapter to disable Client for Microsoft Networks functionality, and give it an IP address:
- Open the Network Connections Center.
- Open Properties for your loopback adapter.
- Disable the checkboxes Client for Microsoft Networks and File and Printer Sharing for Microsoft Networks.
- The checkbox for Internet Protocol Version 4 must remain enabled.
- Select Internet Protocol Version 4. Click Properties.
- Select Use the following IP address. Enter a private IP address such as 10.255.255.1. Enter subnet mask 255.255.255.0.
- Click on Advanced to open Advanced TCP/IP Settings.
- Deselect Automatic metric and enter 9999 as Interface metric.
- Switch to the WINS tab, and select Disable NetBIOS over TCP/IP.
-
Disable automatic starting of the smb driver by executing the following command:
sc config smb start= demand
Note the space between start= and demand.
-
Execute the following command to reroute TCP port 445 to a port of your choice. For example, 44445:
netsh interface portproxy add v4tov4 listenaddress=10.255.255.1 listenport=445 connectaddress=10.255.255.1 connectport=44445
- Since the smb driver has been set up to not start on system startup, add a scheduled task to start it when anyone logs in:
- Start Task Scheduler from Administrative Tasks.
- Name the task as you prefer, e.g. «Start SMB».
- In the Trigger tab, select «When I log on».
- In the Action tab, select «Start a program».
- In the Start a program tab, enter «c:windowssystem32net.exe» under Program/script. Enter «start smb» under Arguments.
- Before clicking Finish, select the checkbox Open the Properties dialog.
- Click Finish and the task Properties window will show up.
- Select Run whether user is logged on or not. Then, select Do not store password.
- Select Run with highest privileges.
- Go to the Triggers tab, and right click to edit the At log on trigger.
- In the Edit Trigger window, change the setting Specific user or group to Any user.
- Click OK to close the Edit Trigger window, then switch to the Conditions tab.
- In the Conditions tab, make sure that the option Start the task only if the computer is on AC power is not set.
- Reboot your computer, login, and verify:
-
Execute:
sc query smb
The SMB driver should be in the Running state.
-
Execute:
netstat -an | find «:445»
You should see an entry such as:
TCP 10.255.255.1:445 0.0.0.0:0 LISTENING
If you see ‘0.0.0.0:445’ instead, then the portproxy rule was not applied correctly.
-
- You can now set up your SSH client to forward local port 44445 on interface 10.255.255.1, to destination port 445 on your desired destination server (the one hosting the network share).
You can now use UNC paths of the form \10.255.255.1sharename to access file shares on the destination server.
Older Windows Platforms
On Windows versions prior to Windows Vista, you can forward file shares over an SSH connection by forwarding connections on port 139 on the sharing-consumer machine via SSH to the sharing-provider machine. The exact setup differs depending on the version of Windows on the sharing-consumer machine:
- Windows 2000: configure the SSH client to listen on interface 127.0.0.2 and connect to ‘\127.0.0.2sharename’. This is all that is necessary.
- Windows XP:
same as for Windows 2000, but before using the forwarded share, the
local (client’s) Windows file sharing server needs to be stopped via
‘net stop server’. To disable it permanently, run ‘sc config
lanmanserver start= disabled’. To re-enable it at a later time, run ‘sc
config lanmanserver start= auto’. Note the space between ‘start= ‘ and
the following parameter — sc will fail without it.
If you want to avoid disabling the file sharing server on the client
machine because you want to retain remote access to the client
machine’s shared resources, there is another alternative. You can
install the Microsoft Loopback Adapter according to instructions relevant to your version of Windows:
- The Loopback Adapter and file share tunneling: Windows XP and 2003
- The Loopback Adapter and file share tunneling: Windows 2000
- The Loopback Adapter and file share tunneling: Windows NT4
If using the Microsoft Loopback Adapter, remember to setup your SSH client
appropriately: use the Loopback Adapter’s IP instead of 127.0.0.1 or
127.0.0.2. If you assigned the Loopback Adapter the IP address
10.10.10.10, configure a client-to-server port forwarding rule to
listen on 10.10.10.10, port 139; then you can connect to
‘\10.10.10.10sharename’.
If the instructions on this page fail for you, try some of the file share tunneling tips contributed by our users.
Note that, in all cases, you will not be able to browse to the
sharing-provider machine via point-and-click — the network path needs
to be typed in manually.
Step-by-step instructions
Follow
these steps if you wish to get quickly up and started with Windows file
sharing over SSH. It is advised that you try to understand what is
being done by each one of the steps presented. The difference between
understanding and not understanding is frequently the difference
between a security measure which works and one that only appears to.
On the server machine: (the file-sharing provider)
- Install Bitvise SSH Server on the server — the machine that has the resources you wish to access with Windows file sharing.
- No changes to the default SSH Server configuration are required to use
Windows file sharing over SSH. You may wish to make changes to the
default SSH Server configuration later on, to restrict what SSH
features are accessible to remote users. However, for the time being,
keep your SSH Server settings at default until your file sharing over SSH
is up and running. - Apart from installing the SSH Server, the only thing you need to do on the server is ensure that there is a Windows account which you can use to log on
locally, and which you are comfortable using through Bitvise SSH Client and
Server. If such an account does not yet exist, create one and use it
to log on for the first time through the local Windows console to make
sure all settings for the new account are initialized. - Start the SSH server from the Bitvise SSH Server Control Panel.
On the client machine:
- If the client is running Windows XP or 2003 and you wish to retain the ability to share the client’s resources, install and configure the Microsoft Loopback Adapter.
- Install Bitvise SSH Client on the client (the machine from which you wish to be accessing the server machine’s shared resources).
- Configure the following settings on the Login tab of the SSH Client. Click also the ‘Help’ link on the Login tab for help with any of these settings.
- Host: The IP address or DNS name of the server that you are accessing.
- Port:
You will normally use the default value, 22. This must match the port
that the SSH Server is listening on. If you have made no changes to the
default SSH Server configuration to change the port it is listening on,
use 22. - Username:
The Windows account name with which to log into the server. This must
be a valid Windows account name with local logon permissions on the
side of the server. - Password: The password with which to log into the server, belonging to the account name specified by Username.
- Store encrypted password in profile:
You may optionally wish to enable this setting so that you will not be
asked to reenter the password each time when logging in after the SSH Client
has been restarted.
- In the C2S Forwarding
tab of Bitvise SSH Client, add a new entry and configure the following settings
for this entry. Click also the ‘Help’ link on the C2S Forwarding tab
for help with any of these settings.- Status: This will be ‘enabled’ by default, leave it that way.
- Listen interface: The default value is 127.0.0.1. If the client machine is running Windows XP,
leave this as it is; you will need to uninstall file and printer
sharing on the client machine anyway. If the client machine is running Windows 2000, change this to 127.0.0.2 so that you will not need to uninstall file and printer sharing. - List. Port: 139.
- Destination Host:
set this to the interface on which the file sharing server is listening
for SMB connections. Setting this to ‘localhost’ or 127.0.0.1 will not
work because the file sharing server is usually listening on a specific
interface rather than all interfaces, so it will not be possible to go
through the loopback connection. To determine the interface where the
file sharing server is listening, execute ‘netstat -an’ on the server
and examine the output for a line like ‘xxxxxx:139 … LISTENING’. The
xxxxxx is the IP address that you need to enter in this field. Normally
this will be the IP address associated with the server’s main ethernet
adapter. - Dest. Port: 139.
- Click the Login
button in Bitvise SSH Client and observe the log area for any errors. If the
session is established without errors, the SSH setup is running. - If you are running Windows XP,
you will now need to uninstall (not just disable, but completely
uninstall) file and printer sharing on the client machine. This can be
done through Network Connections : (each connection) : Properties —
select ‘File and Printer Sharing’ in the list box and press the
Uninstall button. This needs to be done for each active network
connection on the client machine. - If you are using earlier versions of Windows (this is confirmed for
Windows 2000 but is likely to apply to the 9x/Me series as well), you
will not need to uninstall file and printer sharing if you specified 127.0.0.2 as the C2S rule listening interface in the SSH Client (above). - Once the above steps have been completed, you will be able to connect
securely to the shared resources on the server machine using syntax
such as \127.0.0.1sharename or \127.0.0.2sharename, respectively.
This will work as long as the SSH connection remains established. - You can make
sure that your file sharing connections are going through Bitvise SSH Client by
checking the SSH Client log area for a message saying ‘Accepted
client-to-server connection from … to …:139’ corresponding to each
connection attempt you make. Likewise, when your file sharing
connection closes, the SSH Client should output a log message stating
‘Closing client-to-server forwarding channel from … to …:139’.
Troubleshooting
If you encounter problems establishing the SSH session, you will receive
diagnostic information in the SSH Client log area, as well as in the log
entries recorded by SSH Server on the server side. Especially in the case
of an authentication failure, the SSH Server log entries will contain
important diagnostic information. Inspect the SSH Server log entries using
the Windows Event Viewer on the server side.
Please see our contact and support page for more information and links to documents about how to go about resolving problems with Bitvise SSH Client and Server.
Нажмите OK, чтобы подтвердить изменение, затем откройте вкладку Безопасность в Свойствах. Настройте это, чтобы отразить настройки в поле Полномочия ранее. Вам не нужно делать слишком много здесь, так как Windows 10 должна включать группу под названием Authenticated Users. Это используется для удаленного доступа к вашему компьютеру.
Чтобы найти общий ресурс Windows на ПК с Linux, просто откройте браузер файлов и выберите « Сеть» . Отсюда перейдите к папке, размещенной в Windows, и начните обмен данными.
Чтобы переместить данные в другом направлении, вам нужно установить Samba на ваш компьютер с Linux.
sudo apt install samba
Затем установите имя пользователя для общего ресурса samba.
smbpasswd -a username
Вам будет предложено ввести пароль для новой учетной записи (не называйте это «имя пользователя»!).
Затем создайте каталог для обмена данными.
mkdir /home/[username]/Share
Затем отредактируйте файл smb.conf в своем текстовом редакторе:
sudo nano /etc/samba/smb.conf
Добавьте следующее в конец файла конфигурации:
[Share] path = /home/[username]/[folder_name] available = yes valid users = [username] read only = no browsable = yes public = yes writable = yes
Внесите необходимые изменения в соответствии со своими потребностями, затем нажмите Ctrl + X, чтобы выйти, и нажмите Y, чтобы сохранить. Далее перезапустите Samba:
sudo service smbd restart
После этого вы сможете получить доступ к общему ресурсу из Windows. Откройте проводник или браузер и введите IP-адрес или имя хоста удаленного устройства Linux, а затем имя папки. В нашем примере это
\192.168.1.233Share
2. Скопируйте файлы через SSH из Windows в Linux
С включенным SSH на вашем устройстве Linux вы можете отправлять данные через командную строку с одного компьютера на другой. Однако, чтобы это работало, вам нужно настроить SSH-сервер на вашем Linux-компьютере.
Начните с открытия терминала и обновления и обновления ОС.
sudo apt update sudo apt upgrade
После завершения установите сервер SSH. Сервер OpenSSH — хороший вариант.
sudo apt install openssh-server
Подождите, пока он установит. Чтобы в любой момент проверить, работает ли сервер OpenSSH, используйте
sudo service ssh status
Для передачи данных из Windows используйте SSH-клиент, например PuTTY. Это требует загрузки инструмента PSCP в вашу систему Windows для запуска вместе с PuTTY. Найти оба на домашней странице PuTTY .
Обратите внимание, что в то время как PuTTY нужно будет установить, PSCP — нет. Однако его следует сохранить в корне диска C: или настроить как переменную среды. Вам также необходимо подтвердить IP-адрес устройства Linux. Отметьте это на коробке с
ifconfig
После установления соединения вы можете отправлять данные следующим образом:
c:pscp c:somepathtoafile.txt user@remoteIP:homeusersomepathnewname.txt
Перед началом передачи вам будет предложено ввести пароль для компьютера с Linux.
Хотите скопировать данные из Linux в Windows в одном сеансе SSH? Эта команда загрузит указанный файл в текущий каталог:
c:pscp user@remoteIP:homeusersomefile.txt .
Обратите внимание на одиночный период в конце — включите его, иначе перевод не будет работать.
3. Как перенести файлы из Linux в Windows, используя FTP
Можно также использовать приложение протокола передачи файлов (FTP) с поддержкой SSH. Передача файлов через SFTP в пользовательском интерфейсе, управляемом мышью, возможно, проще, чем полагаться на набранные команды.
Опять же, сервер SSH должен быть запущен на компьютере с Linux перед началом работы. Вы также должны убедиться, что вы установили приложение FTP, такое как FileZilla, которое поддерживает SFTP.
Чтобы использовать этот метод, запустите FileZilla, затем откройте File> Site Manager . Создайте новый сайт , заботясь о том, чтобы установить протокол на SFTP . Добавьте целевой IP-адрес в Host , затем имя пользователя и пароль, установив тип входа в систему как Normal .
Нажмите Готово, когда будете готовы, затем используйте интерфейс FTP для перетаскивания файлов между двумя компьютерами.
4. Делитесь файлами между Linux и Windows с помощью Resilio Sync
Другим вариантом, который вы должны рассмотреть, является программа синхронизации файлов. Обычно они кроссплатформенные и используют зашифрованный ключ для управления соединением между устройствами.
Все, что вам нужно сделать, это установить приложение, назначить папку синхронизации, а затем создать ключ. Установите это на втором ПК, и ваши данные будут синхронизированы. Для этого есть два хороших варианта:
- Resilio Sync : ранее известная как BitTorrent Sync, Resilio доступна практически на любой платформе, о которой вы только можете подумать. Есть платная версия, но бесплатного варианта достаточно для синхронизации двух устройств.
- SyncThing : для Linux, Windows, macOS и Android эта альтернатива Resilio Sync предлагает аналогичную функцию без платного компонента.
Наше руководство по использованию Resilio Sync Synching (а также Синхронизация) поможет вам настроить передачу файлов по сети между компьютерами.
5. Создайте и смонтируйте общую папку VirtualBox в Linux
Многие люди не запускают отдельную машину Linux. Вместо этого обычно запускать Linux на виртуальной машине (ВМ). Но есть ли способ передачи файлов между Windows и Linux, когда он установлен в виртуальной машине?
К счастью, да. С VirtualBox вы можете создать виртуальный общий каталог для синхронизации данных.
Если вы работаете с Windows на виртуальной машине в Linux (или наоборот), VirtualBox уже настроен для совместного использования. Прежде чем продолжить, убедитесь, что на вашей виртуальной машине установлены гостевые дополнения.
В диспетчере VirtualBox выберите виртуальную машину и выберите « Пуск»> «Запуск без головы» (альтернативно запустите виртуальную машину, затем откройте « Устройства»> «Общие папки» ). Когда отобразится состояние, что машина работает, откройте правой кнопкой мыши виртуальную машину и выберите « Настройки»> «Общие папки» .
Здесь выберите Папки машин, затем щелкните символ + справа (или щелкните правой кнопкой мыши и выберите Добавить общую папку ). Найдите путь к папке , найдите каталог, который вы хотите использовать, задайте имя (при необходимости) и нажмите ОК .
Используйте флажок Auto-mount, если вы хотите, чтобы общий ресурс был доступен при запуске виртуальной машины. Нажмите OK еще раз для подтверждения и выхода. После перезагрузки виртуальной машины общий ресурс будет готов для обмена данными между хост-компьютером и гостевой операционной системой.
Совместное использование файлов между Windows и Linux очень просто
Если вы новичок в Linux, или вы находите Windows незнакомой, обмен данными между ними проще, чем вы думаете.
Мы рассмотрели несколько методов. Мы рекомендуем вам попробовать все из них и решить, какой из них вам наиболее удобен.
Если вы синхронизируете данные с Linux, есть большая вероятность, что вы перенесете свои вычисления из Windows. Посмотрите наше руководство по переходу с Windows на Linux. для получения дополнительных советов.
Содержание
- 1 А зачем?
- 2 Дополнительные компоненты
- 2.1 Под Windows
- 2.2 Под Linux
- 3 Подключение файловой системы
Брррр…Что!? Сейчас поясню. Есть такая штука – файловая система SSHFS, точнее как бы обёртка под файловую систему, благодаря которой можно подключиться к удалённой файловой системе по защищённому протоколу. Вообще, каких только обёрток не придумали, но не будем сейчас углубляться в историю, а покажем на практике, как это работает. Примечательно то, что на сервере нам не нужно делать ничего особенного, как был поднят SSH, так он и будет поднят.
А зачем?
- Никогда не знаешь, что будет на рабочей станции, когда нужно удалённо поработать. Обычно я использую WinSCP для передачи данных, но это доп.софт, причём довольно специфичный. А здесь практически чистая поддержка, + фичи использования сетевых дисков.
- Для Linux-систем – вообще супер, т.к. не требует настройки сервера (как например NFS), правда немного съедает производительность за счёт криптографии.
Дополнительные компоненты
Под Windows
- WinFSP, последняя версия с гитхаба;
WinFSP установка под Windows - SSHFS-Win, последняя версия с гитхаба;
SSHFS под Windows
SSHFS-Win требует для своей работы WinFSP, так что ставим по порядку.
Под Linux
# yum install sshfs
Это под мой любимый CentOS. Под другими дистрибутивами – аналогично, скорее всего придётся заменить yum на apt-get Готово!
Подключение файловой системы
После того, как компоненты установлены, просто(!) подключаем сетевой диск по следующему пути:
\sshfs<имя пользователя>@<адрес хоста>
И останется только указать действующие аутентификационные данные этой учётной записи, как наш сетевой диск подключится:
Для Linux соответственно:
# sshfs <login>@<host>:<path> <mount-point>
Всё очень просто! Реально крутая фича, буду пользовать. Если вам показалась эта тема полезной – не поскупитесь на лайк/репост, ну прям душу греет каждый новый отзыв.
Содержание
- Как передавать и обмениваться файлами между Windows и Linux
- 4 способа передачи файлов из Windows в Linux
- 1. Совместное использование сетевых папок между Linux и Windows
- 2. Скопируйте файлы через SSH из Windows в Linux
- 3. Как перенести файлы из Linux в Windows, используя FTP
- 4. Делитесь файлами между Linux и Windows с помощью Resilio Sync
- Настройка Samba
- Настройка общих папок
- Linux
- Общий доступ к папкам в локальной сети между Ubuntu и Windows
- Общие папки в локальной сети в Ubuntu
- Метод 1. Общий доступ к папкам в локальной сети без пароля
- Разрешение на совместное использование в Убунту
- Шаг 2: Включение совместного доступа в Windows
- 2. Общий доступ к папкам в локальной сети в Ubuntu с помощью парольной защиты
- Что такое Самба?
- Инсталляция сервера Samba на Ubuntu
- Настройка сервера Samba в Ubuntu
- Создание системного пользователя для совместного использования файлов в сети
- Добавление нового пользователя Samba
- Общий доступ к папкам или файлам по сети
- Удаление общих папок
- Справочная информация
- четверг, 23 августа 2018 г.
- Доступ к общей папке Windows из Linux
Как передавать и обмениваться файлами между Windows и Linux
Копирование данных с ПК с Windows в Linux — или в другом направлении — поначалу может показаться пугающим. В конце концов, это то, что кажется простым, но оказывается сложным.
По правде говоря, делиться файлами из Windows в Linux легко, но только если вы знаете, как это сделать. Готовы выяснить?
4 способа передачи файлов из Windows в Linux
Перенос данных между операционными системами Windows и Linux проще, чем вы думаете. Мы собрали пять способов сделать это:
С помощью каждого из этих методов вы сможете легко (а в некоторых случаях легко) перемещать файлы между операционными системами.
Давайте посмотрим на них по очереди и выясним, какой из них подходит вам больше всего.
1. Совместное использование сетевых папок между Linux и Windows
Наиболее очевидный способ обмена файлами между Linux и Windows — это использование сетевых ресурсов. Этот термин относится к папкам на одном ПК, которые доступны пользователям на других компьютерах. В сети только для Windows это легко настроить. Добавление устройства Linux немного усложняет ситуацию, хотя это можно преодолеть.
Начиная с Windows, щелкните правой кнопкой мыши значок сетевого подключения на панели задач и выберите «Открыть сеть и настройки Интернета». Далее нажмите «Параметры общего доступа» и включите текущий профиль.
Нажмите «Сохранить изменения» для подтверждения, затем перейдите в папку, содержащую файлы, которыми вы хотите поделиться. Щелкните правой кнопкой мыши папку, выберите «Свойства» и откройте вкладку «Общий доступ». Здесь нажмите «Расширенный общий доступ», затем установите флажок «Поделиться этой папкой».
Вы можете управлять доступом к папке через разрешения; это относится к локальным пользователям Windows, а не к сетевым устройствам.
Нажмите OK, чтобы подтвердить изменение, затем откройте вкладку Безопасность в Свойствах. Настройте это, чтобы отразить настройки в поле Полномочия ранее. Вам не нужно делать слишком много здесь, так как Windows 10 должна включать группу под названием Authenticated Users. Это используется для удаленного доступа к вашему компьютеру.
Снова нажмите ОК, когда вы закончите.
Чтобы найти общий ресурс Windows на ПК с Linux, просто откройте браузер файлов и выберите «Сеть». Отсюда перейдите к папке, размещенной в Windows, и начните обмен данными.
Доступ к общему ресурсу Linux из Windows
Чтобы переместить данные в другом направлении, вам нужно установить Samba на ваш компьютер с Linux.
Затем установите имя пользователя для общего ресурса samba.
Вам будет предложено ввести пароль для новой учетной записи (не используйте для этого «имя пользователя»!).
Затем создайте каталог для обмена данными.
Затем отредактируйте файл smb.conf в своем текстовом редакторе:
Добавьте следующее в конец файла конфигурации:
Внесите необходимые изменения в соответствии со своими потребностями, затем нажмите Ctrl + X, чтобы выйти, и нажмите Y, чтобы сохранить. Далее перезапустите Samba:
После этого вы сможете получить доступ к общему ресурсу из Windows. Откройте проводник или браузер и введите IP-адрес или имя хоста удаленного устройства Linux, а затем имя папки. В нашем примере это
2. Скопируйте файлы через SSH из Windows в Linux
С включенным SSH на вашем устройстве Linux вы можете отправлять данные через командную строку с одного компьютера на другой. Однако, чтобы это работало, вам нужно настроить SSH-сервер на вашем Linux-компьютере.
Начните с открытия терминала и обновления и обновления ОС.
После завершения установите сервер SSH. Сервер OpenSSH — хороший вариант.
Подождите, пока он установит. Чтобы в любой момент проверить, работает ли сервер OpenSSH, используйте
Для передачи данных из Windows используйте SSH-клиент, например PuTTY. Это требует загрузки инструмента PSCP в вашу систему Windows для запуска вместе с PuTTY. Найти оба на домашней странице PuTTY.
Обратите внимание, что в то время как PuTTY нужно будет установить, PSCP — нет. Однако его следует сохранить в корне диска C: или настроить как переменную среды. Вам также необходимо подтвердить IP-адрес устройства Linux. Отметьте это на коробке с
После установления соединения вы можете отправлять данные следующим образом:
Перед началом передачи вам будет предложено ввести пароль для компьютера с Linux.
Хотите скопировать данные из Linux в Windows в одном сеансе SSH? Эта команда загрузит указанный файл в текущий каталог:
Обратите внимание на одиночный период в конце — включите его, иначе перевод не будет работать.
3. Как перенести файлы из Linux в Windows, используя FTP
Можно также использовать приложение протокола передачи файлов (FTP) с поддержкой SSH. Передача файлов через SFTP в пользовательском интерфейсе, управляемом мышью, возможно, проще, чем полагаться на набранные команды.
Опять же, сервер SSH должен быть запущен на компьютере с Linux перед началом работы. Вы также должны убедиться, что вы установили приложение FTP, такое как FileZilla, которое поддерживает SFTP.
Чтобы использовать этот метод, запустите FileZilla, затем откройте Файл → Менеджер сайтов. Создайте новый сайт, заботясь о том, чтобы установить протокол на SFTP. Добавьте целевой IP-адрес в Host, затем имя пользователя и пароль, установив тип входа в систему как Нормальный.
Нажмите Готово, когда будете готовы, затем используйте интерфейс FTP для перетаскивания файлов между двумя компьютерами.
4. Делитесь файлами между Linux и Windows с помощью Resilio Sync
Другим вариантом, который вы должны рассмотреть, является программа синхронизации файлов. Обычно они кроссплатформенные и используют зашифрованный ключ для управления соединением между устройствами.
Все, что вам нужно сделать, это установить приложение, назначить папку синхронизации, а затем создать ключ. Установите это на втором ПК, и ваши данные будут синхронизированы. Для этого есть два хороших варианта:
Совместное использование файлов между Windows и Linux очень просто
Если вы новичок в Linux, или вы находите Windows незнакомой, обмен данными между ними проще, чем вы думаете.
Мы рассмотрели несколько методов. Мы рекомендуем вам попробовать все из них и решить, какой из них вам наиболее удобен.
Источник
Настройка Samba
Что такое Samba?
Настройка общих папок
Linux
Установка и настройка Samba-сервер для Ubuntu выполняется следующими этапами.
Обновляем информацию о репозиториях и устанавливаем обновления для существующих пакетов в системе:
apt-get update && apt-get upgrade
Устанавливаем пакет Samba:
Создадим резервную копию файла конфигурации:
cp /etc/samba/smb.conf /etc/samba/smb.conf_sample
Создадим директории для файлов, например в каталоге /media:
Важно! По умолчанию, директория /media располагается в корне системы /, для нее редко создается свой раздел. По этой причине возможно переполнение корневого раздела. Во избежание этой неприятной ситуации, рекомендуем монтировать отдельный жесткий диск в /media/samba.
Создаем каталог для всех пользователей:
Изменим права доступа к каталогу:
Также следует воспользоваться командой chown для смены владельца и/или группы.
Создаем директорию для ограниченного круга лиц:
С помощью системных инструментов создадим группу пользователей:
Добавляем пользователей Samba:
Созданных пользователей добавляем в группу:
Изменим группу, которой принадлежит приватная директория:
chgrp smbgrp /media/samba/private
С помощью инструментов Samba создадим пароль для добавленного пользователя:
С помощью текстового редактора, например, nano, редактируем конфигурационный файл samba:
Удаляем все строки из файла. Вставляем следующие:
[global]
workgroup = WORKGROUP
security = user
map to guest = bad user
wins support = no
dns proxy = no
[public]
path = /media/samba/public
guest ok = yes
force user = nobody
browsable = yes
writable = yes
[private]
path = /media/samba/private
valid users = @smbgrp
guest ok = no
browsable = yes
writable = yes
Сохраняем используя сочетание Ctrl + X, затем нажимаем Y и Enter.
Объясним значения строк. конфигурационный файл состоит из трех секций:
В секции global присутствуют пять параметров:
Настройки директорий выполняются в соответствующих секциях:
Важно! Имя директории общего доступа, отображаемое пользователям, равно имени секции в которой оно описано.
Источник
Общий доступ к папкам в локальной сети между Ubuntu и Windows
У вас дома есть несколько устройств? Нужно ли использовать флэш-диск или SD-карту для переноса данных с Ubuntu на другой компьютер? Находите ли вы это раздражающим? Мы знаем, что это так. Поэтому мы не хотим, чтобы вы тратили свое драгоценное время, в то время как вы можете передавать свои файлы, документы и другие большие вещи быстро и легко, по локальной сети. Это одноразовая настройка, а затем с помощью нескольких щелчков мыши вы сможете обмениваться файлами между Ubuntu и Windows или любой другой системой Linux. И не волнуйтесь, это легко и займет всего немного времени.
Также стоит добавить, что это руководство должно быть полезно для любой версии ОС Linux.
Общие папки в локальной сети в Ubuntu
Если вы используете Ubuntu, есть два способа поделиться своими локальными файлами по локальной сети, чтобы получить доступ к ним с Windows или других компьютеров с Linux.
Мы рассмотрим оба метода в этой статье и дадим вам возможность решить, какой из них вы предпочитаете использовать.
Метод 1. Общий доступ к папкам в локальной сети без пароля
Вам придется выполнить некоторые настройки как в Windows, так и в Ubuntu.
Разрешение на совместное использование в Убунту
Чтобы предоставить общий доступ к папке в локальной сети в Ubuntu, щелкните правой кнопкой мыши нужную папку и выберите Локальный сетевой ресурс:
Не видите опцию локального сетевого ресурса?
Когда вы нажимаете на Локальный сетевой ресурс, вы увидите опцию общего доступа к папке. Просто отметьте опцию Общий доступ к этой папке:
Поиск и устранение неисправностей: Если у вас появится сообщение о том, что служба Sharing service не устанавливается, как показано на скриншоте ниже, просто нажмите кнопку Установить службу и следуйте инструкциям.
Когда вы отметите опцию Общий доступ к этой папке, вы увидите опцию Создать общий доступ, доступную для вас. Вы также можете разрешить другим пользователям редактировать файлы в общей папке. Также можно отметить опцию гостевого доступа.
Вы увидите, что значок папки был изменен, чтобы показать, что она была совместно использована. Чтобы остановить общий доступ к папке, просто снимите флажок Общий доступ к этой папке.
Теперь нужно получить доступ к общей папке на машине Windows.
Шаг 2: Включение совместного доступа в Windows
В Windows щелкните правой кнопкой мыши на «Этот Компьютер» или «Мой компьютер» и выберите «Добавить новое соединение».
Добавление нового соединения
Нажмите на кнопку «Далее».
Добавление нового соединения
Теперь пришло время ввести адрес сервера и имя папки, к которой мы предоставили общий доступ. Пожалуйста, введите в следующем формате.
Вы можете найти адрес вашего сервера, т.е. IP-адрес машины с Linux, введя команду ip a.
В моем случае IP-адрес машины с Linux равен 192.168.0.102, а папка, к которой я предоставил общий доступ, является общей.
Ip-адрес
Теперь добавьте местоположение следующим образом:
Ввод адреса сервера
Теперь вы увидите этот экран, просто щелкните дальше.
Добавление нового соединения
Теперь вы можете получить доступ к общей папке в разделе «Этот ПК» или «Мой компьютер» в разделе «Сетевое расположение».
Новая общая папка
Это был простой способ. Он обеспечивает доступ к этим файлам любому человеку в вашей локальной сети.
По-хорошему вы должны предусмотреть это. Устройства в домашней сети должны быть общеизвестными. Но так может быть не всегда. Что, если вы хотите, чтобы к ним имели доступ только определенные люди?
Вот здесь и появляется Samba-сервер. Рассмотрим его во второй части урока.
2. Общий доступ к папкам в локальной сети в Ubuntu с помощью парольной защиты
Для этого нам необходимо настроить сервер Samba. На самом деле, мы использовали Samba в предыдущей части этого руководства. Мы просто не делали на этом акцент. Прежде чем мы перейдем к рассмотрению вопроса о том, как настроить Samba-сервер для совместного использования локальной сети в Ubuntu, давайте сначала посмотрим, чем на самом деле является Samba.
Что такое Самба?
Samba — пакет программ, которые позволяют обращаться к сетевым дискам и принтерам на различных операционных системах по протоколуSMB/CIFS. Имеет клиентскую и серверную части. Является свободным программным обеспечением, выпущена под лицензией GPL.
Инсталляция сервера Samba на Ubuntu
Вы можете легко установить Samba на свою систему. Перед установкой обновите систему, чтобы можно было установить любые доступные обновления.
Теперь установите Samba server и несколько других необходимых вещей с помощью следующей команды:
После установки сервера Samba пришло время настроить Samba из окна графического интерфейса на общий доступ к файлам.
Настройка сервера Samba в Ubuntu
Откройте инструмент Samba Configuration из тире:
В Параметрах сервера у вас есть две вкладки, ‘Basic’ и ‘Security’. В закладке Basic у вас есть следующие опции:
Разрешение ‘Гости’ не рекомендуется, поэтому нет причин изменять настройки безопасности. Оставьте все как есть.
Готово! Вы установили Samba-сервер. Мы недалеко от того, чтобы поделиться нашей первой папкой в сети.
Создание системного пользователя для совместного использования файлов в сети
Теперь мы создадим системного пользователя для совместного использования файлов в сети. Это очень просто.
Теперь, как вы видите на изображении выше, вы можете ввести «Полное имя». При вводе ‘Полное имя’ Имя пользователя будет автоматически воспринято как ‘Полное имя’. Потому что мы создаем этого пользователя для совместного использования файлов, поэтому мы назначим тип аккаунта ‘Стандартный’.
Выполнили шаги, описанные выше? Идем дальше. Нажмите «Добавить».
Вы создали пользователя системы. Пользователь еще не активирован, поэтому мы активируем его, установив пароль для этой учетной записи. Убедитесь, что панель учетных записей пользователей разблокирована. Нажмите Аккаунт отключен и введите новый пароль, затем подтвердите пароль и нажмите Изменить.
Отлично! Мы установили и настроили Samba, мы создали системного пользователя для обмена файлами в сети с этой учетной записи, и мы активировали нашу только что созданную учетную запись. Теперь мы перейдем на Samba для последнего шага настройки общего доступа, затем мы предоставим общий доступ к папке.
Добавление нового пользователя Samba
Откройте Samba и нажмите Samba Users в разделе Preferences (Предпочтения). Заполните простую форму. Вот пара подробностей о полях формы:
После того, как вы закончите, нажмите OK. Теперь сделайте глубокий вдох. Вы успешно создали сеть с помощью Samba. Теперь перезапустите сеть или службы Samba и будьте готовы к обмену файлами с другими компьютерами.
Общий доступ к папкам или файлам по сети
Обмениваться файлами с Samba очень просто с помощью графического интерфейса пользователя. Нажмите на иконку «Плюс» в Samba и вы получите такой диалог:
Заполните поля. В ‘Directory’ выберите папку, к которой вы хотите предоставить общий доступ. Здесь вы найдете подробную информацию о полях, которые увидите:
Теперь вы можете установить разрешения для папки, к которой вы предоставляете общий доступ. Для этого перейдите на вкладку «Доступ» и отметьте пользователей, которым вы хотите предоставить общий доступ к папке. Когда вы выберете Разрешить доступ всем, папка будет доступна всем в сети.
Наконец, нажмите OK для завершения обмена. Теперь папка открыта всем желающим. Вы завершили предоставление общего доступа к папке в сети. И все? Да! А как удалить папки из сети?
Удаление общих папок
Нам также иногда нужно будет удалить некоторые папки через некоторое время из сети. Это очень просто, и вот как мы можем это сделать.
Готово! Мы также можем обмениваться файлами по сети с помощью терминала, но это настраивается не так просто, как это было в графическом интерфейсе. Если вы зададите вопросы по доступу к файлам из командной строки, то я напишу учебное пособие о том, как обмениваться файлами по сети с помощью терминала в Linux.
Итак, как вам небольшое руководство о том, как делиться файлами по локальной сети в Linux? Я надеюсь, что с помощью него вы сможете легко обмениваться файлами между Ubuntu и Windows. Если у вас есть вопросы или предложения, не стесняйтесь задавать их в поле для комментариев ниже.
Источник
Справочная информация
про свой опыт решения некоторых проблем и использования ряда возможностей ОС и приложений
четверг, 23 августа 2018 г.
Доступ к общей папке Windows из Linux
Несмотря на кажущуюся простоту доступа к общей папке Windows из Linux некоторые пользователи, особенно начавшие пользоваться Linux, могут столкнуться с проблемой, которая, на первый взгляд, может оказаться неразрешимой. При этом пользователи Windows будут говорить «ничего не знаю – от меня пули вылетают». Чтобы не возникло впечатления о «глючности» Linux попробуем в этом вопросе разобраться.
Рассматривается частный вопрос о работе в домашней сети Linux с общей папкой Windows XP с целью изменения в ней данных, то есть записи и удаления. Содержание публикации не раскрывает работу с более поздними версиями Windows (хотя ситуация с ними может быть похожей), а также работу в доменных сетях, то есть в сетях с централизованным управлением политикой паролей и базой данных пользователей, например, Windows Active Directory.
Итак, на Windows открывается папка общего доступа. Но при обращении пользователя Linux к этой папке через сетевое окружение оказывается, что «достучаться» невозможно даже к узлу.
В самом начале можно столкнуться с проблемой отсутствия доступа даже к рабочей группе.
Это может объясняется небольшой инерционностью при первом обращении по протоколу SMB, который используется для доступа к папкам и файлам Windows из сети. Подождите немного, хотя бы несколько секунд, и повторите попытку. В конечном счёте Вы компьютер «увидите».
При дальнейшем обращении высветится форма запроса полномочий доступа, например:
Причина в том, что как в Linux, так и в Windows, в целях обеспечения безопасности на уровне файловой системы действуют так называемые права на файлы и папки. А в данном случае пользователь Linux пытается обратиться к папке Windows под своим именем и паролем, о котором Windows не имеет никакого представления. Обращаться к ресурсу необходимо с использованием тех данных, о которых «знает» Windows. То есть, используя какие-то имя пользователя и пароль Windows, которые Windows известны.
Так как на русскоязычных Windows имена пользователей могут быть кириллическими, то есть, например, Администратор, Вася, Петя, красотка и т.п., то для целей предоставления доступа к папке попросите администратора компьютера Windows завести пользователя с латинским логином или переименовать существующий логин на латинские буквы. Например, можно создать специального пользователя,
у которого будет постоянный пароль и он будет находиться в группе «Пользователи». Этим можно исключить возможные дальнейшие случаи «системного непонимания» между Linux и Windows.
Права на предоставляемую в доступ папку нуждаются в некоторой корректировке, так как по умолчанию для пользователей назначаются права «только чтение».
Пояснение. Чтобы увидеть полное содержание вкладки «Безопасность» на системе Windows откройте Проводник и в разделе «Сервис – Свойства папки – Вид» снимите галочку в поле «Использовать простой общий доступ к файлам».
Не нужно выставлять «Полный доступ» ни на вкладке «Доступ – Разрешения», ни на вкладке «Безопасность», хотя очень многие поступают именно так. Полный доступ подразумевает разрешение на смену как разрешений на объект, так и его владельца. И если в какой-то мере это может быть допустимо в рамках домашней сети из 2-3 компьютеров, то в других случаях лучше так не делать.
Лучше поставить галочку в поле «Изменение» (Все – это активные, то есть не отключенные, учётные записи пользователей на компьютере Windows).
Далее необходимо перейти к вкладке «Безопасность» и для пользователей компьютера Windows поставить галочку в поле «Запись».
Но и это ещё не всё. Нужно нажать на кнопку «Дополнительно» и для строки с внесённым изменением (столбец «Разрешение – Запись») добавить галочки в полях «Обзор папок», «Содержание папки», «Удаление подпапок и файлов», «Удаление».
При этом установить галочку в поле «Применять эти разрешения к объектам и контейнерам только внутри этого контейнера» (см. рисунок выше).
Ого, сколько всего. Прямо страсти какие-то мексиканские. И всё это надо сделать на Windows.
Теперь вернёмся к вопросу обращения к папке из Linux. Вводим правильные значения. Вместо
укажем имя пользователя в формате компьютерпользователь. Так как компьютер, к которому осуществляется обращение называется H-38, а функционирующий в моей маленькой сети сервер DHCP назначает имя домена vot, то ввожу необходимые данные и, наконец-то, получаю перечень общих ресурсов компьютера H-38.
Однако при попытке обращения к папке Data система снова выдаёт запроc на введение учётных данных. При этом по умолчанию предлагается подключиться анонимно.
Вспомните, что общий доступ был предоставлен для пользователей Windows. Поэтому необходимо вводить имя и пароль конкретного пользователя.
Если пароль пользователя Windows никогда меняться не будет (а в самом начале рекомендовалось создать на Windows пользователя с неизменяемым паролем), то можно выбирать «Запомнить навсегда» и тогда пароль при обращении к папке общего доступа в дальнейшем запрашиваться не будет. Это же справедливо и для обращения к компьютеру. В приводимых примерах пароль не сохраняется.
Теперь попробуйте в общую папку Data записать какой-нибудь файл и какую-нибудь папку. Должно получиться.
При удалении данных из общей папки (как отдельных файлов, так и папок вместе с их содержимым) у Вас будет показываться предупреждение о том, что удаляемые объекты восстановлению в дальнейшем не подлежат.
Если имеется необходимость помещения удаляемых по сети объектов в Корзину, то на Windows необходимо устанавливать специальное ПО, которое, как правило, всегда коммерческое. Наилучшим решением в этой области, по моему мнению, является Executive Software Undelete.
Если Вы дочитали до конца, то, надеюсь, убедились в том, что изначально со стороны Windows оказывается пули не совсем вылетают. И кто в таком случае более «глючный»?
Увы, но виноваты в данном случае не Linux или Windows, а их пользователи. Один не до конца настроил предоставление доступа на своей системе, а второй неправильно обращается к предоставленному в доступ ресурсу.
Выходит, что для пользования компьютером в настоящее время мало уметь только нажимать на клавиши и водить по экрану мышкой. Необходима и некоторая степень понимания смысла предпринимаемых действий.
Источник
-
September 6 2011, 15:20
- IT
- Cancel
Обновлено 25.02.20
При обновлении использовались статьи:
https://www.hippolab.ru/kak-podklyuchit-setevoy-disk-windows-v-linux
https://losst.ru/montirovanie-diska-v-linux
—————————————————————————————
Обновленная история будет короче. Установить нужно только пакет:
cifs-utils
Создать каталог для монтирования:
sudo mkdir /mnt/winshare
Узнать UID и GID пользователя:
grep MY_USER_NAME /etc/passwd (через sudo id MY_USER_NAME — тоже можно)
Создать файл для хранения логина/пароля (синтаксис был описан в прошлый раз, подробности ниже):
sudo touch /root/.cred
Команда для проверки, что все работает правильно:
mount.cifs //192.168.1.1/Share /mnt/winshare -o credentials=/root/.cred,uid=1000,gid=1000
Отмонтировать каталог:
sudo umount /mnt/winshare
Добавить все в fstab (этот способ все еще работает, хотя и могут быть изменения из-за новой системы инициализации SystemD)
//192.168.0.1/Share /mnt/winshare cifs credentials=/root/.cred,uid=1000,gid=1000 0 0
Все
—————————————————————————————
Задача заняла некоторое время, чего совсем не ожидал после работы с Gnome, там все делается намного проще через меню Places — Connect to Server. В XFCE такого меню, к сожалению, не оказалось….
Итак, ставим
sudo aptitude install samba-client
sudo aptitude install samba
sudo aptitude install smbfs
Далее
sudo vi /etc/samba/smb.conf
uncomment security=user
Рестартуем samba
sudo /etc/init.d/samba restart
Смотрим, что мы можем примонтировать
sudo smbclient -L ip -U user (ip — адрес ресурса, можно и имя, если остальное настроено, user — имя пользователя для подключения)
Создаем папку куда будем монтировать и на всякий случай даем права на запись
sudo mkdir /media/share/
sudo chmod a+w /media/share
Через fstab подключать сетевую папку нет необходимости, поэтому решил все сделать через скрипт. Т.е. сначала нужно запустить скрипт, а потом уже открыть подмонтированную папку. Тут есть проблема с sudo. Чтобы все сделать правильно, нужно :
Написать скрипт для монтирования папки (сначала создать файл и пометить его как исполняемый):
touch /home/user/script.sh
/home/user/script.sh
Сам скрипт:
#!/bin/bash
sudo /bin/mount -t cifs //x.x.x.x/folder/ -o credentials=/home/user/.cred,uid=1000,gid=1000 /media/share/
Здесь указываем сервер и папку, которую нужно примонтировать. Затем идут опции, в которых есть ссылка на данные о пользователе, под которым подключаемся к win-шарам. Эти данные для пущей безопасности поместим в файл, например, /home/user/.cred, синтаксис файла весьма прост:
username=
password=
domain=
Домен можно и опустить, если нет необходимости. Идем далее по строчке из скрипта. uid и gid — в моем случае нужны, чтобы иметь права на запись в примонтированные папки, а то только root может писать. Узнать эти параметры можно запустив под пользователем
sudo id user
Ну, и в конце куда монтируем. Все ничего, да вот sudo подкидывает еще забот — не монтируется под обычным пользователем папка, если только с вводом пароля из терминала. Чтож, открываем /etc/sudoers:
sudo visudo
И пишем в конец него
user ALL = NOPASSWD: /bin/mount, /bin/umount
Теперь не будет выдаваться запрос на ввод пароля при монтировании и размонтировании из-под пользователя.
Вроде, все. Кстати, скрипт можно сунуть куда надо и будет все монтироваться автоматом.
Сегодня расскажу как смонтировать папку (например, с сайтами) из 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
В 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
Однако в моем случае это не решило проблему.
Нестандартные порты 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 проблемы с юзером и правами на новые папки и файлы
Я ведь все эту чехарду устроил ради разработки и мне нужно чтобы работа на подмонтированном диске была из под юзера
www—data юзер www-data по умолчанию не имеет доступа к консоли и под ним нельзя примонтировать диск. Также SSHFS-Win создает НОВЫЕ папки и файлы с правами 0700 (для уже созданных не меняет), а мне надо чтобы было 0755 на папки и 0644 на файлы.
Разрешаю монтирование под www-data
Это самое сомнительное решение. Во всей этой схеме. Однако для виртуалки за роутером я решил что сойдет.
sudo passwd www—data # задаем пароль для www-data |
И в файле
/etc/passwd правлю строку:
www—data:x:33:33:www—data:/home:/bin/bash |
Обрати внимание что я сменил и папку юзера на ту, которую буду монтировать. Перезагружаю виртуалку и все — под www-data можно логиниться и монтировать диски.
Права на вновь создаваемые папки и файлы под SSHFS-Win
Для задания нужных прав у WinFSP есть опции
create_file_umask и
create_dir_umask . Их можно использовать в командной строке, однако проще в SSHFS-Win-Manager . Смотри картинки ниже.
Настройки SSHFS-Win-Manager
Здесь я создал два диска с одной буквой. Все эти маунты ведут на одну и туже виртуалку VirtualBox. Но один на внутренний IP, а второй через внешний динамический IP (через роутер с проброшенными портами на 80, 443 и ssh). Т.е. дома я монтирую верхний вариант и проброс в роутере могу вообще закрыть. А если работаю вне дома, то монтирую нижний. При этом для PhpStorm это всегда один и тотже локальный диск V. Невероятно удобно.
На этой картинки расширенные настройки, которые позволяют выставить нужные мне права (0755 / 0644). Если тебе нужны другие права гугли “permission umask ”.
На данный момент схема хорошо работает. На 4G Laravel проект под PhpStorm индексируется на 20-30 секунд, что более чем приемлемо. Если есть что дополнить или вопросы — пиши комменты (могут отлетать в премодерацию — это норма, я одобрю и отвечу). Также я есть в Телеграм.