修改CentOS SFTP配置文件(/etc/ssh/sshd_config)的详细步骤
sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak
sudo su -
使用文本编辑器(如vi
/nano
)打开/etc/ssh/sshd_config
文件:
sudo vi /etc/ssh/sshd_config
或(若系统未安装nano
,可通过sudo yum install nano -y
安装):
sudo nano /etc/ssh/sshd_config
找到Subsystem sftp
行(通常位于文件末尾),确保未被注释(无#
前缀)。默认路径为/usr/libexec/openssh/sftp-server
,也可替换为internal-sftp
(更轻量,无需额外进程):
# 原始配置(默认)
Subsystem sftp /usr/libexec/openssh/sftp-server
# 修改为(推荐)
Subsystem sftp internal-sftp
作用:定义SFTP服务的运行方式,internal-sftp
是OpenSSH内置模块,无需单独安装。
通过Match
块限制特定用户组(如sftpusers
)的访问权限,增强安全性:
Match Group sftpusers
ChrootDirectory %h # 将用户限制在其家目录(需设置正确权限)
ForceCommand internal-sftp # 强制使用SFTP,禁止SSH shell访问
AllowTcpForwarding no # 禁用TCP转发(防止隧道攻击)
X11Forwarding no # 禁用X11转发
说明:
Match Group sftpusers
:匹配 sftpusers
组的用户;ChrootDirectory %h
:将用户根目录锁定为其家目录(如/home/username
);ForceCommand internal-sftp
:禁止用户执行shell命令,仅允许SFTP操作。若需限制特定用户(如ftpuser
),可将Match
块改为Match User
:
Match User ftpuser
ChrootDirectory /home/ftpuser
ForceCommand internal-sftp
AllowTcpForwarding no
X11Forwarding no
作用:仅允许ftpuser
通过SFTP访问其家目录。
若未创建sftpusers
组,需先创建组并添加用户:
# 创建sftpusers组
sudo groupadd sftpusers
# 添加用户至sftpusers组(如username)
sudo usermod -aG sftpusers username
# 设置用户家目录权限(关键!ChrootDirectory要求父目录属root且权限为755)
sudo chown root:root /home/username
sudo chmod 755 /home/username
注意:用户家目录需属root,否则SFTP连接会报错。
Esc
键,输入:wq
(保存并退出);Ctrl+O
(保存),Ctrl+X
(退出)。修改配置后,需重启SSH服务使更改生效:
sudo systemctl restart sshd
验证服务状态(确保服务正常运行):
sudo systemctl status sshd
若显示active (running)
,则表示服务已启动。
使用SFTP客户端(如命令行工具)验证配置是否生效:
sftp username@your_server_ip
预期结果:
ChrootDirectory
,用户登录后将直接进入其家目录(如/home/username
);ls
、put
、get
等SFTP命令,确认功能正常;Match Group
,非sftpusers
组用户仍可通过SSH登录(需调整配置禁用SSH shell访问)。ChrootDirectory
指定的目录(如家目录)必须属root,且权限为755
,否则SFTP连接会失败;sshd -T | grep sftp
命令检查SFTP配置语法是否正确;/var/log/secure
)定位问题(如权限错误、配置语法错误)。