Вкратце расскажу, как запустить sftp-модуль для proftpd и организовать доступ к нему по ключам.

О самом протоколе sftp можно прочитать в любом доступном в сети источнике — информации предостаточно, также очевидны преимущества его использования перед ftp.

Имеем основной конфиг (CentOS в моем случае):

/etc/proftpd.conf

Я перечислю только ключевые параметры конфига, для запуска.

Во-первых, надо убедиться, что модуль sftp подгружается:

LoadModule mod_sftp.c

Далее, отдельным блоком VirtualHost, указываем следующее:

<VirtualHost 0.0.0.0>
        SFTPEngine                      on
        Port                            2222
        TransferLog                     /var/log/proftpd/xferlog
        SFTPLog                         /var/log/proftpd/sftp.log
        SFTPHostKey                     /etc/ssh/ssh_host_rsa_key
        SFTPHostKey                     /etc/ssh/ssh_host_dsa_key
        SFTPAuthMethods                 publickey password
        SFTPAuthorizedUserKeys          file:/etc/proftpd.d/%u
        SFTPClientMatch .* sftpUTF8ProtocolVersion 3
        SFTPClientMatch "PuTTY_Local.*" channelWindowSize 2GB
        SFTPClientMatch WinSCP|ClientSftp sftpProtocolVersion 1-3
        SFTPClientMatch CoreFTP channelWindowSize 1GB
        SFTPClientMatch .*Axway channelWindowSize 1GB
        SFTPClientMatch "JSCH.*" channelWindowSize 1GB
        SFTPOptions                     PessimisticKexinit
        RequireValidShell               off
        AuthOrder                       mod_auth_file.c
        AuthUserFile                    /etc/proftpd.passwd
        DefaultRoot                     ~
</VirtualHost>

Опять же, здесь все предельно ясно. Дополнительно указаны различные SFTPClientMatch, для оптимизации работы с разными клиентами.

Значение SFTPOptions, указано для увеличения совместимости с разными клиентами, о значениях этой директивы можно почитать тут.

Итак, далее важная опция —

SFTPAuthorizedUserKeys

%u — соответствует имени пользователя, указанного в конфиге proftpd.

Соответственно нашему значению, в файле вида:

/etc/proftpd.d/USER_NAME

Сервер будет искать ключи для авторизации клиента.

Теперь перейдем к настройке беспарольного доступа.

На клиенте необходимо сгенерировать пару ключей (приватный-публичный). Сделать это можно с помощью команды:

ssh-keygen -t rsa -b 2048

Затем следует сконвертировать публичный ключ ssh, в формат, понимаемый proftpd сервером, для этого делаем так:

ssh-keygen -e -f /root/.ssh/id_rsa.pub

*Путь к ключу естественно подставляем свой.

Вот и все, осталось добавить данный ключ в файл

/etc/proftpd.d/USER_NAME

И все должно работать.