如何将ProFTPD配置为只有SFTP的服务器,其中包含系统用户、PK auth和自定义UMASK?

如何将ProFTPD配置为只有SFTP的服务器,其中包含系统用户、PK auth和自定义UMASK?,sftp,public-key,proftpd,Sftp,Public Key,Proftpd,因此,我成功地将ProFTPD配置为允许系统用户使用密码登录。我有两个问题:umask和pk auth Include /etc/proftpd/modules.conf UseIPv6 on ServerName "Debian" ServerType standalone MultilineRFC2228 on DefaultServer on Port 21 PassivePort

因此,我成功地将ProFTPD配置为允许系统用户使用密码登录。我有两个问题:umaskpk auth

Include /etc/proftpd/modules.conf

UseIPv6             on
ServerName          "Debian"
ServerType          standalone
MultilineRFC2228    on
DefaultServer       on
Port                21
PassivePorts        49152 49407
MaxInstances        30
SystemLog           /var/log/proftpd/proftpd.log

<IfModule mod_ctrls.c>
    ControlsEngine      off
    ControlsMaxClients  2
    ControlsLog         /var/log/proftpd/controls.log
    ControlsInterval    5
    ControlsSocket      /var/run/proftpd/proftpd.sock
</IfModule>

<IfModule mod_ctrls_admin.c>
    AdminControlsEngine off
</IfModule>

<Global>
    UseFtpUsers         on
    IdentLookups        off
    DeferWelcome        off
    ShowSymlinks        on
    TimeoutNoTransfer   600
    TimeoutStalled      600
    TimeoutIdle         1200
    DisplayLogin        welcome.msg
    DisplayChdir        .message true
    ListOptions         "-l"
    DenyFilter          \*.*/
    DefaultRoot         ~
    RequireValidShell   off
    User                proftpd
    Group               nogroup
    Umask               007 007
    AllowOverwrite      on
    # AuthOrder           mod_sql.c
    CreateHome          on
    TransferLog         /var/log/proftpd/xferlog

    <IfModule mod_quotatab.c>
        QuotaEngine off
    </IfModule>

    <IfModule mod_ratio.c>
        Ratios off
    </IfModule>

    <IfModule mod_delay.c>
        DelayEngine on
    </IfModule>

    <IfModule mod_xfer.c>
        MaxStoreFileSize    70 Mb
        HiddenStores        on
        DeleteAbortedStores on
    </IfModule mod_xfer.c>

    <Directory /htdocs/*/>
        Umask 0007
        <Limit MKD XMKD RMD XRMD SITE_CHMOD>
            DenyUser !ftpadmin
        </Limit>
    </Directory>
</Global>

Include /etc/proftpd/sftp.conf
[umask]但是,当用户登录并
放入一个文件时,上传的文件将使用它最初拥有的权限(我正在使用OS X和Linux作为客户端进行测试,因此这是有意义的)。我还没有测试过纯FTP解决方案,但我宁愿提供SFTP

[pk auth]当我尝试pk身份验证时,客户端正确地提供了正确的密钥,并说

debug2: we sent a publickey packet, wait for reply
debug1: Server accepts key: pkalg ssh-rsa blen 535
debug2: input_userauth_pk_ok: fp SHA256:Eft1LIOozSylL20lfMc9gUdl3gKtd0zEdeyNtCb1p8Q
但最后的结论是

debug1: Authentications that can continue: password
这让我困惑不已。在服务器端,我有

no account for user 'sftpuser' found
sending userauth failure; remaining userauth methods: password
这很有趣,因为用户确实存在(并且可以成功执行密码登录)。我甚至将OpenSSH密钥转换为ProFTPD似乎更喜欢的RFC4716格式


我承认我总共有大约4个小时的ProFTPD使用经验,但我一直在尽可能地阅读,配置文件对我来说很有意义。这一切都在Docker容器中运行。我缺少什么?

与FTP不同,SFTP上传通常包含自己的权限,作为SFTP
打开
请求的一部分。为了使SFTP上传的行为更像FTP上传,关于ProFTPD配置(例如
Umask
),您需要使用
IgnoreSFTPUploadPerms
配置
mod_SFTP
忽略上传权限:

i、 e.不同于OpenSSH所需的文件,采用不同的格式(RFC 4716),以避免任何可能的混淆/冲突


希望这有帮助

Stackoverflow用于帮助软件开发。你应该考虑这个问题。你怎么连接到服务器?@ Kenster:你说得对,谢谢。我能自己搬吗Jakuje:任何sftp客户端,比如FileZilla或cli sftp。由于某些原因,我错过了sftp选项。此外,由于输入错误,授权的密钥没有被密钥填充…我记不起我拼写
ssh-keygen
的次数有多少次错了…(我生成了将OpenSSH密钥转换为RCF4716的脚本,因为它们是一行代码,因此更容易插入bash脚本。我以后会更复杂:)谢谢!
no account for user 'sftpuser' found
sending userauth failure; remaining userauth methods: password
<IfModule mod_sftp.c>
  ...
  SFTPOptions IgnoreSFTPUploadPerms
  ...
</IfModule>
SFTPAuthorizedUserKeys file:~/.sftp/authorized_keys