Вопрос или проблема
У меня есть две машины с 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
-
Откройте файл конфигурации:
Чтобы изменить настройки, откройте файлsshd_config
с помощью текстового редактора. Например, используйтеnano
илиvim
:sudo nano /etc/ssh/sshd_config
-
Измените или добавьте параметры 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. -
Создайте группу SFTP:
Если у вас еще нет группы для пользователей SFTP, создайте её:sudo groupadd sftpusers
-
Добавьте пользователей в группу:
После создания группы добавьте необходимого пользователя в группу:sudo usermod -aG sftpusers имя_пользователя
-
Настройки безопасности:
При использованииChrootDirectory
необходимо обратить внимание на права доступа к директории. Директория, указанная вChrootDirectory
, должна принадлежатьroot
и иметь права доступа не более 755:sudo chown root:root /share sudo chmod 755 /share
-
Перезапустите SSH-сервер:
Чтобы изменения вступили в силу, перезапустите SSH-сервер:sudo systemctl restart sshd
Проверка конфигурации
После перезапуска службы SSH, вы сможете проверить работоспособность:
- Подключитесь к серверу по SSH с пользователя, не входящего в группу
sftpusers
и убедитесь, что вы можете войти. - Попробуйте подключиться с пользователем, включенным в
sftpusers
, и проверьте, что он может выполнять только команды SFTP.
Заключение
Таким образом, при помощи правильной конфигурации sshd_config
вы сможете обеспечить безопасный доступ как по SSH, так и по SFTP. Следуя этим шагам, вы сможете настроить сервер так, чтобы избежать ошибок и обеспечить нужный уровень доступа. Если у вас остались вопросы или возникли сложности, не стесняйтесь обращаться за дополнительной помощью.