Linux

/
/
Настройка SFTP на ProFTPD

Настройка SFTP на ProFTPD

Для работы по SFTP с FTP-сервером ProFTPD, необходимо установить и настроить соответствующий модуль.

Подключитесь к серверу по SSH как root и установите модуль:

apt install proftpd-mod-sftp-ldap
yum install proftpd-mod-sftp-ldap

Раскомментируйте или добавьте строку LoadModule mod_sftp.c в конфигурационном файле /etc/proftpd/modules.conf:

sed -i 's/#LoadModule mod_sftp.c/LoadModule mod_sftp.c/g' /etc/proftpd/modules.conf

После, перезагрузите службу ProFTPD и проверьте подключен ли модуль:

service proftpd restart
proftpd -vv | grep mod_sftp

Модулю SFTP требуются собственные ключи шифрования. Создайте каталог для них и сгенерируйте ключи:

mkdir -p /etc/proftpd/keys
ssh-keygen -t rsa -b 4096 -f /etc/proftpd/keys/sftp_host_rsa_key -N "" -m PEM

Создайте конфигурационный файл и журнал для модуля:

touch /etc/proftpd/conf.d/sftp.conf
touch /var/log/proftpd/sftp.log

Перед добавлением конфигурации, выберите любой подходящий порт на сервере и проверьте, не занят ли он. Например, порт 2222:

ss -tulpan | grep 2222

Если порт не занят, вывод команды будет пуст.

Вместо <ip-адрес_сервера> и <номер_порта> , в конфигурации ниже, обязательно укажите IP-адрес вашего сервера и выбранный свободный порт, который будет слушать служба. 

Добавьте следующую конфигурацию в созданный файл:

<IfModule mod_sftp.c>
  <VirtualHost <ip-адрес_сервера>>
    Port <номер_порта>
    
    # Необходимо отключить FTPS для предотвращения конфликтов с SFTP
    TLSEngine off
    
    # Включение SFTP
    SFTPEngine on
    SFTPLog /var/log/proftpd/sftp.log
    SFTPHostKey /etc/proftpd/keys/sftp_host_rsa_key
    
    # Разрешение аутентификации пользователей с оболочкой /usr/sbin/nologin
    RequireValidShell off
    
    # Методы аутентификации
    SFTPAuthMethods password publickey
    SFTPAuthorizedUserKeys file:~/.ssh/authorized_keys
    
    # Разрешение на перезапись файлов
    <Directory />
      AllowOverwrite yes
    </Directory>
    
  </VirtualHost>
</IfModule>

Проверьте конфигурацию:

proftpd -t

Если синтаксис корректный, вывод будет следующим:

Checking syntax of configuration file
Syntax check complete.

Перезапустите службу:

service proftpd restart

Проверьте доступность FTP-сервера по указанному для SFTP порту с внешнего устройства:

sftp -P <номер_порта> <имя_ftp-пользователя>@<ip-адрес_сервера>