![ProFTPd - 根本无法登录,持续出现 530 错误](https://linux22.com/image/802175/ProFTPd%20-%20%E6%A0%B9%E6%9C%AC%E6%97%A0%E6%B3%95%E7%99%BB%E5%BD%95%EF%BC%8C%E6%8C%81%E7%BB%AD%E5%87%BA%E7%8E%B0%20530%20%E9%94%99%E8%AF%AF.png)
无论出于什么原因,我都无法通过 FTP 客户端或命令行连接/登录我的 FTP 服务器。我使用的是 Webmin 和 ProFTPd。我已设置了一个用户,该用户具有一个简单的密码,属于 ftp 组,shell 路径为 /sbin/nologin。日志仅显示“FTP 连接已打开”和“FTP 连接已关闭”。我指定的被动端口在防火墙上处于打开状态。
好像密码不正确,但实际上正确。这是我的 proftpd.conf 文件:
# This is the ProFTPD configuration file
# $Id: proftpd.conf,v 1.1 2004/02/26 17:54:30 thias Exp $
DefaultRoot ~
ServerName "ProFTPD server"
ServerIdent on "FTP Server ready."
ServerAdmin root@localhost
ServerType standalone
#ServerType inetd
DefaultServer off
AccessGrantMsg "User %u logged in."
#DisplayConnect /etc/ftpissue
#DisplayLogin /etc/ftpmotd
#DisplayGoAway /etc/ftpgoaway
DeferWelcome off
# Use this to excude users from the chroot
DefaultRoot ~ !adm
# Use pam to authenticate (default) and be authoritative
AuthPAMConfig proftpd
AuthOrder mod_auth_pam.c* mod_auth_unix.c
# Do not perform ident nor DNS lookups (hangs when the port is filtered)
IdentLookups off
UseReverseDNS off
# Port 21 is the standard FTP port.
Port 21
# Umask 022 is a good standard umask to prevent new dirs and files
# from being group and world writable.
Umask 022
# Default to show dot files in directory listings
ListOptions "-a"
# See Configuration.html for these (here are the default values)
#MultilineRFC2228 off
#RootLogin off
#LoginPasswordPrompt on
#MaxLoginAttempts 3
#MaxClientsPerHost none
#AllowForeignAddress off # For FXP
# Allow to resume not only the downloads but the uploads too
AllowRetrieveRestart on
AllowStoreRestart on
# To prevent DoS attacks, set the maximum number of child processes
# to 30. If you need to allow more than 30 concurrent connections
# at once, simply increase this value. Note that this ONLY works
# in standalone mode, in inetd mode you should use an inetd server
# that allows you to limit maximum number of processes per service
# (such as xinetd)
MaxInstances 20
# Set the user and group that the server normally runs at.
User ftp
Group ftp
# Disable sendfile by default since it breaks displaying the download speeds in
# ftptop and ftpwho
UseSendfile no
# This is where we want to put the pid file
ScoreboardFile /var/run/proftpd.score
# Normally, we want users to do a few things.
<Global>
AllowOverwrite yes
<Limit ALL SITE_CHMOD>
AllowAll
</Limit>
PassivePorts 64000 64321
RequireValidShell off
</Global>
# Define the log formats
LogFormat default "%h %l %u %t \"%r\" %s %b"
LogFormat auth "%v [%P] %h %t \"%r\" %s"
# TLS
# Explained at http://www.castaglia.org/proftpd/modules/mod_tls.html
#TLSEngine on
#TLSRequired on
#TLSRSACertificateFile /etc/pki/tls/certs/proftpd.pem
#TLSRSACertificateKeyFile /etc/pki/tls/certs/proftpd.pem
#TLSCipherSuite ALL:!ADH:!DES
#TLSOptions NoCertRequest
#TLSVerifyClient off
##TLSRenegotiate ctrl 3600 data 512000 required off timeout 300
#TLSLog /var/log/proftpd/tls.log
# SQL authentication Dynamic Shared Object (DSO) loading
# See README.DSO and howto/DSO.html for more details.
#<IfModule mod_dso.c>
# LoadModule mod_sql.c
# LoadModule mod_sql_mysql.c
# LoadModule mod_sql_postgres.c
#</IfModule>
# A basic anonymous configuration, with an upload directory.
#<Anonymous ~ftp>
# User ftp
# Group ftp
# AccessGrantMsg "Anonymous login ok, restrictions apply."
#
# # We want clients to be able to login with "anonymous" as well as "ftp"
# UserAlias anonymous ftp
#
# # Limit the maximum number of anonymous logins
# MaxClients 10 "Sorry, max %m users -- try again later"
#
# # Put the user into /pub right after login
# #DefaultChdir /pub
#
# # We want 'welcome.msg' displayed at login, '.message' displayed in
# # each newly chdired directory and tell users to read README* files.
# DisplayLogin /welcome.msg
# DisplayFirstChdir .message
# DisplayReadme README*
#
# # Some more cosmetic and not vital stuff
# DirFakeUser on ftp
# DirFakeGroup on ftp
#
# # Limit WRITE everywhere in the anonymous chroot
# <Limit WRITE SITE_CHMOD>
# DenyAll
# </Limit>
#
# # An upload directory that allows storing files but not retrieving
# # or creating directories.
# <Directory uploads/*>
# AllowOverwrite no
# <Limit READ>
# DenyAll
# </Limit>
#
# <Limit STOR>
# AllowAll
# </Limit>
# </Directory>
#
# # Don't write anonymous accesses to the system wtmp file (good idea!)
# WtmpLog off
#
# # Logging for the anonymous transfers
# ExtendedLog /var/log/proftpd/access.log WRITE,READ default
# ExtendedLog /var/log/proftpd/auth.log AUTH auth
#
#</Anonymous>
答案1
我认为将无效的 shell 列为/sbin/nologin
有效的 shell 不是正确的做法 (它们是被故意移除的),也不允许 FTP 用户在不允许的情况下登录系统。
我认为最好的方法是简单地配置 ProFTPD,使其不需要 FTP 用户的有效 shell。
只需添加指令RequireValidShell off
到您的部分proftpd.conf
并重新加载/重新启动 ProFTPD。
<Global>
...
RequireValidShell off
</Global>
如果您在 ProFTPD 中使用 PAM 身份验证(您可能正在使用,因为它默认启用),您可能还需要在 PAM 设置中禁用对有效 shell 的要求。就我而言,我必须从我的 ProFTPD 的 PAM 配置文件中注释掉以下行 ( /etc/pam.d/proftpd
)
#auth required pam_shells.so
答案2
以 root 身份进入 shell
vi /etc/passwd
找到您的用户名,并在行尾看到:/bin/false
改成:
/bin/bash
并解决它!
(或其中显示的任何一个vi /etc/shells
:)
现在 ftp 正在您自己的用户中运行。
答案3
我想我的提示还不够好。:-) shell/sbin/nologin
不包含在/etc/shells
文件中。因此,proftpd 将该帐户视为已禁用。
答案4
我花了几个小时寻找答案,但一无所获……错误在于“用户”FTP。我创建了 4 或 5 个用户,但没有人能正常工作。最后,我尝试使用我的用户名在 Ubuntu 中。要在终端中输入以下内容:$ whoami 答案是您的 FTP 用户。对我来说答案是“mircea”。我将其放入用户框中,然后输入我的密码即可。这很简单……