1、基础知识
1.1、概念
sftp是Secure File Transfer Protocol的缩写,安全文件传送协议。
1.2、功能
可以为传输文件提供一种安全的加密方法。
1.3、特点
1)sftp 与 ftp 有着几乎一样的语法和功能。
2)SFTP 为 SSH的一部分,是一种传输档案至 Blogger 伺服器的安全方式。
3)SFTP本身没有单独的守护进程,它必须使用sshd守护进程(端口号默认是22)来完成相应的连接操作
4)SFTP安全性非常高
5)SSH软件已经包含SFTP安全文件传输子系统
1.4、缺点
传输方式使用了加密/解密技术,所以传输效率比普通的FTP要低得多
1.5、客户端工具
1.5.1、windows客户端
Core FTP,FileZilla, WinSCP,Xftp
1.5.2、linux客户端
1
|
sftp
username@remote ip(or remote host name)
|
2、服务端配置
2.1、环境概述
ipaddress=10.168.0.169
OS=centos 6.5
2.2、环境检查
2.2.1、查看openssh的版本
1
|
ssh
-V
|
注:要求大于4.8p1版本
2.2.2、关闭selinux
1
|
getenforce
|
如果显示如下:
1
|
Enforcing
|
则执行:
1
2
|
setenforce 0
sed
-i
's/SELINUX=enforcing/SELINUX=disabled/g'
/etc/selinux/config
|
2.3、配置步骤
2.3.1、创建sftp的存放目录
1
|
mkdir
-p
/data/sftp
|
2.3.2、创建sftp组
1
|
groupadd
sftp
|
2.3.3、配置sshd传输子系统
vim编辑/etc/ssh/sshd_config
注释掉如下行:
1
|
# Subsystem sftp /usr/libexec/openssh/sftp-server
|
最后行添加如下参数
1
2
3
4
5
6
|
Subsystem
sftp
internal-
sftp
Match Group
sftp
X11Forwarding no
AllowTcpForwarding no
ForceCommand internal-
sftp
ChrootDirectory
/data/sftp/
%u
|
2.3.4、重启服务
1
|
/etc/init
.d
/sshd
restart
|
2.3.5、创建sftp用户和相关目录
1
2
|
mkdir
/data/sftp/user1/
useradd
user1 -g
sftp
-s
/bin/false
-d
/data/sftp/user1/upload
|
注:/data/sftp/user1属主必须是root,否则无法登陆。
用户根文件夹权限查看:
1
|
ll -d
/data/sftp/user1/
|
显示如下:
1
|
drwxr-xr-x. 3 root root 4096 May 10 09:21
/data/sftp/user1
|
upload文件夹权限查看:
1
|
ll -d
/data/sftp/user1/upload/
|
显示如下:
1
|
drwx------. 2 user1
sftp
4096 May 10 09:21
/data/sftp/user1/upload/
|
2.3.6、配置sftp用户的密码
1
|
passwd
user1
|
2.3.7、配置脚本方式
1)新建脚本目录
1
|
mkdir
~
/script
|
2)vim编辑~/script/addsftpu.sh并输入如下内容
1
2
3
4
5
6
|
#!/bin/bash
user=$1
passwd
=$2
mkdir
-p
/data/sftp/
$user/
useradd
$user -g
sftp
-s
/bin/false
-d
/data/sftp/
$user
/upload
echo
"$passwd"
|
passwd
--stdin $user
|
3)授权
1
|
chmod
700 ~
/script/addsftpu
.sh
|
4)新增用户
1
2
|
cd
~
/script
.
/addsftpu
.sh user1
'pwd123'
|
3、客户端配置
3.1、新建连接
3.2、选择连接并登陆
3.3、输入密码登陆
3.4、生成加密秘钥
3.5、登陆成功