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

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

26.04.2021
Автор: HostZealot Team
2 мин.
4520

Работу с удаленным сервером невозможно представить без безопасной системы передачи файлов между ним и пользователем – и тут без 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, но и любыми другими задачами в настройке вашего сервера!

# Как сделать Поделиться:
Статьи по Теме