19 лучших бесплатных серверов SFTP и FTPS для Windows и Linux

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

Применение и возможности PuTTY

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

  • удаленного администрирования;
  • взаимодействия с VPS-серверами.
  • работы с Telnet-терминалами;
  • настройки маршрутизаторов через RS-232;

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

Применение и возможности PuTTY

Возможности программы

  • Сохранение информации и конфигурационных параметров для многократного применения.
  • Работа с SSH-ключами.
  • Поддержка разных версий SSH-протокола.
  • Встроенные клиенты SCP и SFTP, используемые для различных операций с файлами. Возможности первого ограничиваются только функцией копирования.
  • Перенаправление портов через протокол SSH.
  • Поддержка xterm, ECMA-48 и VT-102.
  • Возможность соединения по IPv6.
  • Работа с алгоритмами шифрования.
  • Аутентификация через ключ, который расположен на удаленной машине.
  • Соединение через proxy.
  • Использование порта RS-232.

Как скопировать файлы с сервера на сервер по протоколу SSH

1. Подключитесь к серверу по протоколу SSH используя SSH клиент, например Putty

Right → Ftp Linklogin_ftp:[email protected]_

Для максимально быстрого и удобного копирования большого количества файлов/папок больших размеров желательно использовать утилиту rsync, особенности которой — копирование без искусственных ограничений, сжатия и шифрования, из-за которых копирование по ftp и ssh и происходит не очень быстро, на фактической скорости чтения/записи дисков и пропускной способности сети . Разберем работу утилиты на примере

rsync -apogvr -e «ssh -c arcfour» —progress —bwlimit=10240 /var/www/slagor/data/www/ [email protected]:/var/www/slagor/data/www

Приведенную команду нужно запустить по ssh на исходящем сервере (с которого мы копируем данные). Также ее можно запустить и севевер получетя, но тогда нужно поменять местами получателя и отправителя ([email protected]:/var/www/slagor/data/www /var/www/slagor/data/www/). При этом утилита должна быть установлена на обеих серверах — если на каком-то она не установлена — установить ее можно командой apt-get install rsync либо yum install rsync (для centos). Так вот эта команда скопирует содержимое папки /var/www/slagor/data/www/ в папку /www пользователя slagor на сервер При этом нужно будет указать пароль пользователя slagor. Можно также использовать root либо другого пользователя, при этом папку получателя нужно указывать с учетом корня пользователя. Ключ ssh -c arcfour дополнительно ускорит rsync за счет использования более простого метода шифрования. Иногда так случается, что скорость копирования нужно ограничить (например для того, чтобы не нагружать сильно дисковую систему сервера). Для ограничения скорости можно использовать директиву —bwlimit=KBPS которая ограничить скорость ввода/вывода, Кбайт/с В примере, указанном выше команда с ограничением скорости копирования 10 МБ/С. Добавление опций заставляет rsync делать следующее: -p, —perms — перенос прав; -g, —group — установить группу конечного файла таким же, как и у исходного; -o, —owner — установить владельца конечного файла таким же, как и у исходного; Разумеется, группы и пользователи должны существовать на целевом сервере куда осуществляется копирование. Так же, бывают ситуации когда нужно исключить из копирования некоторый путь. Тогда, нужно использовать директиву: —exclude=’dir1/dir2/’ Где dir1/dir2/ — это исключаемый путь, относительно базы указанной в качестве источника копирования.

Установка ssh Ubuntu

Довольно часто может понадобиться получить доступ к удаленному компьютеру или серверу через интернет. В случае с персональным компьютером, это может понадобиться для срочного решения какой-либо проблемы, а в случае с сервером это вообще очень распространенная практика. В Linux наиболее часто для решения таких задач используется протокол ssh.

Читайте также:  Настройка терминальных пользователей в win 2008

Служба ssh позволяет получить доступ к терминалу удаленного компьютера и выполнить там все необходимые вам команды. При своей простоте она достаточно безопасна, чтобы использоваться для решения серьезных коммерческих задач, так и задач обычных пользователей. В этой статье мы рассмотрим как выполняется установка ssh Ubuntu , а также поговорим о начальной настройке ssh сервера.

Установка ssh Ubuntu

Что такое SSH?

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

За поддержку протокола SSH в Linux отвечает набор программного обеспечения OpenSSH. Это открытая реализация этого протокола, которая предоставляет все необходимые возможности. В состав пакета OpenSSH входят утилиты для установки соединения, передачи файлов, а также сам ssh сервер.

Установка OpenSSH в Ubuntu

Установка ssh Ubuntu

Установить ssh на Ubuntu будет очень просто, программа считается стандартной и используется почти везде. Хотя по умолчанию в дистрибутиве ее нет, но зато она есть в официальных репозиториях.

Поэтому для установки откройте терминал с помощью сочетания клавиш Ctrl+Alt+T и выполните команду:

sudo apt install openssh-server

Будет загружено несколько пакетов, а когда установка ssh сервера Ubuntu завершится, программа будет готова к работе. Если вы хотите чтобы служба запускалась автоматически нужно добавить его в автозагрузку. Поэтому чтобы включить ssh Ubuntu выполните:

Установка ssh Ubuntu

sudo systemctl enable sshd

  • Если затем вы захотите удалить службу из автозагрузки, используйте команду disable:
  • sudo systemctl disable sshd
  • Что касается клиента ssh, то он уже установлен в системе по умолчанию. Сейчас вы можете попробовать подключиться к локальному ssh серверу просто набрав:
  • ssh localhost

В одной из предыдущих статей мы рассматривали что означает адрес 0.0.0.0, сейчас вы можете убедиться что в пределах этой машины он значит локальный адрес:

ssh 0.0.0.0

Установка ssh Ubuntu

Точно таким способом вы можете получить ssh доступ ubuntu к любому другому компьютеру из сети. Для этого достаточно указать вместо localhost его ip адрес и имя пользователя в таком формате:

$ ssh имя_пользователя@ip_адрес

Настройка SSH в Ubuntu

С параметрами по умолчанию сервер SSH не очень безопасен поэтому перед тем, как программа будет готова к полноценному использованию ее нужно немного настроить. Все настройки сервера SSH хранятся в конфигурационном файле sshd_config, который находится в папке /etc/ssh.

Установка ssh Ubuntu
  1. Перед тем как вносить изменения в этот конфигурационный файл рекомендуется сделать его резервную копию, для этого можете использовать такую команду:
  2. sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_
  3. Дальше вы можете перейти к настройке конфигурационного файла:
  4. sudo vi /etc/ssh/sshd_config
  5. Первым делом желательно сменить порт, на котором работает ssh, возможный злоумышленник не знал включен ли у вас этот сервис. Найдите в конфигурационном файле строчку Port и замените ее значение на любое число, например, Port 2222:

По умолчанию вход от имени суперпользователя включен, рекомендуется отключить такую возможность. Для этого найдите строчку PermitRootLogin и замените ее значение на no:

Чтобы разрешить аутентификацию по ключу, а не по паролю найдите строку PubkeyAuthentication и убедитесь, что ее значение yes.

  • После того как все настройки будут завершены, сохраните изменения нажав :w и перезапустите службу ssd:
  • sudo systemctl restart ssh
  • Более подробно про настройку и использование различных тонкостей ssh рассказано в статье как использовать ssh.
  • Если вы изменили порт, то при подключении в клиенте тоже нужно указать новый порт, так как по умолчанию будет использоваться 22, например:
  • ssh -p 2222 localhost 
  • К тому же, если на компьютере установлен и настроен брандмауэр, то в нем тоже нужно разрешить доступ к новому порту ssh, для этого выполните:
  • sudo ufw allow 2222
  • Даже если служба ssh находится на порту по умолчанию, его тоже нужно открыть в брандмауэре если вы собираетесь подключаться к компьютеру через интернет:
  • sudo ufw allow 22
Установка ssh Ubuntu

Настройка ssh Ubuntu полностью завершена.

Читайте также:  Как исправить, функция Windows: Интересное не работает в Windows 10.

Выводы

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

На завершение видео, где подробно рассказано о том, что такое ssh:

Установка ssh Ubuntu

(12

SCP vs SFTP: сравнение

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

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

Безопасная передача на удалённый хост менее рискованная, если выполняется при помощи SCP. В этом протоколе нет встроенного языка команд. SFTP больше подходит для системных администраторов, которые выполняют интерактивные задачи и передачу данных на удалённый компьютер.

GUI для SSHFS

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

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

Это был новый интересный опыт для меня, так как десктопных приложений до этого я не разрабатывал. При поиске подходящего стека технологий я руководствовался желанием сделать программу для macOS и Linux (так как интерфейс командной строки SSHFS есть только для этих платформ), но впоследствии от поддержки Linux пришлось отказаться.

В итоге, выбор пал на платформу Electron, которая позволяла создавать приложения с некоторыми нативными функциями с помощью HTML/CSS/JS. C JavaScript мне часто приходилось иметь дело, и процесс разработки занял всего порядка двух дней. Еще примерно столько же понадобилось, чтобы разобраться с самим Electron и его возможностями.

Приложение SSHFS Mounter доступно на GitHub.

Работу с программой здесь я описывать не буду, все должно быть интуитивно понятно.

Кстати, одной из причин отказа от поддержки Linux, было отсутствие в Electron встроенной возможности использовать нативные элементы интерфейса ОС. В последних версиях macOS интерфейс остается более-менее одинаковым, и я постарался воспроизвести его подобие с помощью CSS, но для различных оконных интерфейсов Linux, да еще и различных тем оформления, этого было бы непросто добиться.

Также к архитектурным минусам Electron можно отнести:

  • большой размер приложения — порядка 50 Мб в сжатом виде, из которых код самого приложения занимает всего порядка 20 Кб в несжатом виде.
  • ограниченная поддержка работы с командной строкой, из-за чего невозможно обрабатывать какие-либо интерактивные запросы, например ввод пароля, парольной фразы или запроса на добавление сервера в доверенный список.
Читайте также:  Обработка прерывающих ошибок в PowerShell

Несмотря на это, я пользовался SSHFS Mounter практически ежедневно в течение нескольких месяцев.

Однако то, что практически при каждом монтировании мне было необходимо запускать еще и обычную SSH сессию (для выполнения команд на сервере), а также периодическая потребность в похожем инструменте для Linux, сподвигли меня на разработку нового инструмента управления соединениями — для командной строки (CLI).

Готовим серверную часть

Прос­тые вещи вро­де нас­трой­ки RDP или SSH-сер­вера мы рас­смат­ривать не будем. Инс­трук­ций в интерне­те име­ется тьма, а у нас объ­ем огра­ничен, да и перег­ружать статью не хочет­ся. Так­же я не ста­ну под­робно рас­ска­зывать, как реали­зовать получе­ние дан­ных с Kerio Control: на стра­нице про­екта мож­но най­ти го­товый код.

Пер­вым делом нам нуж­но раз­решить RDP-под­клю­чения на кли­ент­ских машинах в локаль­ной сети. Если там реали­зова­но цен­тра­лизо­ван­ное управле­ние типа Active Directory, тебе повез­ло. Раз­реша­ем под­клю­чение к RDP в груп­повых полити­ках. Если нет, обхо­дим рабочие мес­та ногами и раз­реша­ем на целевых локаль­ных машинах RDP. Не забыва­ем и о фай­рво­лах.

Вто­рым шагом нам понадо­бит­ся дос­тупный из интерне­та SSH-сер­вер. Тех­ничес­ки подой­дет любое решение. Я исполь­зовал VPS с Debian 10 (один мой зна­комый под­нимал такой сер­вак даже на роуте­ре, что небезо­пас­но). Даль­ше сто­ит раз­делить решения на нес­коль­ко вер­сий, кон­крет­ная реали­зация зависит от того, как орга­низо­вано получе­ние дан­ных для авто­риза­ции поль­зовате­лей.

Пер­воначаль­но у нас исполь­зовал­ся Kerio с авто­риза­цией поль­зовате­лей через AD.

Схе­ма под­клю­чения

Кли­ент под­клю­чал­ся по SSH, проб­расывал порт на API Kerio Control Server, затем под­клю­чал­ся к нему, выпол­нял поиск по задан­ным парамет­рам (логин или фамилия сот­рудни­ка), искал IP локаль­ного ПК. Далее раз­рывал SSH-соеди­нение и уста­нав­ливал новое уже с проб­росом пор­та на най­ден­ный IP, на порт RDP (3389), пос­ле чего штат­ными средс­тва­ми Windows под­нималась сес­сия RDP с переда­чей парамет­ров под­клю­чения.

Готовим серверную часть

Та­кое решение работа­ло доволь­но быс­тро, но нам это­го ста­ло мало, и мы раз­делили его на две час­ти. Сер­верный скрипт стал работать на SSH-сер­вере и сам вре­мя от вре­мени ходить в Kerio за информа­цией. Кли­ент­ская часть под­клю­чалась к сер­веру по SFTP, иска­ла нуж­ные дан­ные, офор­млен­ные в JSON, и выпол­няла под­клю­чение. В ито­ге ско­рость работы уве­личи­лась.

Ре­комен­дую сра­зу нас­тро­ить сер­вер OpenSSH с дос­тупом по клю­чам и под­готовить RSA-клю­чи для авто­риза­ции. Для это­го нуж­но соз­дать отдель­ного поль­зовате­ля и огра­ничить его в пра­вах, затем отдать ему пуб­личную часть клю­ча. Ниже при­веду часть /etc/ssh/sshd_config с нас­трой­ками этих двух поль­зовате­лей:

Match User sftp PubkeyAuthentication yes # PasswordAuthentication yes ChrootDirectory /srv/sftp ForceCommand internalsftp AllowTcpForwarding noMatch User user1 X11Forwarding no ForceCommand /usr/bin/cmatrix # Подойдет и любая другая заглушка (можно заморочиться и отправлять пользователя в песочный bash) PasswordAuthentication yes

Пер­вому поль­зовате­лю SFTP раз­решено под­клю­чать­ся толь­ко к это­му самому SFTP. Вто­рому — лишь для проб­роса пор­тов. Если у тебя исполь­зует­ся Kerio для получе­ния дан­ных о поль­зовате­лях, Active Directory или еще что‑то цен­тра­лизо­ван­ное, рекомен­дую завес­ти отдель­ную учет­ку и огра­ничить ее в пра­вах на вся­кий слу­чай.

Создание пользователя для SFTP

Создаем нового пользователя:

-m — указывает необходимость создать домашнюю директорию пользователя в каталоге /home; -s — задает оболочку пользователя — /sbin/nologin запрещает пользователю использовать shell. crazyadmin — имя пользователя

Устанавливаем созданному пользователю пароль:

Если что-то пошло не так, то всегда можно удалить пользователя командой userdel username, например:

И создадим для нового пользователя папку chroot, о её предназначении будет рассказано ниже.

Тестируем SFTP подключение с помощью WinSCP

Попробуем подключиться к поднятому нами SSH серверу по протоколу SFTP. Для этих целей воспользуемся свободным клиентом WinSCP.

Тестируем SFTP подключение с помощью WinSCP

В окне настройки подключения выберите протокол передачи файлов SFTP, укажите имя сервера и данные учетной записи Windows, под которой осуществляется подключение (возможно также настроить авторизацию по ключам).При первом подключении появится окно с предупреждением о том, что ключ хоста отсутствует в локальном кеше.

Тестируем SFTP подключение с помощью WinSCP

Если все настроено правильно, клиент должен подключиться к SFTP серверу и отобразить список файлов в домашнем каталоге пользователя (по умолчанию каталог с профилем пользователя).

Тестируем SFTP подключение с помощью WinSCP

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