sftp命令是一款交互式的文件传输程序,命令的运行和使用方式与ftp命令相似,
但是,sftp命令对传输的所有信息使用ssh加密,它还支持公钥认证和压缩等功能。
工作中我们可能会需要搭建一个sftp服务,来进行文件的上传和下载。本文将讲解一下在linux系统服务器上sftp服务的搭建过程。
1.创建一个用户组sftp
#创建sftp用户组
groupadd sftp
#查看用户组信息
cat /etc/group
2.创建一个用户tester,并将其加入sftp用户组中,同时修改用户密码
useradd -g sftp -s /bin/false tester
#修改新建用户密码
passwd tester
3.新建用户主目录,并设置权限
mkdir -p /data/sftp/tester
#指定为用户主目录
usermod -d /data/sftp/tester tester
chown root:sftp /data/sftp/tester #文件夹所有者必须为root,用户组可以不是root
chmod 755 /data/sftp/tester #权限不能超过755,否则会导致登录报错,可以是755
4.新建用户文件上传目录,并设置权限
mkdir /data/sftp/tester/upload
chown tester:sftp /data/sftp/tester/upload
chmod 755 /data/sftp/tester/upload
5.编辑修改配置文件/etc/ssh/sshd_config
打开配置文件/etc/ssh/sshd_config,将如下内容添加至配置文件末尾
Subsystem sftp internal-sftp
Match Group sftp
#设置sftp登录之后的目录
ChrootDirectory /data/sftp/tester/%u
ForceCommand internal-sftp
AllowTcpForwarding no
X11Forwarding no
注意。一般原配置文件中已经存在Subsystem配置,只需将其注释掉即可。如下
# Subsystem sftp /usr/libexec/openssh/sftp-server
6.重启服务
setenforce 0
service sshd restart
7.验证
登录另一台服务器,执行
#此处测试IP
sftp tester@127.0.0.1
执行命令后,按照提示输入密码,登陆成功。ok,大功告成,可以愉快的上传和下载文件了。
补充一下:
今天服务器报sftp文件上传失败,经查为登录失败。原来sftp用户密码默认有效期为3个月,密码失效了。。。
马上修改:
#将密码设为永久有效
chage -M 99999 tester
再试一下,登陆成功。