На этот вопрос уже есть ответ:
Я пытался настроить сервер SFTP с несколькими пользователями, переходящими в свои домашние каталоги. Я последовал совету этого руководства ( Ссылка на Archive.org ), а затем выполнил следующие команды в каталогах пользователей
chown root:root /home/user/
chmod 755 /home/user/
В домашнем каталоге каждого пользователя есть дополнительная папка с именем public
, который принадлежит его пользователю, чтобы позволить им создавать каталоги, а также загружать и удалять файлы по мере необходимости. (Это было рекомендовано в руководстве, о котором я упоминал ранее)
Теперь, когда я выполняю sftp -P 435 user @ localhost
, я получаю следующую ошибку:
Ошибка записи: сломанный канал
{{ 1}} Не удалось прочитать пакет: сброс соединения одноранговым узлом
Как мне продолжить? Конечная идея состоит в том, чтобы каждый пользователь на какой-либо другой машине использовал FileZilla для входа в свои chrooted домашние каталоги, а затем имел возможность загружать каталоги и файлы. Все это в SFTP (потому что он более безопасен)
Та статья также описывает, как получить доступ оболочки chrooted, но так как Вы просто хотите 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 (пользователь в качестве примера 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
.
Я использую 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
создайте группу sftp:
groupadd sftp
Создайте пользователя непосредственно с новой sftp присоединенной группой:
sudo useradd -d /ftpusers/HomeFolder -m UserName -g sftp -s /bin/false
полномочия набора для использования с ssh для sftp:
chown root:root HomeFolder
chmod 755 HomeFolder
сервис перезапуска:
service ssh restart
Отметьте, домашней папке для нового sftp пользователя нужно дать корневого владельца.
Просто требуемый, чтобы добавить, что полномочия папки дерево каталогов должны быть установлены определенный путь.
строгие требования владения/полномочий sshd диктуют, что каждый каталог в пути chroot должен принадлежать корню и только перезаписываемый владельцем.
Я имел очень похожую ошибку и исправлял мои полномочия каталога, устранил проблему для меня.
Также отметьте при добавлении директивы Соответствия к файлу конфигурации, что любые директивы, не относящиеся для того, чему Вы соответствуете, могут прекратить работать. Вместо того, чтобы комментировать все, который не совместим, просто переместите любые разделы, который включает директиву Соответствия в конец файла конфигурации.
Кроме того, полномочия, вероятно, должны быть установлены на 755 на chroot каталоге и любых родительских каталогах и владельце к root:root. Лично, я настроил chroot каталог sshd_config, чтобы быть %h, корневым каталогом пользователя, и затем установить их корневой каталог туда, где я хочу, чтобы он был, такие как /var/www/examplewebsite.com. Некоторые могут предпочесть настраивать chroot корневой каталог со статической частью, сопровождаемой именем пользователя, таким как/var/www / % u, однако это требует, чтобы обеспечение chroot dir Вашего пользователя соответствовало своему имени пользователя, конечно.
Для поиска и устранения неисправностей проблем соединения остановите ssh сервис, будучи убеждающимися открыть сессию SSH или два сначала для тестирования и затем запустить демона в интерактивном режиме в режиме отладки для исследования информации об отладке соединения, поскольку это может помочь Вам определить любые проблемы и искать, как зафиксировать их.
Команды: сервис ssh остановка;/usr/sbin/sshd-d
Обязательно запустите ssh снова после того, как Вы будете сделаны! Команда: сервис ssh запускается
Вот пошаговое руководство для разрешения:
Во-первых, отредактируйте свой /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-пользователь на Amazon Linux AMI)