Как поднять sftp на FreeBSD

sftp на freebsdСколь бы не развивался http, сколь бы веб не захватывал сферы жизни человека, ftp продолжает жить. Пользователи домашних ПК загружают файлы по http, пользуются web-фалообменниками, но всё же ftp продолжает использоваться. Например, ftp — зачастую один из интерфейсов на хостингах. Через него можно «залить сайт» на хостинг, многие редакторы предоставляют возможность редактирования удалённых файлов через ftp…

Но ftp не безопасен. Данные передаются по нему в открытом виде. И, если ваш ресурс нужен для небольшого количества людей, опасности нет. Но если нет? Здесь нам на помощь придёт SFTP — FTP над SSH — тот же ftp, но по шифрованному каналу.

Итак, в этой заметке будет рассказано, как поднять sftp на FreeBSD. А так же, будут описаны подводные камни, которые могу встретиться по дороге. По крайней мере, те, что встретились мне.

Установка SFTP на FreeBSD

Во-первых, хочется сказать, что в некоторых ssh демонах присутствует поддержка sftp. Собственно, её мы и будем использовать. Поэтому, сначала надо проверить, есть ли у нас уже ssh демон. Это можно сделать, выполнив команду

ps aux | grep ssh

— запущен ли какой из них. Заглянуть в /etc/rc.d/ и /usr/local/etc/rc.d на предмет ssh демона также будет полезно. Если их нет — устанавливаем.

Из портов:

cd /usr/ports/security/openssh-portable
make install clean

С помощью пакетного менеджера:

pkg_add -r openssh-portable

Настройка SFTP

Во-первых, добавим ssh демона в /etc/rc.conf, дабы он поднимался автоматически после загрузки системы, старта jail’а.

/etc/rc.conf
openssh_enable="YES" # если используется openssh
sshd_enable="YES"    # если используется стандартный sshd

Теперь надо создать группу пользователей, которым будет разрешён доступ по sftp.

pw groupadd sftponly

И добавить пользователей в эту группу.

pw usermod -G sftponly

После чего настроить ssh демона. В случае openssh это будет /usr/local/etc/ssh/sshd_config, если же sshd — то /etc/ssh/sshd_config.

# override default of no subsystems
Subsystem sftp internal-sftp # /usr/local/libexec/sftp-server
AllowGroups wheel sftponly
Match group sftponly
    ChrootDirectory %h
    ForceCommand internal-sftp
    AllowTcpForwarding no
    X11Forwarding no

Вместо %h (что будет интерпретировано как домашняя папка), можно поставить любую. Тут есть один момент, но о нём позже…

Директива ChrootDirectory указывает на то, что после захода на сервер пользователь будет помещён в chroot. Удобная вещь.

Рестартуем ssh демона и пробуем зайти на сервер по sftp.

/usr/local/etc/rc.d/openssh restart

Не работает ChrootDirectory

То есть не происходит chroot после захода пользователя на сервер. Это поведение ssh демона мне непонятно. Но поискав в google информацию на эту тему, узнал, что ssh не хочет chrootиться в директорию, владелец которой не root, или если кто-то кроме него имеет право на изменение файлов.

Не забудьте также, что на sftp действуют те же правила политики безопасности, что и на пользователя в системе.

Мне понравилась эта заметка:
Другое:
  • Amd phenom ii x2 565 здесь пилосос zelmer.
  • торф верховой.
Как поднять sftp на FreeBSD: 5 комментариев
  1. «Если их нет — устанавливаем»
    Такого не может быть. На всех FreeBSD сразу включают автозапуск сервера sshd.

    • Как позднее оказалось, это действительно так. Но когда я настраивал, sshd, установленный в системе был не из пакета openssh — поэтому я его проигнорировал.

  2. «И добавить пользователей в эту группу.

    pw usermod -g sftponly»
    Это команда изменяет основную группу пользователя, а не добавляет. А добавляет ключ «-G».

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

*

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>