首先要安装ssh,这里检查是否安装了ssh,如果没装,则要先装ssh,注意开放端口信息
ssh -V
一、创建文件目录,创建用户
# 创建文件目录
mkdir -p /home/LdRun/data/sftp/sftpuser
chown root:root /home/LdRun/data/sftp/sftpuser
chmod 755 /home/LdRun/data/sftp/sftpuser
# 新建用户组sftp
groupadd sftp
# 新建用户sftpuser,并且设置不支持ssh系统登录,只能登录sftp服务器
# -g 用户组; -d 指定home目录; -s 不能登陆系统; -M 不创建home目录
useradd -g sftp -d /home/LdRun/data/sftp/sftpuser -M -s /sbin/nologin sftpuser
# 设置密码
#例如: echo "123456" | passwd --stdin sftpuser
#登入账号:sftpuser 密码:123456
#/home/LdRun/data/sftp/sftpuser为sftp 为访问的路径
# echo "新密码" | passwd --stdin 用户名
echo "LandPower" | passwd --stdin sftpuser
# 由于/data/sftp/sftpuser的用户是root,其它用户都没有写的权限
# 所以要在该目录下新建一个目录用于文件的上传下载
mkdir -p /home/LdRun/data/sftp/sftpuser/upload
chown sftpuser:sftp /home/LdRun/data/sftp/sftpuser/upload
chmod 755 /home/LdRun/data/sftp/sftpuser/upload
二、配置SSH和SFTP服务器
# 防止后期配置文件出错后无法还原
cp /etc/ssh/sshd_config /etc/ssh/sshd_config.backup
# 打开配置文件
vi /etc/ssh/sshd_config
# 下面这几项的默认值也是它们,所以这一步可以跳过
PermitRootLogin yes
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
# 注释掉这行
# Subsystem sftp /usr/libexec/openssh/sftp-server
# 文件末尾添加以下内容
Subsystem sftp internal-sftp
Match Group sftp
ChrootDirectory /home/LdRun/data/sftp/%u
ForceCommand internal-sftp
# 下面两项是与安全有关
AllowTcpForwarding no
X11Forwarding no
三、防火墙相关配置
firewall-cmd --list-all # 查看已开放的端口
firewall-cmd --permanent --zone=public --add-port=22/tcp # 开通sftp服务22默认端口
firewall-cmd --reload # 刷新防火墙,重新载入
四、重启
systemctl restart sshd.service
五、windows上传测试
1.下载 WinSCP-5.19.2-Setup.exe文件
下载地址:https://winscp.net/download/WinSCP-6.1.2-Setup.exe
2.安装后,如图输入远端地址,前面设置的用户名以及密码
3.登入成功后,即可对文件读写,右侧为服务器文件
六,其余补充
SFTP描述
SSH文件传输协议(英语:SSH File Transfer Protocol,也称Secret File Transfer Protocol,中文:安全文件传送协议,英文:Secure FTP或字母缩写:SFTP)是一种数据流连接,提供文件访问、传输和管理功能的网络传输协议
SFTP可以为传输文件提供一种安全的加密方法,SFTP为SSH的一部分,采用的是SSH加密隧道,由于这种传输方式使用了加密/解密技术,安装性方面比FTP要强一些,所以传输效率比普通的FTP要低得多,如果您对网络安全性要求更高时,可以使用SFTP代替FTP
SFTP与FTP有着几乎一样的语法和功能,SFTP本身没有单独的守护进程,它必须使用sshd守护进程( 端口号默认是22)来完成相应的连接和答复操作,所以从某种意义上来说,SFTP并不像一个服务器程序,而更像是一个客户端程序
SFTP依赖的是系统自带的SSH服务,不像FTP还需要额外的进行安装(vsftp服务), SFTP是只要确保你的Linux 账号能连接,SFTP默认连接账号就是Linux root账号和密码
在CentOS7中,sftp只是ssh的一部分,一般最小化安装也会安装sshd相关的服务及配置。所以ssh相关安装在此不做描述