1、安装openssl
OpenSSL安装,版本要高于0.9.6
[middle@wjxserver ~]$ rpm -qf `which openssl`
openssl-1.0.1e-42.el6_7.1.x86_64
如果没有安装openssl,请安装openssl,注意选择安装openssl版本,避免选项有心脏出血漏洞的版本。
检查openssl当前版本是否修复心脏出血漏洞:
[middle@wjxserver ~]$ rpm -q openssl-1.0.1e-42.el6_7.1.x86_64 --changelog |grep 'CVE-2014-0160'
- fix CVE-2014-0160 - information disclosure in TLS heartbeat extension
2、安装openssh
服务器版本要高于4.8sp1
[middle@wjxserver ~]$ rpm -qf `which sshd`
openssh-server-5.3p1-84.1.el6.x86_64
[root@wjxserver ~]# which sshd
/usr/sbin/sshd
注意,上面是检查安装openssh的服务器版本,检查openssh客户端版本信息如下:
[middle@wjxserver ~]$ rpm -qf `which ssh`
openssh-clients-5.3p1-84.1.el6.x86_64
3、配置
确认sshd启动脚本SSHD的值指向正确的sshd版本的执行文件
[root@wjxserver ~]# cat /etc/init.d/sshd|grep SSHD=
SSHD=/usr/sbin/sshd
4、帐号设置
SFTP的账户直接使用Linux操作系统账户,我们可以用useradd命令来创建账户
#创建sftponly组:
[root@wjxserver ~]# groupadd sftponly
开设SFTP账号:
#创建账号根目录
[root@wjxserver ~]# mkdir -p /data/dir1/sftp/sftp-jxwxcs/
#新建SFTP帐号
[root@wjxserver ~]# useradd -g sftponly -s /sbin/nologin -d /data/dir1/sftp/sftp-jxwxcs/ sftp-jxwxcs
useradd:警告:此主目录已经存在。
不从 skel 目录里向其中复制任何文件。
#修改帐号密码
[root@wjxserver ~]# passwd sftp-jxwxcs
#修改帐号主目录所有者和属性
[root@wjxserver ~]# chown root.root /data/dir1/sftp/sftp-jxwxcs/
[root@wjxserver ~]# chmod 755 /data/dir1/sftp/sftp-jxwxcs/
#创建上传目录
[root@wjxserver ~]# mkdir /data/dir1/sftp/sftp-jxwxcs/upload/
#修改上传文件夹的所属用户和组:
[root@wjxserver ~]# chown sftp-jxwxcs.sftponly /data/dir1/sftp/sftp-jxwxcs/upload/
#修改账号最大天数
chage -M 99999 sftp-jxwxcs
[root@vmcxftp01 upload]# chage -l
用法:chage [选项] 用户名
选项:
-d, --lastday 最近日期 将最近一次密码设置时间设为“最近日期”
-E, --expiredate 过期日期 将帐户过期时间设为“过期日期”
-h, --help 显示此帮助信息并退出
-I, --inactive 失效密码 将因过期而失效的密码设为“失效密码”
-l, --list 显示帐户年龄信息
-m, --mindays 最小天数 将两次改变密码之间相距的最小天数设为“最小天数”
-M, --maxdays 最大天数 将两次改变密码之间相距的最大天数设为“最大天数”
-W, --warndays 警告天数 将过期警告天数设为“警告天数”
5、设置sshd_config。
通过Chroot限制用户的根目录
编辑/etc/ssh/sshd_config,注销掉Subsystem sftp /usr/libexec/openssh/sftp-server 这行,增加如下内容:
Subsystem sftp internal-sftp -l INFO -f AUTH
Match group sftponly
ChrootDirectory %h
X11Forwarding no
AllowTcpForwarding no
ForceCommand internal-sftp
MaxAuthTries 3
MaxSessions 30
【备注】以上配置后的sftp用户登录日志记录在/var/log/secure
6、重启sshd服务
[root@wjxserver ~]# service sshd reload
重新载入 sshd:[确定]
7、测试登录
Connecting to 192.168.19.240...
sftp> ls
Couldn't get handle: Permission denied
出现上面的错误提示是因为系统启动了SELINUX,关掉这个功能即可:
[root@wjxserver sftp]# cat /etc/selinux/config|grep SELINUX=
# SELINUX= can take one of these three values:
SELINUX=
enforcing
修改为:
[root@wjxserver sftp]# cat /etc/selinux/config|grep SELINUX=
# SELINUX= can take one of these three values:
SELINUX=
disabled
然后重启。或者setenforce 0
[root@wjxserver sftp]# setenforce 0
sftp> put install.log
Uploading install.log to /upload/install.log
install.log 100% 36KB 35.5KB/s 00:00
sftp> LS
install.log
sftp> ls
install.log
sftp> cd ..
sftp> ls
upload
从上面可以看出,可以正常使用了。
参考:
http://www.freeoa.net/osuport/sysadmin/use-sftp-instead-ftp-transfer-files_2700.html