Как настроить подключение к SFTP-серверу
07:24, 26.04.2021
Работу с удаленным сервером невозможно представить без безопасной системы передачи файлов между ним и пользователем – и тут без 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) нужно выполнить ряд процедур:
- Откройте PowerShell под администратором и перейдите в созданный вами ранее целевой каталог командлетом Cd C:\catalog_OpenSSH. Затем путь к нему необходимо добавить внести в переменную окружения Path.
- Запустите инсталляцию командой: .\install-sshd.ps1 (успешность подтвердит сообщение с зелеными буквами). После этого следует сгенерировать ключи для запуска службы SSH указанием: ssh-keygen.exe -A
- В PowerShell запустите автозапуск службы SSH двумя последовательными командами: Set-Service -Name sshd -StartupType ‘Automatic’ и с новой строки Start-Service sshd.
- Откройте порт TCP 22 для входящего на SSH-сервер трафика. Это можно сделать в брандмауэре через PowerShell командой: New-NetFirewallRule -Protocol TCP -LocalPort 22 -Direction Inbound -Action Allow -DisplayName SSH
- Откройте конфигурационный файл (он расположен в 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, но и любыми другими задачами в настройке вашего сервера!