首先安装sshd,一般服务器都自带,如果没有安装也可以yum或者apt-ge安装
配置sshd
vim /etc/ssh/sshd_config
在后面添加以下几行,注意要把原本的Subsystem sftp /usr/libexec/openssh/sftp-server这行配置要注释掉,不然重启sshd时会报错
Subsystem sftp internal-sftp Match Group sftp ChrootDirectory /home/wwwroot/ ForceCommand internal-sftp
创建目录 /home/wwwroot 注意,注意,注意,重要的事件说三遍 /home/wwwroot的所属组和所属主都必须是root (包括home和wwwroot),且权限是755权限,不能是777权限(暂没留意,正常都是root全新的,所以此句可忽略)
接下来创建用户组和用户
groupadd sftp
接着设置用户为mysftp,给予/home/wwwroot目录的权限,注意执行后可能会报/home/wwwroot目录已存在的错,暂时无需理会
useradd -s /bin/nologin -d /data/sftp -g sftp mysftp
为mysftp用户创建密码
echo "123456" | passwd --stdin mysftp
重启sshd
systemctl restart sshd
完成后可以使用sftp软件例如vssh,或者terminal终端进行命令行链接测试,注意**为ip地址
sftp mysftp@**.**.**.**
期间可能会报错如 mysftp@**.**.**.**: Permission denied (publickey,gssapi-keyex,gssapi-with-mic).,则需要修改sshd的配置文件
vim /etc/ssh/sshd_config
PasswordAuthentication yes
systemctl restart sshd
再次使用terminal终端进行命令行链接测试
sftp mysftp@**.**.**.**
输入密码,即可登录且只有/home/wwwroot目录权限
若使用ssh登录则提示没有权限,由于之前设置了nologin的缘故(This service allows sftp connections only.)
ssh mysftp@**.**.**.**
这时,mysftp用户即可SFTP登录,并且只能访问指定的目录。 但这时只能查看,不能上传。如果要实现上传,我们需要把当前目录的文件夹sftp用户和组权限给一下
chown mysftp:sftp /home/wwwroot/test
注意,若/home/wwwroot/test目录已存在,且里面已含有多级目录和文件,则需要递归给权限,不然只能上传新文件不能覆盖旧文件
chown -R mysftp:sftp /home/wwwroot/test
此时,mysftp用户即可实现上传和删除功能
若已创建的用户和组,想要删除,则
userdel -r 用户名 userdel -r mysftp
groupdel 组名 groupdel sftp
grep 用户名 /etc/group grep mysftp /etc/group