Этот справочник поможет вам создать пользователя исключительно для SFTP (без SSH-доступа) на системах Ubuntu. Пользователь сможет подключаться к серверу только через SFTP и будет иметь доступ к определенному каталогу. Вход на сервер по SSH для него будет невозможен. Следуйте инструкциям ниже, чтобы настроить учетную запись только для SFTP.
Для начала, вам необходимо создать нового пользователя. Это можно сделать с помощью команды:
sudo adduser имя_пользователя
Во время создания учетной записи вам будет предложено ввести пароль и другую информацию о пользователе.
После этого необходимо изменить оболочку пользователя на `/usr/sbin/nologin`, чтобы предотвратить SSH-доступ:
sudo usermod -s /usr/sbin/nologin имя_пользователя
Теперь создайте каталог, к которому будет иметь доступ пользователь. Например, можно создать директорию в `/srv/sftp`:
sudo mkdir -p /srv/sftp/имя_пользователя
Затем измените владельца каталога на нового пользователя:
sudo chown root:root /srv/sftp
И установите права доступа к каталогу пользователя:
sudo chown имя_пользователя:имя_пользователя /srv/sftp/имя_пользователя
Теперь откройте файл конфигурации SSH для редактирования:
sudo nano /etc/ssh/sshd_config
Добавьте следующие строки в конец файла для настройки доступа только для SFTP:
Match User имя_пользователя
ForceCommand internal-sftp
ChrootDirectory /srv/sftp
AllowTcpForwarding no
X11Forwarding no
После внесения изменений сохраните файл и перезапустите SSH-сервер:
sudo systemctl restart ssh
Теперь пользователь сможет подключаться к серверу только через SFTP и будет изолирован в своем домашнем каталоге. Чтобы проверить работоспособность, используйте SFTP-клиент и введите адрес сервера, имя пользователя и пароль.
Содержание статьи
Создание пользователя
Сначала создайте учетную запись для доступа по SFTP. Приведенная ниже команда создаст пользователя с именем sftpuser без доступа к командной оболочке.
sudo adduser --shell /bin/false sftpuser
После создания пользователя необходимо настроить его домашнюю директорию и права доступа. Вы можете создать для него отдельную директорию, например, /home/sftp/sftpuser, и установить необходимые права:
sudo mkdir -p /home/sftp/sftpuser
Затем измените владельца этой директории на созданного пользователя:
sudo chown sftpuser:sftpuser /home/sftp/sftpuser
Не забудьте также задать правильные права на папку:
sudo chmod 700 /home/sftp/sftpuser
Теперь нужно настроить SSH для работы с SFTP. Откройте файл конфигурации SSH:
sudo nano /etc/ssh/sshd_config
Добавьте в конец файла следующие строки, чтобы ограничить пользователя только доступом по SFTP:
Match User sftpuser
ChrootDirectory /home/sftp/
ForceCommand internal-sftp
AllowTcpForwarding no
После внесения изменений перезапустите службу SSH:
sudo systemctl restart sshd
Теперь пользователь sftpuser может подключаться к серверу по SFTP с ограниченным доступом, что повышает безопасность вашей системы.
Для дополнительной безопасности вы можете рассмотреть возможность ограничения доступа к определённым файлам и каталогам внутри домашней директории пользователя. Убедитесь, что права доступа к папке /home/sftp настроены правильно:
sudo chown root:root /home/sftp
sudo chmod 755 /home/sftp
Это гарантирует, что пользователь sftpuser не сможет просматривать другие домашние директории или изменять настройки системы. Также рекомендуется регулярно обновлять SSH и следить за журналами входа для выявления подозрительной активности.
Если вы хотите разрешить пользователю загрузку и скачивание файлов, просто создайте нужные подкаталоги внутри его домашней директории и настройте для них соответствующие права доступа.
Создание каталога для SFTP
Теперь необходимо создать структуру каталогов, к которым будет иметь доступ пользователь sftp.
sudo mkdir -p /var/sftp/files
Измените владельца каталога на пользователя sftp, чтобы sftpuser мог выполнять операции чтения и записи в этот каталог.
sudo chown sftpuser:sftpuser /var/sftp/files
Установите владельца и группу владельца для /var/sftp на root. У пользователя root есть права на чтение и запись в эту директорию, тогда как члены группы и другие аккаунты имеют только права на чтение и выполнение.
sudo chown root:root /var/sftp sudo chmod 755 /var/sftp
Также рекомендуется создать подкаталоги для различных типов файлов, чтобы лучше организовать данные. Например, можно создать каталоги для документов, изображений и резервных копий:
sudo mkdir -p /var/sftp/files/documents
sudo mkdir -p /var/sftp/files/images
sudo mkdir -p /var/sftp/files/backups
Не забудьте установить правильные права доступа для этих подкаталогов, чтобы обеспечить безопасность данных:
sudo chown sftpuser:sftpuser /var/sftp/files/documents
sudo chown sftpuser:sftpuser /var/sftp/files/images
sudo chown sftpuser:sftpuser /var/sftp/files/backups
После настройки структуры каталогов важно проверить правильность конфигурации, чтобы убедиться, что пользователь sftp имеет доступ только к созданной ему директории и не может выходить за её пределы. Это можно сделать, изменив конфигурацию SSH:
sudo nano /etc/ssh/sshd_config
Добавьте или измените следующие строки:
Match User sftpuser
ChrootDirectory /var/sftp
ForceCommand internal-sftp
AllowTcpForwarding no
После внесения изменений перезапустите службу SSH для применения новых настроек:
sudo systemctl restart sshd
Настройка SSH для SFTP
Теперь откройте файл конфигурации SSH в текстовом редакторе.
sudo vim /etc/ssh/sshd_config
и добавьте следующие строки в конец файла.
Match User sftpuser ForceCommand internal-sftp PasswordAuthentication yes ChrootDirectory /var/sftp PermitTunnel no AllowAgentForwarding no AllowTcpForwarding no X11Forwarding no
Сохраните изменения и перезапустите SSH-сервер, чтобы изменения вступили в силу.
sudo systemctl restart ssh
Обратите внимание, что для правильной работы ChrootDirectory необходимо, чтобы директория /var/sftp и все её родительские директории принадлежали пользователю root и имели права доступа не более 75Создайте директорию для пользователя SFTP и назначьте необходимые права:
sudo mkdir /var/sftp/sftpuser
sudo chown root:root /var/sftp
sudo chown sftpuser:sftpuser /var/sftp/sftpuser
Также рекомендуется добавить пользователя sftpuser в систему, если он ещё не создан:
sudo adduser sftpuser
Теперь пользователь sftpuser сможет подключаться к вашему серверу по SFTP с использованием заданных настроек. Не забудьте протестировать подключение, чтобы убедиться, что всё работает корректно.
Проверка SFTP соединения
Я использую FileZilla для подключения к SFTP-серверу с моих Windows-систем. Пользователи Linux также могут воспользоваться FileZilla для подключения.
Для серверов Linux пользователи могут использовать командную утилиту sftp для подключения к удаленному экземпляру sftp.
sftp [email protected] Подключение к sftp.tecadmin.net. [email protected]'s password: sftp>
Подключение через FileZilla:

Данный аккаунт предназначен исключительно для SFTP-подключений. В связи с этим, если пользователь попытается войти через SSH, он будет автоматически отключён после успешной аутентификации. Пользователь увидит следующее сообщение:
ssh [email protected] [email protected]'s password: Данная служба поддерживает только SFTP-подключения. Соединение с sftp.tecadmin.net закрыто.
Для успешного подключения убедитесь, что вы используете правильный хост, имя пользователя и пароль. Если возникают проблемы, проверьте настройки вашего брандмауэра, так как он может блокировать соединения на порту 22, который используется для SFTP.
Кроме того, вы можете воспользоваться дополнительными параметрами командной строки sftp для улучшения работы. Например, команду sftp -P 2222 [email protected] можно использовать для подключения к серверу, который работает на нестандартном порту.
Также рекомендуется настроить ключи SSH для аутентификации, чтобы повысить безопасность и избежать необходимости ввода пароля при каждом подключении. Для этого создайте пару ключей с помощью команды ssh-keygen и добавьте публичный ключ на сервер в файл ~/.ssh/authorized_keys.
Если вам необходимо передать файлы на сервер или с него, используйте команды put для загрузки и get для скачивания файлов. Например, чтобы загрузить файл, выполните:
put local_file.txt remote_file.txt
При работе с FileZilla вы можете просто перетаскивать файлы в интерфейсе программы, что упрощает процесс передачи данных.
В случае возникновения проблем с подключением, проверьте логи на сервере для выявления возможных ошибок и обратитесь к системному администратору для получения помощи. Также полезно проверить версию SFTP-сервера и клиента на предмет совместимости, так как разные версии могут иметь различия в поддерживаемых функциях.
Если вы хотите автоматизировать процесс подключения, рассмотрите возможность использования скриптов на Bash или PowerShell, которые могут выполнять команды SFTP без необходимости вручную вводить их каждый раз.
Помимо этого, следите за обновлениями безопасности и версиями программного обеспечения как клиента, так и сервера, чтобы избежать уязвимостей и обеспечить стабильность работы.

