3

因此,我设法配置 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

sftp.conf如下_

<IfModule mod_sftp.c>
    <VirtualHost $(hostname)>
        Port 23
        SFTPEngine on
        SFTPAuthorizedUserKeys file:/home/%u/.ssh/authorized_keys
        SFTPHostKey /etc/ssh/ssh_host_dsa_key
        SFTPHostKey /etc/ssh/ssh_host_rsa_key
        SFTPHostKey /etc/ssh/ssh_host_ecdsa_key
        SFTPCompression delayed
        SFTPLog /var/log/proftpd/sftp.log
    </VirtualHost>
</IfModule mod_sftp.c>

[umask]但是,当用户登录和putsa 文件时,上传的文件会获取它最初的权限(我正在使用 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 容器中运行。我错过了什么?

4

1 回答 1

2

与 FTP 不同,SFTP 上传通常包含自己的权限,作为 SFTPOPEN请求的一部分。为了使 SFTP 上传行为更像 FTP 上传,关于 ProFTPD 配置(例如 Umask),您希望使用以下配置忽略上传mod_sftp权限:IgnoreSFTPUploadPerms SFTPOptions

<IfModule mod_sftp.c>
  ...
  SFTPOptions IgnoreSFTPUploadPerms
  ...
</IfModule>

对于公钥身份验证问题,SFTPLog您配置的应该有更多关于可能是什么问题的线索。也许配置的文件不存在,或者没有必要的权限?请记住,~/.ssh/authorized_keysOpenSSH 经常使用它,并且该文件的格式与 ProFTPD 所需的格式不同。出于这个原因,我经常使用:

SFTPAuthorizedUserKeys file:~/.sftp/authorized_keys

与 OpenSSH 想要的不同的文件,采用不同的格式(RFC 4716),以避免任何可能的混淆/冲突。

希望这可以帮助!

于 2016-04-13T21:57:16.660 回答