无法连接到SFTP服务器
sudo systemctl status sshd确认服务是否处于active (running)状态。若未运行,用sudo systemctl start sshd启动。ufw防火墙,确保允许SSH端口(默认22):sudo ufw allow 22/tcp;若使用firewalld,执行sudo firewall-cmd --permanent --add-port=22/tcp && sudo firewall-cmd --reload。ping <服务器IP>测试网络是否可达;用telnet <服务器IP> 22验证端口是否开放(若提示“Connection refused”,需检查防火墙或SSH服务)。/etc/ssh/sshd_config,确保Subsystem sftp行未被注释(如Subsystem sftp /usr/lib/openssh/sftp-server),修改后重启SSH:sudo systemctl restart sshd。连接速度慢
ssh -v <用户名>@<服务器IP>查看连接过程的详细日志,定位慢的原因(如DNS解析慢、网络延迟)。/etc/ssh/sshd_config,将GSSAPIAuthentication设置为no,减少认证时间;修改后重启SSH服务。“Permission denied”或“not authorized”错误
ssh组(默认允许SFTP访问):sudo usermod -aG ssh <用户名>;修改后需注销并重新登录生效。/home/<用户名>)需归root所有,权限设为755:sudo chown root:root /home/<用户名> && sudo chmod 755 /home/<用户名>。/home/<用户名>/uploads)需归用户所有,权限设为750:sudo chown <用户名>:<用户组> /home/<用户名>/uploads && sudo chmod 750 /home/<用户名>/uploads。sudo setsebool -P sftp_home_dir on允许访问主目录;若启用AppArmor,用sudo apparmor_status查看是否有相关限制,调整配置文件。SFTP子系统未启用或配置错误
/etc/ssh/sshd_config,确保Subsystem sftp指向正确的二进制文件(如/usr/lib/openssh/sftp-server或internal-sftp)。若使用internal-sftp(推荐,无需额外安装),需配合Match组限制用户:Match Group sftp_users
ChrootDirectory /sftp_root/%u
ForceCommand internal-sftp
AllowTcpForwarding no
X11Forwarding no
修改后重启SSH:sudo systemctl restart sshd。ChrootDirectory,目录必须归root所有,权限设为755,且不能有写入权限(避免用户逃逸chroot环境)。通过日志定位具体错误
/var/log/auth.log(Ubuntu默认日志路径),用sudo tail -f /var/log/auth.log实时查看错误信息(如“invalid user”“password authentication failed”“permission denied”),根据日志提示针对性解决。端口冲突或修改端口后无法连接
sudo netstat -tulnp | grep 22查看22端口是否被其他服务占用。若占用,修改/etc/ssh/sshd_config中的Port为未使用的端口(如2222),重启SSH后,记得更新防火墙规则允许新端口。/etc/ssh/sshd_config,修改MaxStartups(如MaxStartups 10000),增加最大并发连接数,避免因连接数过多拒绝新连接。