Linux下搭建SFTP服务器
1. 登陆目标主机:$ssh user@ip
2.切到root权限 sudo -i 或直接用root 用户
3.创建用户组,便于后续管理: groupadd sftp
4.添加用户: # useradd -g sftp -s /sbin/nologin -M sftpuser ( -g 加入到sftp组 -s 禁止登录 -M 不要自动建立用户的登入目录)
5.设置密码: # passwd sftpuser
6.创建SFTP文件根目录: # mkdir -p /data/sftp
7.修改权限: # chown -R root:root /data/sftp # chmod 755 /data/sftp
8.创建用户文件目录:# mkdir -p /data/sftp/sftpuser
9.修改拥有者:# chown root:sftp /data/sftp/sftpuser
10.修改权限:# chmod 755 /data/sftp/sftpuser
11.修改配置文件:# vim /etc/ssh/sshd_config
PasswordAuthentication yes (一定要改成yes,不然可能直接登陆时被拒绝)
注释掉:Subsystem sftp /usr/libexec/openssh/sftp-server
在 文件最后添加以下配置,否则可能导致sshd服务无法启动
Subsystem sftp internal-sftp
UsePAM yes
Match Group sftp 这行用来匹配sftp组的用户,如果要匹配多个组,多个组之间用逗号分割 匹配用户的话用 Match User sftpuser
ChrootDirectory /data/sftp/%u 用chroot将用户的根目录指定到/data/sftp/%u,%u代表用户名,这样用户就只能在/data/sftp/%u下活动
ForceCommand internal-sftp 指定sftp命令
AllowTcpForwarding no 以下这两行,限制该用户使用端口转发
X11Forwarding no
12.重启服务验证:# systemctl restart sshd.service
注意:这样配置用户可以读文件,但无法上传文件,如果要上传文件,需要在目录下创建一个新目录,然后授予账号读写权限