Как настроить SFTP-сервер с пользователями, привязанными к своим домашним каталогам?

Я пытался настроить SFTP-сервер с несколькими пользователями, подключающимися к своим домашним каталогам. Я последовал совету по это руководство (Archive.org ссылка), а затем выполнил следующие команды в каталогах пользователя

chown root:root /home/user/chmod 755 /home/user/

В домашнем каталоге каждого пользователя есть дополнительная папка, которая называется public, который принадлежит его пользователю, чтобы позволить ему создавать каталоги и загружать и удалять файлы по мере необходимости. (Это было рекомендовано в руководстве, о котором я упоминал ранее)

Теперь, когда я выполняю sftp -P 435 user@localhost, Я получаю эту ошибку:

Ошибка записи: Сломанный канал
Не удалось прочитать пакет: сброс соединения одноранговым узлом

Как мне поступить дальше? Конечная идея состоит в том, чтобы каждый пользователь на какой-либо другой машине использовал FileZilla для входа в свои домашние каталоги, а затем мог загружать каталоги и файлы. Все это в SFTP (потому что это более безопасно)

В этой статье также описывается, как получить доступ к командной оболочке с поддержкой chrooted, но поскольку вам нужна учетная запись только для sftp, просто следуйте этим инструкциям:

Редактировать /etc/ssh/sshd_config и добавьте строки:

SubSystem sftp internal-sftpMatch Group sftpChrootDirectory %hForceCommand internal-sftpAllowTcpForwarding no

Найдите линию UsePAM yes и прокомментируйте это:

#UsePAM yes

Без отключения этого мой SSH-сервер выйдет из строя при перезагрузке / перезапуске. Поскольку мне не нужны причудливые функции PAM, это нормально.

Для дополнительной безопасности ограничьте количество пользователей, которые могут входить в систему. Если вы забыли добавить пользователей SFTP в sftp группа, вы предоставляете им бесплатный доступ к оболочке. Не самый приятный сценарий. Потому что SSH не может объединить AllowUsers и AllowGroups (логин должен соответствовать обоим правилам), вы должны создать дополнительную группу, скажем ssh-users. Добавьте пользователей, которым разрешено входить в систему (youruser ниже) по SSH:

sudo groupadd ssh-userssudo gpasswd -a youruser ssh-users

И добавьте следующую строку в /etc/ssh/sshd_config:

AllowGroups ssh-users sftp

Теперь перейдите к изменению разрешений домашнего каталога пользователей, чтобы разрешить chrooting (пример пользователя sftp-user):

sudo chown root:sftp-user /home/sftp-usersudo chmod 750 /home/sftp-user

Создайте каталог, в котором sftp-user может свободно помещать в него любые файлы:

sudo mkdir /home/sftp-user/publicsudo chown sftp-user: /home/sftp-user/publicsudo chmod 750 /home/sftp-user/public

Если у вас возникнут какие-либо проблемы, проверьте /var/log/syslog и /var/log/auth.log для получения более подробной информации. Бежать ssh или sftp с -vvv опция для отладки сообщений. Для sftp, опция должна появиться перед хостом , как в sftp -vvv user@host.

Просто хотел добавить, что права доступа к папкам в дереве каталогов должны быть установлены определенным образом.

Строгие требования к владению/разрешениям sshd диктуют, что каждый каталог в пути chroot должен принадлежать root и доступен для записи только владельцу.

Источник

У меня была очень похожая ошибка, и исправление моих прав доступа к каталогу устранило проблему для меня.

Я использую Ubuntu LTS 12.04, и после долгих мучений это сработало для меня.

Мои настройки для /etc/ssh/sshd_config

Subsystem sftp internal-sftp -f AUTH -l VERBOSEUsePAM yesMatch group sftp  ChrootDirectory %h  ForceCommand internal-sftp  AllowTcpForwarding no
  1. создать группу sftp:

    groupadd sftp

  2. Создайте пользователя напрямую с присоединенной новой группой sftp:

    sudo useradd -d /ftpusers/HomeFolder -m UserName -g sftp -s /bin/false

  3. установите разрешения для использования с ssh для sftp:

    chown root:root HomeFolder

    chmod 755 HomeFolder

  4. перезапустить службу:

    service ssh restart

Обратите внимание, что домашней папке для нового пользователя sftp должен быть присвоен root-владелец.

Вот пошаговое руководство, позволяющее:

  1. SFTP-доступ к /home/bob/uploads для пользователя bob
  2. Заблокируйте боба из SSH
  3. Используйте имя пользователя / пароли, а не ключи:

Сначала отредактируйте свой файл /etc/ssh/sshd_config:

sudo nano /etc/ssh/sshd

Прокрутите вниз и измените:

PasswordAuthentication yes

и добавьте это внизу:

Match Group sftpusersChrootDirectory %hForceCommand internal-sftpAllowTcpForwarding no  

Нажмите Ctrl-X для выхода и сохранения.

Теперь добавьте пользователя:

sudo useradd bobsudo passwd bob

Теперь добавьте группы и отключите ssh:

sudo groupadd sftpuserssudo usermod  -g sftpusers bobsudo usermod -s /usr/bin/rssh bobsudo usermod -d /home/bob bob

Теперь установите разрешения:

sudo chown root:root /home/bob/sudo chmod 755 /home/bob/sudo mkdir /home/bob/uploadssudo chown bob /home/bob/uploadssudo service sshd restart

Все это происходит при входе в систему как пользователь root (ec2-пользователь на Amazon Linux AMIs)

Также обратите внимание при добавлении директивы сопоставления в конфигурационный файл, что любые директивы, не относящиеся к тому, что вы сопоставляете, могут перестать работать. Вместо того, чтобы комментировать все, что несовместимо, просто переместите любые разделы, содержащие директиву соответствия, в конец конфигурационного файла.

Кроме того, разрешения, вероятно, должны быть установлены на 755 для каталога chroot и любых родительских каталогов, а для владельца - root:root. Лично я настроил каталог chroot sshd_config на %h, домашний каталог пользователя, а затем установил их домашний каталог там, где я хочу, чтобы он был, например / var / www/examplewebsite.com. Некоторые могут предпочесть настроить домашний каталог chroot со статической частью, за которой следует имя пользователя, например /var/www/%u, однако для этого, конечно, необходимо убедиться, что каталог chroot вашего пользователя соответствует его имени пользователя.

Чтобы устранить неполадки с подключением, остановите службу ssh, предварительно открыв один или два сеанса SSH для тестирования, а затем запустите демон в интерактивном режиме в режиме отладки, чтобы просмотреть информацию об отладке соединения, поскольку это может помочь вам выявить любые проблемы и найти способы их устранения.

Команды: остановка службы ssh ; /usr/sbin/sshd -d

Обязательно запустите ssh снова после того, как закончите!Команда: запуск службы ssh

@ash : Обновлено с учетом Archive.org ссылка

Предоставленная ссылка не работает, можете ли вы обновить это?