Как настроить sshd для обеспечения соединений как по ssh, так и по sftp?

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

У меня есть две машины с Linux. Одна из них должна быть сервером SFTP. Я добавил следующие строки в файл /etc/ssh/sshd_config:

#Конфигурация SFTP сервера                                                 
Match Group root                                                           
        ChrootDirectory /share                                               
        ForceCommand internal-sftp

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

Эта служба разрешает только соединения SFTP.

Что мне сделать, чтобы включить как SFTP, так и SSH для root?

Заранее благодарю за любую помощь.

Разрешить root доступ к удаленной системе? Вы действительно не хотите этого делать. Тем не менее, в /etc/ssh/sshd_config должно быть соответствующее настроенное:

# Разрешить вход для root yes|no

Все это есть в мануале.

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

Чтобы настроить sshd для поддержки как SSH, так и SFTP соединений, вам необходимо внести изменения в файл конфигурации /etc/ssh/sshd_config. В вашей текущей конфигурации указано, что все пользователи группы root будут автоматически перенаправлены на режим SFTP, что и приводит к ошибке при попытке подключения по SSH. В этом ответе мы рассмотрим, как можно одновременно поддерживать оба типа соединений, сохраняя при этом безопасность.

Шаги по настройке SSHD для одновременной поддержки SSH и SFTP

  1. Откройте файл конфигурации:
    Чтобы изменить настройки, откройте файл sshd_config с помощью текстового редактора. Например, используйте nano или vim:

    sudo nano /etc/ssh/sshd_config
  2. Измените или добавьте параметры Match:
    Вам нужно будет изменить конфигурацию в соответствии с вашими требованиями. Вместо того чтобы полностью перенаправлять всех пользователей группы root на внутренний SFTP, вы можете настроить что-то подобное:

    # Общие настройки
    PermitRootLogin no
    PasswordAuthentication yes
    
    # SFTP серверная конфигурация
    Subsystem sftp internal-sftp
    
    Match Group sftpusers
       ChrootDirectory /share
       ForceCommand internal-sftp
       AllowTcpForwarding no
       X11Forwarding no

    Здесь мы создаем группу sftpusers, пользователи которой будут использовать только SFTP. В данном случае вы можете уточнить, что пользователи из группы root будут иметь доступ к SSH, но пользователи группы sftpusers смогут подключаться только через SFTP.

  3. Создайте группу SFTP:
    Если у вас еще нет группы для пользователей SFTP, создайте её:

    sudo groupadd sftpusers
  4. Добавьте пользователей в группу:
    После создания группы добавьте необходимого пользователя в группу:

    sudo usermod -aG sftpusers имя_пользователя
  5. Настройки безопасности:
    При использовании ChrootDirectory необходимо обратить внимание на права доступа к директории. Директория, указанная в ChrootDirectory, должна принадлежать root и иметь права доступа не более 755:

    sudo chown root:root /share
    sudo chmod 755 /share
  6. Перезапустите SSH-сервер:
    Чтобы изменения вступили в силу, перезапустите SSH-сервер:

    sudo systemctl restart sshd

Проверка конфигурации

После перезапуска службы SSH, вы сможете проверить работоспособность:

  1. Подключитесь к серверу по SSH с пользователя, не входящего в группу sftpusers и убедитесь, что вы можете войти.
  2. Попробуйте подключиться с пользователем, включенным в sftpusers, и проверьте, что он может выполнять только команды SFTP.

Заключение

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

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

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