因此,我设法将ProFTPD配置为允许系统用户登录密码。我有两个问题:umask和pk 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]但是,当用户登录put
一个sa文件时,上载的文件将获得其最初拥有的权限(我正在使用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上传通常包含自己的权限,这是SFTPOPEN
请求的一部分。要使SFTP上传的行为更像FTP上传,就ProFTPD配置(例如 Umask
)而言,您想使用以下命令配置mod_sftp
为忽略上传权限IgnoreSFTPUploadPerms
SFTPOptions
:
<IfModule mod_sftp.c>
...
SFTPOptions IgnoreSFTPUploadPerms
...
</IfModule>
对于公钥身份验证问题,SFTPLog
您配置的内容应该有更多关于可能是问题的线索。可能配置的文件不存在,或者没有必要的权限?请记住,~/.ssh/authorized_keys
OpenSSH经常使用该文件,并且该文件的格式与ProFTPD所需的格式不同。因此,我经常使用:
SFTPAuthorizedUserKeys file:~/.sftp/authorized_keys
即一个不同的OpenSSH需要什么文件,以不同的格式(RFC 4716),以避免任何可能的混乱/冲突。
希望这可以帮助!
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句