Для передачи файлов на сервер чаще всего используют протоколы передачи данных 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-доступом на сервер проблем не составит:
- перейдите в раздел «Учетные записи» — «Пользователи»,
- создайте нового или измените уже существующего пользователя,
- в настройках пользователя нужно дать доступ к shell:
В этом случае у пользователя будет доступ на сервер по обоим защищенным протоколам: SSH и SFTP. Нужно учитывать, что ISPmanager настраивает пользователей, ограничивая их доступ пользовательским каталогом, это значит, что у пользователя sftp_user будет доступ только в каталог /var/www/sftp_user/data и его подкаталоги.
Настройка через консоль
Если вы не используете панель ISPmanager, то работу SFTP можно настроить вручную. На наших серверах 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 нужно:
- cоздать пользователя, под которым будем подключаться по sftp:
useradd -d /dev/null -M -s /bin/bash sftp_user
- установить пароль для пользователя:
passwd sftp_user
- создать каталог и настроить права на каталог для этого пользователя:
mkdir /var/www/sftp_user chmod 755 /var/www/sftp_user chown sftp_user:sftp_user /var/www/sftp_user
- в конце конфигурационного файла
/etc/ssh/sshd_config
добавить настройку для пользователя:Match User user X11Forwarding no AllowTcpForwarding no AllowAgentForwarding no PermitTunnel no ForceCommand internal-sftp ChrootDirectory /var/www/
ChrootDirectory нужно указывать на каталог выше того, который будет использовать пользователь, так как владельцем этой папки должен быть root и у других пользователей не должно быть прав на запись. - перезапускаем SSH сервер:
service sshd restart
SFTP-пользователь создан. Используя его, вы сможете управлять файлами на сервере, не беспокоясь о безопасности данных. Если у вас возникнут сложности с настройкой, обращайтесь в нашу службу поддержки. Мы поможем.