1. 编辑 /etc/ssh/sshd_config 配置文件
# 修改 sftp 模块为如下
# subsystem sftp /usr/lib/openssh/sftp-server
Subsystem sftp internal-sftp -l INFO -f AUTH
Match Group sftp
X11Forwarding no
AllowTcpForwarding no
ForceCommand internal-sftp -l INFO -f AUTH
  1. 设置用户和组
groupadd sftp # 添加一个组
useradd -g sftp -s /sbin/nologin sftpuser # 添加一个用户
chown -R sftpuser:sftp /home/sftpuser/ # 设置用户目录的所有者
  1. 生成一对公私钥并存放到 sftpuser 的目录
mkdir -p /home/sftpuser/.ssh
touch /home/sftpuser/.ssh/authorized_keys
  1. 远端上传的脚本
PUTFILE=./${foldername}/${file}
# -l 参数指定限速 -i 参数指定密钥 权限为600
sftp -P 22 -l 5000 -i /path/to/your/key/sftpuser sftpuser@your.domain.com<<EOF
cd mysqlbk/files
mkdir $foldername
cd $foldername
put $PUTFILE
exit
EOF
echo "commit to sftp successfully"

Q.E.D.