SFTP работает внутри существующего SSH-соединения, поэтому не требует ни дополнительного серверного ПО, ни нового порта. На VPS Linux Infrawire это самый безопасный способ загрузить сайт или забрать резервные копии через графический клиент вроде FileZilla. В руководстве: вход по паролю и по ключу, права на файлы и пользователь, ограниченный только SFTP.
📋 Требования
- Linux VPS (Ubuntu 24.04, Debian 12, AlmaLinux 9 или Rocky 9) с работающим SSH на порту 22.
- IP-адрес VPS и пароль root из личного кабинета.
- FileZilla Client на вашем компьютере (именно Client, а не FileZilla Server).
1. Быстрое подключение по паролю
Для первой проверки используйте панель быстрого соединения в верхней части FileZilla:
- Хост:
sftp://VPS_IP - Имя пользователя:
USER - Пароль: ваш пароль
- Порт:
22
При первом подключении подтвердите ключ хоста. Правая панель показывает дерево файлов сервера. Лучше работать под обычным пользователем, а не под root: ошибочный клик принесёт меньше вреда.
Bashadduser USER usermod -aG sudo USER
На AlmaLinux или Rocky используйте useradd -m USER, passwd USER и usermod -aG wheel USER.
2. Вход по SSH-ключу
Ключи безопаснее паролей и не подбираются перебором. На своём компьютере создайте пару ключей и скопируйте открытую часть на сервер.
Bashssh-keygen -t ed25519 -C "filezilla" ssh-copy-id USER@VPS_IP
В FileZilla откройте Правка > Настройки > Соединение > SFTP > Добавить файл ключа и выберите закрытый ключ (файл без .pub). FileZilla может предложить преобразовать его в свой формат; согласитесь. Никогда не передавайте закрытый ключ.
3. Сохранение подключения в Менеджере сайтов
- Откройте Файл > Менеджер сайтов и нажмите Новый сайт.
- Протокол: SFTP - SSH File Transfer Protocol.
- Хост:
VPS_IP, Порт:22. - Тип входа: Нормальный для пароля или Файл ключа для ключа.
- Пользователь:
USER. На вкладке «Дополнительно» задайте удалённый каталог по умолчанию, например/var/www/example.com. - Нажмите Соединиться. Сайт сохранится для следующего раза.
Не сохраняйте пароли на компьютере, который вы не контролируете.
4. Владелец и права на файлы сайта
Загруженные файлы часто получают неверного владельца, отсюда ошибки 403 или 500. Передайте веб-каталог своему пользователю и дайте веб-серверу право его читать.
Bashmkdir -p /var/www/example.com chown -R USER:www-data /var/www/example.com find /var/www/example.com -type d -exec chmod 755 {} \; find /var/www/example.com -type f -exec chmod 644 {} \;
На AlmaLinux и Rocky группа веб-сервера называется apache, а не www-data. Каталоги, в которые приложение должно писать (загрузки, кэш), можно выставить в 775 с группой веб-сервера в качестве группы-владельца. Никогда не используйте chmod -R 777. В FileZilla также можно щёлкнуть файл правой кнопкой и выбрать Права доступа к файлу.
5. Необязательно: пользователь только для SFTP в изолированном каталоге
Чтобы дать клиенту доступ лишь к одной папке без оболочки, используйте chroot. Сам каталог chroot должен принадлежать root и не быть доступным для записи другим, иначе sshd отклонит вход.
Bashgroupadd sftpusers useradd -M -d /files -s /usr/sbin/nologin -G sftpusers CLIENT passwd CLIENT mkdir -p /var/sftp/CLIENT/files chown root:root /var/sftp/CLIENT chmod 755 /var/sftp/CLIENT chown CLIENT:CLIENT /var/sftp/CLIENT/files
Добавьте этот блок в конец /etc/ssh/sshd_config:
INI1Match Group sftpusers 2 ChrootDirectory /var/sftp/%u 3 ForceCommand internal-sftp 4 AllowTcpForwarding no 5 X11Forwarding no
Проверьте синтаксис перед перезагрузкой и не закрывайте текущую SSH-сессию, пока не убедитесь, что новый вход работает.
Bashsshd -t systemctl reload ssh
Служба называется ssh в Ubuntu и Debian и sshd в AlmaLinux и Rocky. Ограниченный пользователь попадает в /files и больше ничего не видит.
Проверка
Проверьте из терминала, прежде чем винить FileZilla:
Bashsftp USER@VPS_IP sftp> pwd sftp> put test.txt sftp> ls -l
Затем загрузите файл через FileZilla и проверьте владельца командой ls -l /var/www/example.com.
Устранение неполадок
- Соединение отклонено или истекло время ожидания: проверьте, что sshd запущен (
systemctl status ssh), порт открыт в брандмауэре и выбран именно SFTP, а не FTP. - Permission denied (publickey): ключа нет в
~/.ssh/authorized_keysили неверные права. Исправьте:chmod 700 ~/.sshиchmod 600 ~/.ssh/authorized_keys. - Chroot-пользователя отключает сразу после входа: каталог chroot не принадлежит root или доступен группе для записи. Ищите «bad ownership or modes for chroot directory» в
journalctl -u ssh. - Не загружается, отказано в доступе к папке: пользователь не владеет целевым каталогом. Повторите команды
chownиchmodиз шага 4.
✅ Теперь вы можете безопасно передавать файлы на свой Linux VPS через FileZilla.