在 CentOS 上修改 SFTP 密码,本质上就是修改 系统用户的密码,因为 SFTP 一般是基于 SSH 的用户认证。下面是几种常见方式,按使用场景说明。
passwd 命令(最常用 ✅)如果你有服务器登录权限(root 或该用户本身):
passwd
然后按提示输入旧密码和新密码。
passwd 用户名
示例:
passwd sftpuser
输入两次新密码即可,无需旧密码(root 权限下)
有时密码改了仍无法登录,可能是用户被限制。
grep sftpuser /etc/passwd
正常应为:
sftpuser:x:1001:1001::/home/sftpuser:/bin/bash
如果是:
/sbin/nologin
或
/bin/false
但 SFTP 仍然可用,只要 SSH 配置允许(见下文)。
vim /etc/ssh/sshd_config
确认以下内容:
Subsystem sftp internal-sftp
或:
Subsystem sftp /usr/libexec/openssh/sftp-server
Match User sftpuser
ChrootDirectory /home/sftpuser
ForceCommand internal-sftp
AllowTcpForwarding no
✅ 只要用户有密码 + SSH 权限,就可以 SFTP 登录。
systemctl restart sshd
chage -l sftpuser
若已过期:
chage -d 0 sftpuser
或设置永不过期:
chage -M -1 sftpuser
查看:
ls /home/sftpuser/.ssh/
如果有:
authorized_keys
说明是 密钥登录,改密码无效。
✅ 解决方式:
# 修改 SFTP 用户密码
passwd sftpuser
# 重启 SSH
systemctl restart sshd
如果你愿意,可以告诉我:
我可以给你更精确的配置方案。