sftp是Secure File Transfer Protocol的缩写,安全文件传送协议。可以为传输文件提供一种安全的加密方法。sftp 与 ftp 有着几乎一样的语法和功能。SFTP 为 SSH的一部分,是一种传输档案至 Blogger 伺服器的安全方式。其实在SSH软件包中,已经包含了一个叫作SFTP(Secure File Transfer Protocol)的安全文件传输子系统,SFTP本身没有单独的守护进程,它必须使用sshd守护进程(端口号默认是22)来完成相应的连接操作,所以从某种意义上来说,SFTP并不像一个服务器程序,而更像是一个客户端程序。SFTP同样是使用加密传输认证信息和传输的数据,所以,使用SFTP是非常安全的。但是,由于这种传输方式使用了加密/解密技术,所以传输效率比普通的FTP要低得多,如果您对网络安全性要求更高时,可以使用SFTP代替FTP。
第一步:查看openssl的版本
ssh -V
版本必须大于4.8p1,低于这个版本需要升级。
第二步:创建sftp组
groupadd sftp
第三步:创建一个sftp用户
useradd -g sftp -s /bin/false sftpuser
创建一个用户名为sftpuser的用户,指定组sftp,且该用户不能登陆到系统
passwd sftpuser
为sftpuser用户设置密码
第四步:创建sftp指定Chroot目录
mkdir -p /data/sftp/
第五步:配置sshd_config配置文件
vi /etc/ssh/sshd_config
找到如下这行,用#符号注释掉。
# Subsystem sftp /usr/libexec/openssh/sftp-server
在文件最后面添加如下几行内容,然后保存:
Subsystem sftp internal-sftp #配置一个外部子系统,值是子系统的名字和对应的命令行
Match Group sftp #限定只有sftp组的才能访问
ChrootDirectory /data/sftp/ #设置属于用户组sftp的用户访问的根文件夹
ForceCommand internal-sftp #强制执行这里指定的命令而忽略客户端提供的任何命令
AllowTcpForwarding no #是否允许TCP转发
X11Forwarding no #是否允许进行 X11 转发
Subsystem sftp internal-sftp
Match Group sftp
ChrootDirectory /data/sftp/
ForceCommand internal-sftp
AllowTcpForwarding no
X11Forwarding no
如果启用了 UseLogin ,那么X11转发将被自动禁止。
第六步:修改Chroot目录权限及建立sftp用户写入权限目录
目录权限这里有几点需要注意的:
1.ChrootDirectory设置的目录权限及其所有的上级文件夹权限,属主必须是root;
2.ChrootDirectory设置的目录权限及其所有的上级文件夹权限,只有属主能拥有写权限,也就是说权限最大设置只能是755;
3.因为ChrootDirectory设置的目录只有root用户才有写的权限,这就导致sftpuser用户没法上传文件到该目录,因此可以ChrootDirectory设置的目录下新建一个sftpuser属主目录,让其拥有755权限即可。
①修改Chroot目录权限
chown -R root:sftp /data/sftp/
chmod -R 755 /data/sftp/
②建立sftp用户写入权限目录
cd /data/sftp/
mkdir upload
chown sftpuser:sftp upload
chmod 755 upload
第七步:重启sshd服务
7.x之前:
service sshd restart
7.x之后:
systemctl restart sshd
第八步:测试sftp登录
本机测试:
sftp [email protected]
远程连接测试:
sftp sftpuser@远程机ip地址
cd 更改远程工作目录
lcd 更改和/或打印本地工作目录
ls 列出远程目录的内容
lls 列出本地目录的内容
pwd 打印远程工作目录
lpwd 打印本地工作目录
explore 浏览您的本地目录,即打开本地目录
get test.txt 把sftp服务器上当前目录下test.txt文件下载到本地当前目录
put test.txt 把本地文件当前目录下test.txt上传到ftp服务器当前目录
注意:sftp服务器cd切换目录只能在ChrootDirectory设置的目录及其子目录中切换,且以上命令可以根据需要灵活使用,这里只做基本使用介绍!!!