Представь ситуацию: тебе нужно безопасно передавать файлы между серверами, но обычный FTP не подходит из-за отсутствия шифрования. Или ты хочешь организовать доступ к файлам на своём NAS для удалённой команды. Решение — SFTP (SSH File Transfer Protocol). Давай разберём, как настроить SFTP сервер на TrueNAS — мощной платформе для хранения данных.
Что такое SFTP и зачем он нужен в TrueNAS
SFTP — это протокол передачи файлов, работающий поверх SSH. В отличие от FTP, все данные (включая логины и пароли) передаются в зашифрованном виде. В контексте TrueNAS, настройка SFTP даёт тебе:
- Безопасный доступ к файлам из любой точки мира
- Интеграцию с существующей системой пользователей TrueNAS
- Возможность использовать SSH ключи вместо паролей
- Доступ через стандартные клиенты (FileZilla, WinSCP, команда sftp в Linux)
Подготовка TrueNAS к работе с SFTP
Перед настройкой SFTP на TrueNAS убедись, что у тебя есть:
- Работающая система TrueNAS (Core или Scale)
- Доступ к веб-интерфейсу с правами администратора
- Созданный dataset или папка для SFTP доступа
- Пользователь (не root) для подключения
Шаг 1: Активация SSH службы
Поскольку SFTP работает через SSH, сначала нужно включить SSH сервер:
- Зайди в веб-интерфейс TrueNAS
- Перейди в Система → Службы
- Найди службу SSH и включи её
- Нажми на шестерёнку (настройки) рядом с SSH
# Альтернативно можно включить через CLI:
systemctl start sshd
systemctl enable sshd
Шаг 2: Настройка параметров SSH для SFTP
В настройках SSH службы обрати внимание на важные параметры:
| Параметр | Рекомендуемое значение | Объяснение |
|---|---|---|
| Разрешить root логин | ❌ НЕТ | Безопасность прежде всего |
| Порт TCP | 22 (или свой) | Стандартный порт SSH |
| Разрешить парольную аутентификацию | ✅ ДА (или только ключи) | Для удобства или максимальной безопасности |
Создание пользователя и настройка прав для SFTP
Шаг 3: Создание пользователя TrueNAS для SFTP
Создадим специального пользователя с ограниченными правами:
- Перейди в Учетные записи → Пользователи → Добавить
- Заполни основные данные (имя пользователя, пароль)
- В поле "Домашний каталог" укажи путь к папке для SFTP
- Установи группу пользователей (например, создай группу "sftp-users")
Шаг 4: Настройка chroot для безопасности
Чтобы пользователь не мог выйти за пределы своей папки, настроим chroot jail. Отредактируй конфиг SSH:
# Подключись к TrueNAS через SSH (или используй Shell в веб-интерфейсе)
# Отредактируй файл /etc/ssh/sshd_config
# Добавь в конец файла:
Match Group sftp-users
ChrootDirectory /mnt/tank/sftp/%u
ForceCommand internal-sftp
AllowTcpForwarding no
X11Forwarding no
PermitTunnel no
Где /mnt/tank/sftp/%u — путь к домашней директории пользователя. %u автоматически подставит имя пользователя.
Настройка папок и прав доступа
Шаг 5: Создание структуры каталогов
# Создаём основную папку для SFTP
mkdir -p /mnt/tank/sftp
# Создаём папку для конкретного пользователя
mkdir -p /mnt/tank/sftp/username
# Важно: владельцем корневой папки chroot должен быть root
chown root:root /mnt/tank/sftp/username
# Внутри создаём папку для загрузок, которой будет владеть пользователь
mkdir /mnt/tank/sftp/username/uploads
chown username:sftp-users /mnt/tank/sftp/username/uploads
chmod 755 /mnt/tank/sftp/username/uploads
Шаг 6: Настройка SSH ключей (рекомендуется)
Для большей безопасности настрой аутентификацию по ключам:
# На клиенте создай ключ (если нет)
ssh-keygen -t ed25519 -f ~/.ssh/truenas_sftp_key
# Скопируй публичный ключ на TrueNAS
ssh-copy-id -i ~/.ssh/truenas_sftp_key.pub username@truenas-ip
# Или создай файл вручную:
mkdir -p /mnt/tank/sftp/username/.ssh
cat публичный_ключ.pub >> /mnt/tank/sftp/username/.ssh/authorized_keys
chmod 600 /mnt/tank/sftp/username/.ssh/authorized_keys
chown -R username:sftp-users /mnt/tank/sftp/username/.ssh
Подключение к SFTP серверу TrueNAS
Из Linux/macOS (терминал)
# Подключение с паролем
sftp username@truenas-ip
# Подключение с ключом
sftp -i ~/.ssh/truenas_sftp_key username@truenas-ip
# Если изменили порт
sftp -P 2222 username@truenas-ip
Из Windows (FileZilla)
- Открой FileZilla
- Меню: Файл → Менеджер сайтов → Новый сайт
- Хост: IP адрес TrueNAS
- Порт: 22 (или ваш кастомный)
- Протокол: SFTP - SSH File Transfer Protocol
- Тип входа: Нормальный
- Пользователь: ваш username
- Пароль: пароль пользователя
Проверка и диагностика подключения
Если подключение не работает, проверь:
# 1. Проверь, работает ли SSH служба
systemctl status sshd
# 2. Проверь логи SSH
tail -f /var/log/auth.log
# Или в TrueNAS: Система → Логи → SSH
# 3. Проверь подключение через SSH (без SFTP)
ssh -v username@truenas-ip
# 4. Проверь права на папки
ls -la /mnt/tank/sftp/username/
# 5. Перезагрузи SSH службу
systemctl restart sshd
Частые проблемы и решения
| Проблема | Решение |
|---|---|
| "Permission denied" при подключении | Проверь права на папку chroot (должна принадлежать root) и вложенные папки |
| Пользователь не может загружать файлы | Убедись, что у пользователя есть права на запись в папку uploads |
| Подключение обрывается по таймауту | Проверь фаервол и проброс портов на роутере |
Расширенные настройки SFTP на TrueNAS
Ограничение скорости передачи
Чтобы SFTP не забирал всю пропускную способность:
# В /etc/ssh/sshd_config добавь:
Match Group sftp-users
# Ограничение в 10 МБ/с
ForceCommand internal-sftp -l 10240
Автоматическое монтирование SFTP как сетевого диска
В Linux можно монтировать SFTP через SSHFS:
# Установи sshfs
sudo apt install sshfs # Debian/Ubuntu
# Создай точку монтирования
mkdir ~/truenas-sftp
# Смонтируй
sshfs username@truenas-ip:/uploads ~/truenas-sftp
# Для автоматического монтирования при загрузке добавь в /etc/fstab:
username@truenas-ip:/uploads /mnt/truenas fuse.sshfs defaults 0 0
Настройка SFTP на TrueNAS — это баланс между удобством и безопасностью. Начни с базовой настройки, протестируй подключение, а затем добавь дополнительные меры безопасности (изменение порта, SSH ключи, chroot jail).
Помни: после любых изменений в sshd_config нужно перезагружать SSH службу. И всегда проверяй логи при возникновении проблем.