Как настроить подключение к SFTP-серверу

Как настроить подключение к SFTP-серверу

07:24, 26.04.2021

Содержание статьи
arrow

  • Что такое SFTP?
  • Как проходит настройка SFTP?
  • Настройка сервера с SSH File Transfer Protocol в Windows
  • Вместо P.S.

Работу с удаленным сервером невозможно представить без безопасной системы передачи файлов между ним и пользователем – и тут без SFTP обойтись сложно. Но чтобы протокол работал корректно, критически важна правильная настройка SFTP с разными версиями как Linux, так и Windows. В этой статье мы расскажем, как сделать это быстро и легко!

Что такое SFTP?

SSH File Transfer Protocol – именно так расшифровывается аббревиатура SFTP. В полном названии отлично видна главная особенность протокола: он построен на технологии Secure Shell. За счет этого передача всей информации зашифрована: от файлов до имен пользователей и паролей. Даже в FTPS (FTP с SSL), не говоря уже об обычном FTP, ограничений больше. Кстати, если вникнуть в детали, SFTP вообще не связан с FTP – у них разная технологическая база.

Кроме высокой защищенности SSH File Transfer Protocol имеет и другие плюсы:

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

Отдельно надо оговорить: протокол SFTP используется на UNIX-системах, и часто в стандартных утилитах уже есть и клиент, и сервер SSH.

Как проходит настройка SFTP?

Установка и настройка SSH File Transfer Protocol не слишком сложная, но рассказ стоит разделить на два направления – в зависимости от используемой ОС.

Настройка сервера с SSH File Transfer Protocol в Linux

В первую очередь следует установить на стороне сервера OpenSSH и на стороне пользователя SSH-пакет. Первая задача решается такими командами:

  • Ubuntu и Debian: sudo apt install openssh-server
  • CentOS и RHEL: sudo yum –y install openssh-server openssh-clients

А чтобы организовать доступ с компьютера, нужна команда следующего вида:

  • sudo apt install ssh

После этого можно перейти непосредственно к настройке SFTP. Всю работу стоит разделить на несколько этапов:


1. Создание групп и пользователей. Создавая пользователей и разделяя их по группам, вы сможете тонко регулировать их права, возможности и ограничения по доступу к тому или иному каталогу на сервере. Для этого необходимо выполнить:

  • создать группу: sudo groupadd GROUPNAME
  • добавить в нее пользователя: sudo useradd -g GROUPNAME USERNAME
  • задать пароль пользователя: sudo passwd PASSWORD


2. Создание каталогов. Если на сервере есть корневой каталог (назовем его для примера catalog), каждый пользователь может иметь доступ лишь к определенной «своей папке» – именно в нее он попадает при входе. При этом можно настроить SFTP так, чтобы пользователь мог видеть содержимое папки, но файл загружал в отдельный раздел (допустим, zagruzka). Вам понадобятся такие команды:

  • sudo mkdir -p /catalog/USERNAME/zagruzka
  • sudo chown -R root.GROUPNAME /catalog/ USERNAME
  • sudo chown -R USERNAME.GROUPNAME /catalog/USERNAME/zagruzka


3. Настройка sshd_config. Это необходимо для двух задач. С одной стороны, у пользователя будет открываться SFTP (а не обычная оболочка SSH). С другой же, он не сможет подняться в каталоге на уровень выше и видеть разделы для других пользователей. Для этого в файле /etc/ssh/sshd_config добавьте такой код:

Match Group GROUPNAME

     ChrootDirectory /catalog/%u

     ForceCommand internal-sftp


4. Перезагрузка. Чтобы вся система заработала, остается перезапустить ее:

  • sudo systemctl restart sshd


Все – настройка на Linux SFTP завершена! Вход аналогичен такой же команде под SSH. Для управления содержимым сервера используйте специальный синтаксис:

COMMAND [SOURCE] [DESTINATION]

Приведем несколько наиболее используемых примеров:


  • загрузка с удаленного сервера на локальный: GET photo1.jpg ~/Photos
  • загрузка с локального на удаленный: PUT ~/prices/price.pdf zagruzka/
  • удаление файла на удаленном сервере: RM zagruzka/file_325.xlsx

Настройка сервера с SSH File Transfer Protocol в Windows

Изначально настольные и серверные ОС от Microsoft не поддерживали протокол SFTP, потому для работы с ним требовались сторонние инструменты. Но сегодня уже существует официальный пакет для таких задач – Win32-OpenSSH. Запуск и настройка зависят от того, какая версия операционной системы установлена.

1. Windows Server 2019 или Windows 10 1803+

Эти варианты ОС от Microsoft предлагают максимально простой сценарий старта SFTP-сервера, ведь Win32-OpenSSH фактически есть в них. Способов установки два:

  • через PowerShell: задайте командлет вида Add-WindowsCapability -Online -Name OpenSSH.Server*
  • через интерфейс: Settings » Apps » Optional Features » Add a feature » Open SSH Server » Install

Остается узнать адреса, по которым будет расположено все самое важное:

  • исполняемые файлы: C:\Windows\System32\OpenSSH\
  • конфигурационный файл: C:\ProgramData\ssh\
  • лог: C:\Windows\System32\OpenSSH\Logs\sshd.log\
  • ключи: %USERNAME%\.ssh\

2. Windows Server 2016/2012 R2

В этой ОС, как и в ранних «десятках», для настройки SFTP надо скачать OpenSSH – вариант для 64-битной системы ищите на GitHub. После распаковки архива в нужный каталог (к примеру, C:\catalog_OpenSSH) нужно выполнить ряд процедур:


  1. Откройте PowerShell под администратором и перейдите в созданный вами ранее целевой каталог командлетом Cd C:\catalog_OpenSSH. Затем путь к нему необходимо добавить внести в переменную окружения Path.
  2. Запустите инсталляцию командой: .\install-sshd.ps1 (успешность подтвердит сообщение с зелеными буквами). После этого следует сгенерировать ключи для запуска службы SSH указанием: ssh-keygen.exe -A
  3. В PowerShell запустите автозапуск службы SSH двумя последовательными командами: Set-Service -Name sshd -StartupType ‘Automatic’ и с новой строки Start-Service sshd.
  4. Откройте порт TCP 22 для входящего на SSH-сервер трафика. Это можно сделать в брандмауэре через PowerShell командой: New-NetFirewallRule -Protocol TCP -LocalPort 22 -Direction Inbound -Action Allow -DisplayName SSH
  5. Откройте конфигурационный файл (он расположен в C:\ProgramData\SSH\) и убедитесь, что в директиве Subsystem sftp корректно указан нужный файл – то есть sftp-server.exe.


После настройки в Windows SFTP остается только внести ряд изменений в файл конфигурации. Приведем несколько стандартных примеров:


  • AllowGroups corp\admingroup # открывает доступ к OpenSSH пользователям заданной группы
  • AuthenticationMethods password # запрещает SSH-ключи (вход будет только по паролю пользователя)
  • ForceCommand internal-sftp #

ChrootDirectory C:\inetpub\wwwroot\ftpfolder # создает и задает каталог входа для SFTP-пользователя

После всех корректировок запускайте клиент SFTP (например, WinSCP), вводите в нем тип и имя сервера, учетные данные – и логиньтесь (при первом подключении должно появиться сообщение об отсутствии в кэше ключа хоста). Если открылся привычный интерфейс файл-менеджера с каталогом пользователя на сервере, то значит: все настроено правильно!


Вместо P.S.

Практика показывает: хотя настройка SFTP достаточно проста, во многих случаях у пользователей возникают различные вопросы и нестандартные ситуации. Чтобы разобраться в них, не помешает грамотная помощь – в виде профессиональной техподдержки от провайдера. Мы в компании HostZealot уделяем ей максимум внимания. Заказываете ли вы VPS на Windows или Linux, вы сможете положиться на консультации наших специалистов – они помогут не только с отладкой SSH File Transfer Protocol, но и любыми другими задачами в настройке вашего сервера!

views 1m, 21s
views 2
Поделиться

Была ли эта статья полезной для вас?

Популярные предложения VPS

Другие статьи на эту тему

cookie

Принять файлы cookie и политику конфиденциальности?

Мы используем файлы cookie, чтобы обеспечить вам наилучший опыт работы на нашем сайте. Если вы продолжите работу без изменения настроек, мы будем считать, что вы согласны получать все файлы cookie на сайте HostZealot.