VM中Linux系统通过SFTP传输文件

需求是将Windows系统中的文件传到VM下Linux系统中(CentOS7),记录下使用SFTP传输文件的操作方法。

一、相关配置

#创建sftp组:
groupadd sftp
#创建一个用户sftpuser:
useradd -g sftp -s /bin/false sftpuser
#设置sftpuser用户的密码,需要输入两次确认密码:
passwd sftpuser

#创建一个sftp的上传目录:(如指定已有目录则无需创建,跳过此步)
mkdir /datas/sftpfiles
#修改用户sftpuser所在的目录:
usermod -d /datas/sftpfiles sftpuser
配置sshd_config
vi /etc/ssh/sshd_config

#找到如下这行,并注释掉
#Subsystem sftp /usr/libexec/openssh/sftp-server

#添加如下几行(如果添加之后出现问题,则添加到最后)
Subsystem sftp internal-sftp       #这行指定使用sftp服务使用系统自带的internal-sftp
Match User sftpuser                #这行用来匹配用户
ChrootDirectory /datas/sftpfiles   #用chroot将用户的根目录指定到/datas/sftpfiles,这样用户就只能在/datas/sftpfiles下活动
AllowTcpForwarding no
ForceCommand internal-sftp         #指定sftp命令

#保存退出

为什么用 internal-sftp 而不用默认的 sftp-server,这是因为:
这是一个进程内的 sftp 服务,当用户 ChrootDirectory 的时候,将不请求任何文件;
更好的性能,不用为 sftp 再开一个进程。

#设定Chroot目录权限:
chown -R root:root /datas/sftpfiles
chmod 755 /datas/sftpfiles

#建立SFTP用户登入后可写入的目录:
mkdir /datas/sftpfiles/sftpuser      #如指定已有目录则无需创建,跳过此步,后面路径对应填写即可
chown -R sftpuser:sftp /datas/sftpfiles/sftpuser/
chmod 755 /datas/sftpfiles/sftpuser/

#重启sshd服务:
service sshd restart
关闭SElinux:
vi /etc/sysconfig/selinux

#找到如下这行 
SELINUX=enforcing

#修改为
SELINUX=disabled

二、文件传输

以WinSCP为例,打开后输入上面配置好的sftp用户名和密码,登录即可在物理机与Linux系统进行文件传输。

原文地址:https://www.cnblogs.com/LukeSteven/p/13490404.html