一、前言
linux自带sftp功能,只要配置一个账号,就能用sftp来上传下载文件。
当需要sftp服务器测试的时候,很好用,只要有linux服务器就行了,不用花钱买sftp软件。
二、sftp账号设置方法
1.登录你的linux服务器
2.创建父目录
sudo mkdir -p /home/sftp/sftpuser
这个目录当做用户目录。
3.创建用户,指定用户目录
# 创建用户 sftpuser,指定 home sudo useradd -m -d /home/sftp/sftpuser -s /usr/sbin/nologin sftpuser
这里创建了一个nologin用户sftpuser,这个用户禁止ssh登录。
4.设置用户密码
sudo passwd sftpuser
这个是给sftpuser用户设置密码,输入后会提示你输入两次新密码。
5.给用户目录配置权限
sudo chown root:root /home/sftp/sftpuser sudo chmod 755 /home/sftp/sftpuser
这里设置sftpuser目录属于root用户,权限是755.
6.配置上传目录
sudo mkdir -p /home/sftp/sftpuser/data sudo chown root:root /home/sftp/sftpuser/data sudo chmod 755 /home/sftp/sftpuser/data
这里再创建一个data目录,设置属于root用户,权限755,用来给用户上传文件用。
7.配置账号仅允许sftp传输
sudo vi /etc/ssh/sshd_config
用这个命令打开配置文件,注意,然后在这个文件的末尾加上:
match user sftpuser
chrootdirectory /home/sftp/%u/data
forcecommand internal-sftp
passwordauthentication yes
allowagentforwarding no
x11forwarding no
permittunnel no
allowtcpforwarding no
其中设置了chrootdirectory ,意思是以data目录为根目录;
passwordauthentication ,意思是允许账号密码登录(如果不设置,有可能只能用秘钥登录,就得看其他地方的全局配置了)。
8.保存配置文件
#先按esc,然后输入这个,然后回车保存 :wq
9.重启配置文件
sudo systemctl restart sshd
10.准备测试
根目录只有root用户能创建文件夹,sftpuser不能创建,所以先创建几个测试用。
sudo mkdir -p /home/sftp/sftpuser/data/upload sudo mkdir -p /home/sftp/sftpuser/data/download sudo chmod -r 777 /home/sftp/sftpuser/data/*
这里创建了两个文件夹,upload和download,然后设置权限777,所有用户都能用。
11.使用filezilla测试,输入服务器ip,用户名是sftpuser,密码是自己设置的用户密码,注意端口输入22。(sftp端口22)

如图,sftp连接后,以data作为根目录(用户看到就是/),其中是测试步骤创建的download文件夹与upload文件夹。
注意sftpuser用户不能直接在根目录里上传下载文件,需要在下级文件夹才行。(download文件夹与upload文件夹)
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持代码网。
发表评论