sftp Сломанная труба Не удалось прочитать пакет: Соединение сброшено соперником

Вопрос или проблема

Я пытаюсь настроить аккаунт SFTP для определенной папки. Я создал группу ftpaccess и пользователя testuser с домашним каталогом, как показано здесь:

sudo addgroup ftpaccess

sudo useradd -d /home/forge/mydomain.com/downloads -m testuser -g ftpaccess -s /bin/false

sudo passwd testuser

sudo chown root:root /home/forge/mydomain.com/downloads

sudo chmod 755 /home/forge/mydomain.com/downloads

Затем я создал каталог transfers внутри домашней папки testuser:

sudo mkdir /home/forge/mydomain.com/downloads/transfers

sudo chown testuser:ftpaccess /home/forge/mydomain.com/downloads/transfers

После этого я настроил sshd_config следующим образом (правила добавлены в конец файла):

# SFTP аккаунт
Subsystem sftp internal-sftp
Match group ftpaccess
ChrootDirectory %h
X11Forwarding no
AllowTcpForwarding no
ForceCommand internal-sftp
PasswordAuthentication yes

Теперь пытаюсь подключиться по SFTP с этим пользователем sftp testuser@localhost, но получаю ошибку:

packet_write_wait: Connection to 127.0.0.1 port 22: Broken pipe
Couldn't read packet: Connection reset by peer

Что я делаю не так?

Пожалуйста, попробуйте переместить строку Subsystem sftp internal-sftp из вашего существующего блока в # override default of no subsystems в sshd_config

Это сработало для меня.

Ответ или решение

Проблема, с которой вы столкнулись, связанная с ошибкой "Broken pipe" и "Couldn’t read packet: Connection reset by peer", может быть вызвана несколькими факторами в вашей конфигурации SFTP. Давайте рассмотрим ваш случай и возможные шаги для его решения.

Ваша конфигурация выглядит почти правильно, но есть несколько моментов, на которые стоит обратить внимание:

  1. Права доступа на ChrootDirectory:
    Убедитесь, что директория, указанная как ChrootDirectory (/home/forge/mydomain.com/downloads), имеет правильные права доступа. Эта директория должна принадлежать пользователю root и иметь права на чтение и выполнение (обычно это права 755). Ваша команда уже настроила это правильно:

    sudo chown root:root /home/forge/mydomain.com/downloads
    sudo chmod 755 /home/forge/mydomain.com/downloads
  2. Права доступа на внутреннюю директорию:
    Директория transfers, куда пользователь будет загружать файлы, должна принадлежать пользователю testuser и группе ftpaccess, что вы уже сделали:

    sudo mkdir /home/forge/mydomain.com/downloads/transfers
    sudo chown testuser:ftpaccess /home/forge/mydomain.com/downloads/transfers
  3. Конфигурация sshd_config:
    Попробуйте переместить строку Subsystem sftp internal-sftp на более высокий уровень в конфигурационном файле sshd_config. Например, переместите эту строку в раздел, где указано # override default of no subsystems. Это может помочь решить проблему с подключением. Обновлённый файл sshd_config должен выглядеть так:

    # override default of no subsystems
    Subsystem sftp internal-sftp
    
    Match group ftpaccess
    ChrootDirectory %h
    X11Forwarding no
    AllowTcpForwarding no
    ForceCommand internal-sftp
    PasswordAuthentication yes
  4. Перезагрузка SSH:
    После того как вы внесли изменения в конфигурационный файл, не забудьте перезагрузить службу SSH:

    sudo systemctl restart ssh
  5. Логи:
    Если после этих изменений проблема не решается, посмотрите логи SSH. Они могут дать дополнительную информацию о том, что именно идет не так:

    sudo tail -f /var/log/auth.log

    Это может помочь выявить ошибки, возникающие во время аутентификации.

После выполнения этих шагов, попробуйте снова подключиться с помощью SFTP. Если ошибка всё ещё присутствует, следует проверить сетевые настройки, межсетевые экраны и убедиться, что конфигурация SSH правильно настроена для обработки входящих соединений.

Надеюсь, эти рекомендации помогут вам решить проблему с подключением SFTP.

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

Капча загружается...