Настройка SFTP для управления файлами на сервере

Для передачи файлов на сервер чаще всего используют протоколы передачи данных FTP (File Transfer Protocol) и SFTP (SSH File Transfer Protocol). SFTP безопасней в отличие от FTP: FTP не умеет шифровать свой трафик, передачи идут открытым текстом — все данные (имена пользователей, пароли, команды и т.д.) могут быть перехвачены и прочитаны. SFTP же предоставляется с большинством реализаций Secure Shell или SSH — протокола, который для аутентификации пользователя использует криптографию и шифрует любые соединения между двумя компьютерами. Про настройку SSH мы подробно написали в статье «‎Как подключиться к серверу по SSH?».

SFTP был разработан намного позднее FTP, в 2006 году. Он, также как и FTP, используется для копирования и других операций с файлами, но все это делается с использованием защищенного соединения на двух сторонах — клиентской и серверной.

По умолчанию SFTP использует протокол SSH, поэтому в SFTP доступны те же методы авторизации, что и в SSH.

Настройка в панели ISPmanager

Если для управления сервером вы используете ISPmanager, то создать пользователя с SFTP-доступом на сервер проблем не составит:

  1. перейдите в раздел «Учетные записи‎» — «Пользователи‎»,
  2. создайте нового или измените уже существующего пользователя,
  3. в настройках пользователя нужно дать доступ к shell:

В этом случае у пользователя будет доступ на сервер по обоим защищенным протоколам: SSH и SFTP. Нужно учитывать, что ISPmanager настраивает пользователей, ограничивая их доступ пользовательским каталогом, это значит, что у пользователя sftp_user будет доступ только в каталог /var/www/sftp_user/data и его подкаталоги.

Настройка через консоль

Если вы не используете панель ISPmanager, то работу SFTP можно настроить вручную. На наших VDS OpenSSH устанавливается по умолчанию (справедливо для серверов с операционными системами linux установленных из наших шаблонов). Для того, чтобы включить sftp-server в sshd, необходимо указать его в конфигурационном файле /etc/ssh/sshd_config в качестве подсистемы:

Subsystem sftp /usr/lib/openssh/sftp-server

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

Для подключения можно использовать разные приложения, например, FileZilla. Для подключения нужно указать хост, имя пользователя, пароль и порт на котором работает SFTP.

Изначально доступ будет только для пользователя root. Чтобы настроить работу других пользователей на SFTP нужно:

  1. cоздать пользователя, под которым будем подключаться по sftp:
    useradd -d /dev/null -M -s /bin/bash sftp_user
  2. установить пароль для пользователя:
    passwd sftp_user
  3. создать каталог и настроить права на каталог для этого пользователя:
    mkdir /var/www/sftp_user
    
    chmod 755 /var/www/sftp_user 
    
    chown sftp_user:sftp_user /var/www/sftp_user 
  4. в конце конфигурационного файла /etc/ssh/sshd_config добавить настройку для пользователя:
    Match User user
    
            X11Forwarding no
    
            AllowTcpForwarding no
    
            AllowAgentForwarding no
    
            PermitTunnel no
    
            ForceCommand internal-sftp
    
            ChrootDirectory /var/www/

    ChrootDirectory нужно указывать на каталог выше того, который будет использовать пользователь, так как владельцем этой папки должен быть root и у других пользователей не должно быть прав на запись.
  5. перезапускаем SSH сервер:
    service sshd restart

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