CentOS SFTP配置中常见错误及解决方法
导读:CentOS SFTP配置常见错误与排查要点 一 服务与网络连通性 症状:客户端提示连接超时或“Connection refused”。 排查与修复: 确认 SSH 服务已运行并开机自启:sudo systemctl status ss...
CentOS SFTP配置常见错误与排查要点
一 服务与网络连通性
- 症状:客户端提示连接超时或“Connection refused”。
- 排查与修复:
- 确认 SSH 服务已运行并开机自启:
sudo systemctl status sshd,必要时执行sudo systemctl start sshd & & sudo systemctl enable sshd。 - 检查 防火墙放行 22/TCP:
sudo firewall-cmd --list-all;若未放行,执行sudo firewall-cmd --permanent --add-service=ssh & & sudo firewall-cmd --reload(或放行端口:sudo firewall-cmd --permanent --add-port=22/tcp & & sudo firewall-cmd --reload)。 - 测试网络与端口:
ping < IP>、telnet < IP> 22或nc -vz < IP> 22,确认路由与端口可达。 - 查看服务监听:
ss -tnlp | grep :22,确保 sshd 正在监听。 - 变更配置后重启服务:
sudo systemctl restart sshd。
- 确认 SSH 服务已运行并开机自启:
二 配置语法与关键参数
- 症状:sshd 启动失败或 SFTP 子系统不可用,日志出现语法或指令不支持报错。
- 排查与修复:
- 核对 /etc/ssh/sshd_config 中 SFTP 子系统声明:推荐使用内置模块
Subsystem sftp internal-sftp;若使用外部程序,路径通常为 /usr/libexec/openssh/sftp-server(路径因发行版可能不同)。 - 使用 Match User/Group 做隔离时,确保块内参数正确且闭合;常见组合:
Match User sftpuser ChrootDirectory /data/sftp/%u ForceCommand internal-sftp AllowTcpForwarding no X11Forwarding no - 避免冲突:同一用户或组内不要混用
internal-sftp与外部sftp-server。 - 修改后执行语法检查并重启:
sudo sshd -t & & sudo systemctl restart sshd。 - 若日志出现 “Unsupported option”,说明该 OpenSSH 版本不支持对应指令,需升级或移除相关选项。
- 核对 /etc/ssh/sshd_config 中 SFTP 子系统声明:推荐使用内置模块
三 权限与 Chroot 目录
- 症状:登录后立即断开、无法列目录或写入失败。
- 排查与修复(Chroot 场景):
- ChrootDirectory 指定目录及其所有上级目录的所有者必须为 root,权限不超过 755(如 750/755),否则 SFTP 会拒绝会话或无法进入。
- 为用户可写目录(如上传目录)在 Chroot 下单独授权:
sudo mkdir -p /data/sftp/sftpuser/upload sudo chown sftpuser:sftpuser /data/sftp/sftpuser/upload sudo chmod 755 /data/sftp/sftpuser sudo chmod 775 /data/sftp/sftpuser/upload - 非 Chroot 场景:家目录常见权限为 755,用户对其有读写权限;若仅上传目录需写入,可设为 775 并调整属主属组。
- 修改后重启:
sudo systemctl restart sshd。
四 SELinux 与日志定位
- 症状:配置与权限看似正确,但依旧失败;或仅在特定目录访问被拒。
- 排查与修复:
- 检查 SELinux 状态:
getenforce(返回 Enforcing/Permissive/Disabled)。 - 临时排除干扰:
sudo setenforce 0(测试用,勿长期关闭)。 - 针对主目录访问,可启用布尔值:
sudo setsebool -P sftp_home_dir on。 - 若自定义目录(如上传目录)被拒,修正安全上下文:
sudo semanage fcontext -a -t ssh_home_t "/data/sftp(/.*)?" sudo restorecon -Rv /data/sftp - 关键日志:
- CentOS 常见为 /var/log/secure(记录认证、sshd 事件)。
- 也可使用
journalctl -u sshd -f实时查看。
- 修复完成后恢复 SELinux 策略或设为 enforcing,并重启服务。
- 检查 SELinux 状态:
五 认证方式与连接体验
- 症状:密码正确仍被拒绝、密钥登录失败或登录缓慢。
- 排查与修复:
- 密码认证:确保
PasswordAuthentication yes(如需口令登录);密钥登录时,检查用户家目录下 ~/.ssh/authorized_keys 权限为 600、目录 ~/.ssh 为 700,公钥内容正确。 - 登录缓慢:在 /etc/ssh/sshd_config 中关闭 GSSAPI:
GSSAPIAuthentication no,重启服务。 - 版本兼容:部分旧版本 OpenSSH 不支持新指令(如某些 Match/子系统用法),建议升级至较新版本(至少 4.8p1 以上)。
- 客户端验证:使用 FileZilla/WinSCP 测试,确认主机、端口、协议(SFTP)、用户名与密钥/密码无误。
- 密码认证:确保
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: CentOS SFTP配置中常见错误及解决方法
本文地址: https://pptw.com/jishu/756812.html
