- Как использовать SSHFS для монтирования удаленных каталогов через SSH
- Установка SSHFS
- Установка SSHFS в Ubuntu и Debian
- Установка SSHFS на CentOS
- Установка SSHFS на macOS
- Установка SSHFS в Windows
- Монтирование удаленной файловой системы
- Монтирование удаленной файловой системы в Windows
- Отключение удаленной файловой системы
- Выводы
- Монтирование удаленных файловых систем при помощи SSHFS
- Установка SSHFS
- В Ubuntu/Debian
- В Mac OSX
- В Windows
- Монтирование удаленной файловой системы
- Демонтирование удаленной файловой системы
- Постоянное монтирование удаленной файловой системы
- Монтирование удаленной файловой системы Windows при помощи Win-SSHFS
- Использование удаленной точки монтирования
- HackWare.ru
- Этичный хакинг и тестирование на проникновение, информационная безопасность
- SSH (ч.6): Подсказки и сложные случаи использования OpenSSH
- Оглавление
- Туннелирование с SSH. Открытие графической программы, расположенной на удалённом компьютере, по SSH
- Использование SSH в качестве прокси для доступа к локальным ресурсам удалённого компьютера
- Установка VPN через SSH
- Как редактировать файл на другом компьютере через ssh
- Как сравнить файлы на удалённом компьютере (выполнить команду diff) через SSH
- Как настроить VNC через ssh
- Как включить форвардинг (пересылку) X11 с использованием ssh
- Сохранение запущенной команды после закрытия SSH
- Сетевая файловая система SSHFS
Как использовать SSHFS для монтирования удаленных каталогов через SSH
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, набрав:
Установка SSHFS на CentOS
В CentOS и других производных от Red Hat выполните следующую команду для установки sshfs:
Установка SSHFS на macOS
Пользователи macOS могут установить клиент SSHFS, загрузив пакеты FUSE и SSHFS с сайта osxfuse или через Homebrew:
Установка SSHFS в Windows
Пользователям Windows необходимо установить два пакета: WinFsp и SSHFS-Win.
Монтирование удаленной файловой системы
Следующие инструкции применимы для всех дистрибутивов Linux и macOS.
Чтобы смонтировать удаленный каталог, пользователь SSH должен иметь к нему доступ. Команда монтирования SSHFS принимает следующий вид:
Команда sshfs прочитает файл конфигурации SSH и использует настройки для каждого хоста. Если удаленный каталог не указан, по умолчанию используется домашний каталог удаленного пользователя.
Например, чтобы смонтировать домашний каталог пользователя с именем «linuxize» на удаленном хосте с IP-адресом «192.168.121.121», сначала создайте каталог, который будет служить точкой монтирования, это может быть любое место, которое вы хотите:
Затем используйте команду sshfs для монтирования удаленного каталога:
Вам будет предложено ввести пароль пользователя. Чтобы не вводить пароль каждый раз при монтировании удаленного каталога, сгенерируйте ключи SSH и настройте вход SSH без пароля .
Теперь вы можете взаимодействовать с каталогами и файлами, расположенными на удаленном сервере, точно так же, как и с локальными файлами. Например, вы можете редактировать, удалять, переименовывать или создавать новые файлы и каталоги.
Если вы хотите навсегда смонтировать удаленный каталог, вам необходимо отредактировать файл /etc/fstab на локальном компьютере и добавить новую запись монтирования. Таким образом, когда ваша система загружается, она автоматически монтирует удаленный каталог.
Чтобы смонтировать удаленный каталог через SSHFS из /etc/fstab , используйте fuse.sshfs в качестве типа файловой системы.
При создании постоянного монтирования убедитесь, что вы можете подключить удаленный хост с помощью аутентификации на основе ключа SSH.
Монтирование удаленной файловой системы в Windows
Пользователи Windows могут использовать проводник Windows, чтобы подключить сетевой диск к удаленному каталогу на SSH-сервере.
Откройте проводник Windows, щелкните правой кнопкой мыши «Этот компьютер» и выберите «Подключить сетевой диск». Выберите диск для монтирования и в поле «Папка» введите удаленного пользователя, сервер и путь в следующем формате:
На момент написания этой статьи SSHFS-Win не поддерживает аутентификацию на основе ключей, поэтому удаленный сервер SSH должен быть настроен для принятия аутентификации на основе пароля.
Для получения более подробной информации обратитесь к руководству по SSHFS-Win .
Отключение удаленной файловой системы
Чтобы отсоединить смонтированную файловую систему, используйте команду umount или fusermount после которой fusermount каталог, в котором она была смонтирована (точка монтирования):
Выводы
В этом руководстве вы узнали, как использовать SSHFS для монтирования удаленного каталога через SSH. Это может быть полезно, если вы хотите взаимодействовать с удаленными файлами с помощью приложений на локальном компьютере.
Чтобы получить полный список опций sshfs, введите в терминале man sshfs .
Вы также можете ограничить доступ пользователей к их домашнему каталогу, настроив среду SFTP Chroot Jail и изменив порт SSH по умолчанию, чтобы добавить дополнительный уровень безопасности на ваш сервер.
Если у вас есть какие-либо вопросы или отзывы, не стесняйтесь оставлять комментарии.
Монтирование удаленных файловых систем при помощи SSHFS
Как правило, обмен файлами с сервером – достаточно громоздкий процесс. Представьте себе разработку сценария использования, в код которого приложения вносятся с удаленной машины; при этом сценарий нужно неоднократно подгружать на виртуальный сервер. Это может доставить немало хлопот.
К счастью, файловую систему VPS можно смонтировать на локальном компьютере; это позволяет быстро вносить изменения и использовать сервер как локальное хранилище. Данная статья продемонстрирует процесс монтирования удаленной файловой системы через SSH.
Установка SSHFS
В Ubuntu/Debian
SSHFS (или Secure SHell FileSystem) – это программное обеспечение на основе Linux, которое позволяет монтировать удаленные файловые системы на локальную машину по протоколу SSH.
В системах Ubuntu и Debian (а также подобных) эту программу можно установить при помощи apt-get:
sudo apt-get install sshfs
В Mac OSX
Система Mac OSX тоже позволяет использовать SSHFS . Для этого нужно загрузить FUSE и SSHFS с сайта osxfuse.
В Windows
Чтобы установить SSHFS в Windows, нужно загрузить последнюю версию пакета win-sshfs из Google Code Repository (прямую ссылку на файл можно найти ниже). Загрузив пакет, дважды щелкните для запуска программы установки. Возможно, будет предложено загрузить дополнительные файлы, в таком случае установщик скачает и установит .NET Framework 4.0.
Монтирование удаленной файловой системы
Нижеприведенные инструкции подходят для систем Ubuntu, Debian и OSX. Пользователи Windows могут найти инструкции в конце данного руководства.
Итак, для начала нужно создать локальный каталог, в который будет смонтирована удаленная файловая система.
sudo mkdir /mnt/droplet
Теперь можно использовать sshfs для монтирования удаленной файловой системы на локальную при помощи следующей команды. На этом этапе будет предложено ввести корневой пароль виртуального сервера.
sudo sshfs root@xxx.xxx.xxx.xxx:/ /mnt/droplet
Если на сервере настроена авторизация при помощи ключей ssh, запустите следующую команду, чтобы sshfs мог использовать открытые ключи. При этом будет запрошена парольная фраза, установленная при создании пары ключей.
sudo sshfs -o IdentityFile=
/.ssh/id_rsa root@xxx.xxx.xxx.xxx:/ /mnt/droplet
Теперь можно работать с файлами сервера, как будто они находятся на физическом устройстве, подключенном к локальной машине. Например, если перейти в каталог /mnt/droplet на локальной машине и создать в нем файл, этот файл появится на виртуальном сервере. Точно так же можно скопировать файлы в каталог /mnt/droplet, и они будут загружены на сервер в фоновом режиме.
Важно отметить, что монтирование файловой системы сервера на локальную машину лишь временно. Если виртуальный сервер или локальная компьютер выключен или перезапущен, нужно будет повторить описанный выше процесс, чтобы снова смонтировать систему.
Демонтирование удаленной файловой системы
Если точка монтирования (mount point) больше не нужна, можно демонтировать файловую систему при помощи команды:
sudo umount /mnt/droplet
Постоянное монтирование удаленной файловой системы
SSHFS позволяет сделать точки монтирования удаленных файловых систем перманентными (то есть, создавать точки монтирования, которые будут сохраняться даже после перезагрузки локальной машины и виртуального сервера). Для того, чтобы создать постоянную точку монтирования, нужно отредактировать файл /etc/fstab на локальной машине; благодаря этому файловая система будет монтироваться после перезагрузки автоматически.
Итак, отредактируйте файл /etc/fstab:
sudo nano /etc/fstab
В нижней части файла внесите следующую запись:
Сохраните изменения и при необходимости перезапустите систему.
Нужно отметить, что постоянное монтирование файловой системы виртуального сервера на локальную машину – это потенциальный риск безопасности. В случае взлома локальной машины атакующий получает прямой доступ к виртуальному выделенному серверу. Потому устанавливать постоянные точки монтирования не рекомендуется.
Монтирование удаленной файловой системы Windows при помощи Win-SSHFS
После запуска программы win-sshfs появится графический интерфейс, который упростит процесс монтажа удаленной файловой системы.
- Нажмите кнопку Add в левом нижнем углу окна.
- Введите имя файловой системы в поле Drive Name.
- Введите IP сервера в поле Host.
- Укажите порт SSH (если порт не был изменен, оставьте значение 22).
- Укажите имя пользователя в поле Username (укажите root, если в системе нет дополнительных аккаунтов).
- Введите пароль SSH (имейте в виду: в Windows желательно использовать авторизацию при помощи пароля, а не с помощью ключей SSH).
- Укажите точку монтирования в поле Directory (введите /, чтобы смонтировать систему в root-каталог; аналогично, можно ввести /var/www или
/, чтобы указать домашний каталог).
Теперь файловая система виртуального сервера будет доступна через Мой компьютер, обозначенная так, как было указано в пункте 8.
Использование удаленной точки монтирования
Удаленное монтирование работает аналогично локальному хранилищу: пользователь может создавать, копировать, перемещать, редактировать, сжимать файлы, а также выполнять всевозможные операции файловой системы, требующие использования программ или скриптов, которые невозможно запустить на удаленном сервере.
Как правило, точку монтирования используют в случае, если на VPS размещен веб-сайт, который требует постоянного внесения изменений. Монтирование удаленной файловой системы на локальную позволяет запускать любой редактор кода, интерфейс IDE или текстовый редактор; все внесенные на локальном компьютере изменения будут сразу же отражены на виртуальном сервере.
Также монтирование значительно упрощает работу с серверами, используемыми для тестирования кода, поскольку оно позволяет быстро вносить изменения в код и сразу же тестировать их без необходимости изменять код сначала локально, а затем удаленно (что также избавляет от необходимости подгружать множество копий файлов для проверки небольших изменений в коде).
HackWare.ru
Этичный хакинг и тестирование на проникновение, информационная безопасность
SSH (ч.6): Подсказки и сложные случаи использования OpenSSH
Оглавление
Туннелирование с SSH. Открытие графической программы, расположенной на удалённом компьютере, по SSH
Для следующего фокуса нужно два компьютера с системой Linux. К сожалению, даже Cygwin с этим трюком не справляется. Причём оба Linux’а должны быть с графическим пользовательским интерфейсом.
Среди всего прочего, что происходит когда устанавливается соединение с удалённым хостом через SSH, это создание зашифрованного туннеля, который образуется между локальной и удалённой системами. Обычно, этот туннель используется для того, чтобы набранные на локальной машине команды безопасно были переданы удалённой машине, а результат, также безопасно, прислан обратно.
В добавок к этой базовой функции, протокол SSH позволяет переправлять большинство типов трафика по зашифрованному туннелю, создавая некого рода VPN (виртуальную частную сеть) между локальной и удалённой системами.
Пожалуй самая часто используемая из этих функций — это возможность транслировать трафик систем X Window. На системе с запущенным X сервером (это машины, которые имеют графический пользовательский интерфейс) возможно запустить программу X клиента (графическое приложение) на удалённой системе и видеть результаты её работы на локальной системе. Сделать это просто. Например, я хочу подключиться к удалённому хосту АДРЕСАТ и на нём я хочу запустить программу КОМАНДА. При этом видеть графический вывод этой программы я смогу на локальном компьютере. Делается это так:
Т.е. SSH запускается с ключом -X. А затем просто запускается программа.
Я нахожусь в Arch Linux. Я успешно логинюсь к удалённому компьютеру по SSH. После этого я запустил программу recon-ng. Этой программы даже нет на Arch Linux, но она точно есть в Kali Linux, к которой я и подключился. Результат работы этой программы я могу видеть на экране так, будто бы программа запущена локально. Но, повторюсь, я хочу, чтобы вы это поняли, запущенной программы recon-ng на локальном компьютере нет. Если я захочу сохранить результат работы recon-ng (или любой другой программы, открытой таким образом), то окажется, что она работает в окружении удалённого компьютера, видит его файловую систему и т. д. Это удобно, когда вы хотите настроить удалённый компьютер используя графический интерфейс.
На некоторых системах для этого «фокуса» нужно использовать опцию «-Y» вместо опции «-X».
Использование SSH в качестве прокси для доступа к локальным ресурсам удалённого компьютера
Подробности смотрите в разделах:
Установка VPN через SSH
В SSH есть встроенные возможности туннелирования — программа автоматизирует создание туннельных интерфейсов на сервере и клиенте, подробности в этом разделе.
Как редактировать файл на другом компьютере через ssh
Когда нужно отредактировать файл, размещённый на удалённом хосте, было бы здорово, если бы можно было отредактировать его локально так, будто бы это локальный файл. Конечно, можно поднять NFS через ssh туннель для достижения этого, но это было бы слишком излишним для использования один раз. Отсюда вопрос: есть ли способ отредактировать через ssh размещённый на другом компьютере файл?
Вот когда vim (сокращение от «Vi IMproved» — улучшенный Vi) может помочь. vim можно рассматривать как «vi на стероидах», с расширяемыми функциями, которые здорово улучшают дефолтное окружение редактора vi. Расширяемость vim достигается благодаря использованию «плагинов». Один из таких плагинов — это netrw, который задействует чтение и запись файлов по сети. netrw поддерживает различные протоколы уровня приложений, включая ftp, http, scp, rsync и rcp.
Если вы хотите отредактировать удалённый файл через ssh с использованием vim, вы можете сделать так.
Реальный пример команды:
Обратите внимание на двойной слеш «/» для каталога root на удалённом хосте. Вышеприведённая команда vim откроет файл, размещённый на удалённом хосте для редактирования. За сценой, vim использует scp для получения запрошенного файла с удалённого хоста, размещает файл в /tmp и, наконец, открывает его для редактирования.
Когда вы попытаетесь сохранить изменения в файле, изменения, в первую очередь, будут применены к локальной копии в /tmp, которая затем выгрузиться через scp на удалённый хост.
Поскольку за сценой сетевая передача осуществляется плагином netrw, вы можете редактировать любой удалённый файл транспарентно, используя традиционный интерфейс vi.
Внимание, этот фокус не работает в Cygwin — только в настоящем Linux.
Как сравнить файлы на удалённом компьютере (выполнить команду diff) через SSH
diff — это утилита командной строки, которая сравнивает содержимое двух файлов (или директорий) и построчно показывает в чём они различаются. Очень просто пользоваться diff, когда оба файла размещены на локальном хосте. А как быть если (один или оба) входных файла размещены на удалённом хосте? Вы можете использовать SSH для сравнения этих файлов по сети. Здесь как применить команду diff к удалённым файлам по SSH.
Утилита diff может принимать один операнд в форме stdin (стандартного ввода) (представляется как «—«), и вы можете использовать эту особенность для достижения цели по применению diff через SSH следующим образом.
ssh ПОЛЬЗОВАТЕЛЬ@УДАЛЁННЫЙ_ХОСТ «cat remote_file.txt» | diff — local_file.txt
Вышеприведённая команда запросит у вас SSH пароль для удалённого хоста. После корректного ввода пароля, команда прочитает содержимое удалённого файла через SSH а затем передаст его по трубе в утилиту diff для сравнения с локальным файлом.
Другой метод для сравнения содержимого файла по SSH — это ясное использование перенаправления ввода. Чтобы использовать этот второй метод вы должны для начала включить беспроводной вход по ssh в удалённый хост(ы). Подразумевая что это готово, вы можете делать следующее:
Для сравнения (diff) локального файла и удалённого файла:
Для сравнения (diff) двух удалённых файлов:
Обратите внимание, что последние команды потерпят неудачу, если удалённые хосты потребуют от вас ввода пароля SSH для доступа. Также запомните, что вышеприведённое перенаправление ввода не поддерживается шеллом sh. Используйте шелл bash или что-нибудь совместимое.
Как настроить VNC через ssh
По своей природе VNC — это не безопасный протокол. Хорошо известнен риск безопасности VNC: соединение с сервером VNC осуществляет по сети через не зашифрованный канал. Т.е. кто угодно может стащить установленную VNC сессию. Для защиты от VNC сниффинга, вам следует попробовать дополнительные внеполосные механизмы шифрования, под или над соединением VNC.
Один из таких механизмов — это настройка VNC сессии через SSH туннель. В этом уроке я опишу как настроить VNC через SSH на Linux.
Я предполагаю, что у вас уже есть где-то в сети VNC сервер, к которому мы будем коннектится.
Чтобы создать SSH туннель к удалённому хосту, где запущен VNC сервер, удалённый хост должен также иметь запущенный SSH. Поэтому для начала установите сервер OpenSSH на удалённый хости (как это сделать рассказано в первой части).
Следующий шаг — это создание SSH туннеля с локального хоста на удалённый хост. Чтобы это сделать, запустите следующую команду. Здесь 5900 — это номер порта, который прослушивает удалённый VNC сервер.
После введение SSH пароля и успешного входа, будет установлен SSH туннель между 127.0.0.1:5900 и remote_host:5900.
Теперь вы можете продолжать и запустить клиент VNC на локальном хосте. В вашем VNC клиенте соединитесь к 127.0.0.1:5900 вместо удалённого VNC сервера. Тогда трафик VNC будет перенаправляться через SSH туннель между вами и удалённым сервером VNC и, следовательно, он будет обезопасен от перехвата пакетов.
Как включить форвардинг (пересылку) X11 с использованием ssh
Пересылка X11 — это механизм, который позволяет графическому интерфейсу программ X11, запущенных на удалённом сервере Linux, быть отображёнными на локальной клиентской машине. За сценой, вывод X11 удалённо запущенной программы, санкционирован для отправки на локалхост через соединение X11 между клиентом и удалённым сервером. SSH имеет опции для безопасного туннелирования таких X11 соединений так, что сессия пересылки X11 получается зашифрована и инкапсулирована. Если вы хотите настроить форвардинг X11 через SSH, то ознакомьтесь с этой инструкцией.
Для пересылки X11, не требуется, чтобы на удалённый серверный хост имел полную установленную систему X11. Тем не менее на серверном хосте нужен как минимум установленный xauth. xauth — это утилита, которая поддерживает конфигурацию Xauthority, используемую сервером и клиентом для аутентификации X11 сессий. Для установки xauth, сделайте следующее на удалённом сервере:
Для Debian, Linux Mint, Ubuntu, Kali Linux и их производных:
На Arch Linux и производных:
Затем включите перенаправление X11 в sshd, добавив в файл /etc/ssh/sshd_config директиву:
Чтобы изменения вступили в силу, перезапустите службу sshd.
Вышеприведённая настройка включит пересылку X11 на всей системе серверного хоста. Если вместо этого вы хотите включить пересылку X11 на основе индивидуального пользователя, вы можете использовать специфичный для каждого пользователя конфигурационный файл ssh (например, $HOME/.ssh/config). Таким образом, вы можете использовать пересылку X11 только когда вы запускаете ssh в конкретном пользовательском аккаунте.
В отличие от удалённого серверного хоста, машине с локальным клиентом нужна установленная система X11 для отображения удалённой запущенной программы X11. Если всё так, то в этом случае вы можете открыть ssh соединения из локальной машины на удалённый сервер следующим образом.
После входа, вы можете обычным образом запустить любую программу X11 на удалённом сервере, и её вывод будет отображён на локальной клиентской машине.
Сохранение запущенной команды после закрытия SSH
Если в SSH вы запустили команду, то после отключения от SSH, эта команда будет сразу же остановлена. Даже если вы перевели её в фон с помощью &:
Есть разные возможности сделать так, чтобы команда не только продолжила работу после отсоединения от SSH, но и подключиться к этой команде вновь, чтобы просмотреть её вывод, результаты работы. Информацию об этом смотрите в разделе «5 способов сделать так, чтобы программа не останавливалась после отключения SSH».
Сетевая файловая система SSHFS
В разделе «SSH (ч.5): Копирование файлов с помощью scp и sftp» уже рассмотрены способы, с помощью которых можно копировать данные с удалённым сервером. В том числе показано как интегрировать доступ к файлам по SSH через популярные файловые менеджеры. При всей простоте описанных способов, у них есть недостаток — он работает только в приложениях, которые поддерживают протокол SFTP.
Имеется более универсальный вариант, который является также весьма простым. Этот способ требует установки двух дополнительных пакетов:
- sshfs — позволяет монтировать удалённую файловую систему используя SFTP. Говоря простым языком, файлы удалённого сервера будут как будто бы частью вашей файловой системы. Следовательно, любы приложения смогут с ними работать.
- fuse — FUSE (Filesystem in Userspace), то есть файловая система в пространстве пользователя. Является интерфейсом к файловой системе, позволяет монтировать файловую систему с правами обычного пользователя.
Установка необходимых пакетов в Debian, Linux Mint, Ubuntu, Kali Linux и их производных:
Установка необходимых пакетов в Arch Linux, BlackArch и их производных:
После установки пакетов, создайте папку, куда будет монтироваться удалённая файловая система — это должна быть папка, к которой у вас есть доступ без повышенных привилегий, к примеру:
Для монтирования нужно запустить команду вида:
Если нужно указать порт, то используйте опцию -p в конце команды.
К примеру, мне нужно смонтировать директорию /root хоста 185.117.153.79 где я хочу выполнить вход от пользователя root; при этом на локальной системе я хочу выполнить монтирование в папку Downloads/ssh; на удалённой системе SSH работает на порту 2222, тогда моя команда будет такой:
Теперь файлы папки /root хоста 185.117.153.79 будут доступны в Downloads/ssh на локальном компьютере. Обратите внимание, что команда sshfs не потребовала sudo.
Для автоматизации, можно настроить вход на SSH по ключу (без пароля), и сохранить команду монтирования с sshfs в файл/скрипт для быстрого подключения.