在Ubuntu上管理FTP服务器的登录用户名密码,本质上就是管理Linux系统用户账号:创建用户用useradd,修改密码用passwd,整个过程不需要额外装什么“FTP密码管理工具”。
Ubuntu FTP服务器登录用户名密码:先搞懂身份验证逻辑
FTP服务器本身不保存密码,它只是一个“传话人”,你输入的FTP用户名和密码,最终会被交给Linux系统去验证,行业共识认为,绝大多数Ubuntu FTP服务器用的是vsftpd这款软件,它默认支持两种认证方式:
- 系统用户认证:直接使用Ubuntu的登录账号和密码,这是最常用的方式。
- 虚拟用户认证:把FTP账号单独存在数据库或文本文件里,和系统用户隔离,适合给多人开FTP但不希望他们碰服务器账号的场景。
当你遇到“ftp服务器ubuntu登陆用户名密码”这类问题时,先别急着改FTP配置,先想清楚你用的是哪种方式,如果是系统用户,改密码就是改Linux密码;如果是虚拟用户,改密码就得动数据库或文件。
Ubuntu FTP服务器登录用户名密码怎么设置
这一节讲的是从零开始,在Ubuntu上给FTP服务器创建一套能用的登录凭据,假设你刚装好一台Ubuntu服务器,准备用它做文件共享。
第一步:安装并启动vsftpd
打开终端,执行:
sudo apt update sudo apt install vsftpd
安装完成后,服务会自动启动,确认一下状态:
sudo systemctl status vsftpd
如果没启动,就手动拉起来:
sudo systemctl start vsftpd
第二步:创建FTP专用系统用户
不要直接用root登录FTP,安全风险太大,创建一个普通用户,并指定它的家目录作为FTP根目录:
sudo useradd -m ftpuser sudo passwd ftpuser
执行passwd后,系统会提示你输入两次密码,这就是以后登录FTP的密码,想验证是否创建成功,可以看/etc/passwd文件里有没有ftpuser这一行。
第三步:限制用户只能访问自己的目录
默认情况下,这个用户登录FTP后,可以顺着目录结构跑到服务器其他位置,为了安全,需要修改vsftpd配置:
sudo nano /etc/vsftpd.conf
确保以下参数是这样:
local_enable=YES write_enable=YES chroot_local_user=YES
chroot_local_user=YES的意思是,把用户关在自己的家目录里,看不到外面的世界,改完配置重启服务:
sudo systemctl restart vsftpd
第四步:测试登录
用FileZilla或命令行ftp工具连接服务器IP,输入刚才创建的ftpuser和密码,能连上,就说明这套“FTP服务器登录用户名密码”已经生效了。
修改FTP密码的常用方法
这里分三种场景,覆盖绝大多数人的需求。
passwd命令直接修改系统用户密码
这是最直接的方法,登录到Ubuntu服务器,执行:
sudo passwd ftpuser
系统会让你输入新密码,确认后立即生效,不需要重启vsftpd,因为每次FTP登录时都会实时去查系统密码。
ubuntu vsftpd 修改用户密码(虚拟用户场景)
如果当初配置的是虚拟用户,密码存在/etc/vsftpd/virtual_users.txt之类的文件里,那修改步骤就不同了。
格式是:
ftpuser 123456
每一行是用户名,下一行是密码,修改时直接用文本编辑器改密码那行,然后重建数据库:
sudo db_load -T -t hash -f /etc/vsftpd/virtual_users.txt /etc/vsftpd/virtual_users.db
最后重启vsftpd:
sudo systemctl restart vsftpd
顺便说一句,虚拟用户密码是明文存在文件里的,最好把文件权限设成只有root可读:
sudo chmod 600 /etc/vsftpd/virtual_users.txt
批量修改多个FTP用户密码
服务器上开了十几个FTP账号,挨个passwd太慢,可以写个简单循环:
for user in ftpuser1 ftpuser2 ftpuser3; do
echo "新密码" | sudo passwd --stdin $user
done
不过--stdin参数在Ubuntu上默认不可用,需要先给passwd命令开权限,或者用chpasswd更靠谱:
echo "ftpuser1:新密码1" | sudo chpasswd echo "ftpuser2:新密码2" | sudo chpasswd
这种方式适合临时批量处理,但别忘了,密码最好别写在命令行历史记录里,执行完可以清一下history。
Ubuntu FTP密码忘了怎么办
忘记FTP密码是常事,尤其那些半年没动过的服务器,别慌,按下面的步骤找回控制权。
用root权限重置密码
只要能登录服务器终端,密码忘了就不是大事,直接重置:
sudo passwd ftpuser
如果连sudo密码也忘了,那就得重启服务器进入恢复模式,或者用安装U盘挂载文件系统,修改/etc/shadow文件,这个方法稍微有点折腾,但网上教程很多,操作前记得备份。
检查vsftpd配置是否锁定了用户
有时候密码没忘,但就是登录失败,这时要检查vsftpd配置里是否有这样的参数:
userlist_enable=YES userlist_deny=YES
userlist_deny=YES意味着/etc/vsftpd.userlist文件里的用户会被拒绝登录,如果
ftpuser在这个列表里,删掉它,再重启服务。
常见错误:密码正确却登录失败
还有一种情况,密码正确,但FTP客户端一直报“登录错误”,这往往不是密码问题,而是FTP根目录权限不对,比如你给ftpuser设置的家目录是/home/ftpuser,但该目录属主不是ftpuser:
sudo chown ftpuser:ftpuser /home/ftpuser
这一条就能解决大部分“登录失败”的怪问题。
Ubuntu FTP服务器登录用户名密码常见问题
问题1:FTP登录提示530 Login incorrect?
优先检查用户名和密码是否输错,尤其是密码里带特殊字符时,客户端可能转义错误,如果确认没错,再检查/etc/vsftpd.conf里的pam_service_name=vsftpd,以及/etc/pam.d/vsftpd是否调用了正确的系统认证模块,多数情况下,是PAM配置和系统用户不匹配导致认证失败。
问题2:修改FTP密码后需要重启vsftpd服务吗?
如果改的是系统用户密码,不需要重启,因为vsftpd每次登录都会调用PAM去验证,如果改的是虚拟用户密码并重建了数据库,那就需要重启vsftpd,让进程重新加载数据库文件。
问题3:如何查看当前FTP服务器上有哪些用户?
这个问题没有一条命令直接列出“FTP用户”,因为FTP用户就是系统用户,你可以查看所有能登录系统的用户:
cat /etc/passwd | grep -E '/bin/bash|/bin/sh'
如果用的是虚拟用户,直接查看虚拟用户配置文件,比如/etc/vsftpd/virtual_users.txt,里面就是所有FTP账号列表。
最后说一句,FTP协议本身是明文传输的,密码在网络上相当于裸奔,如果条件允许,优先用SFTP或FTPS替代,整套用户名密码体系不变,但安全性会高一个台阶。
首发原创文章,作者:王坚,如若转载,请注明出处:https://idctop.com/article/565397.html




