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

19

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

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

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

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

  

Ошибка записи: Сломанная трубка
  Не удалось прочитать пакет: Сброс соединения с помощью peer

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

    
задан Nitin Venkatesh 17.06.2011 в 17:10
источник

5 ответов

22

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

Измените /etc/ssh/sshd_config и добавьте строки:

SubSystem sftp internal-sftp
Match Group sftp
ChrootDirectory %h
ForceCommand internal-sftp
AllowTcpForwarding no

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

#UsePAM yes

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

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

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

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

AllowGroups ssh-users sftp

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

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

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

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

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

    
ответ дан Lekensteyn 17.06.2011 в 18:36
источник
7

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

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

Subsystem sftp internal-sftp -f AUTH -l VERBOSE
UsePAM yes
Match 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.

    
ответ дан Aten 16.10.2012 в 15:41
5

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

  

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

Источник

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

    
ответ дан Nathan Jones 30.09.2015 в 22:08
2

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

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

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

sudo nano /etc/ssh/sshd

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

PasswordAuthentication yes

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

Match Group sftpusers
ChrootDirectory %h
ForceCommand internal-sftp
AllowTcpForwarding no  

Нажмите Ctrl-X, чтобы выйти и сохранить.

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

sudo useradd bob
sudo passwd bob

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

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

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

sudo chown root:root /home/bob/
sudo chmod 755 /home/bob/
sudo mkdir /home/bob/uploads
sudo chown bob /home/bob/uploads

sudo service sshd restart

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

    
ответ дан Rob Mulder 26.07.2016 в 03:28
0

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

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

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

Команды: сервис ssh stop; / usr / sbin / sshd -d

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

    
ответ дан RedScourge 28.01.2016 в 03:09