linux搭建 sftp服务 && sftp自动上传脚本

1、新建sftp用户组 && sftp 用户家目录

groupadd sftp
mkdir -p /sftpdata/sftp/  

2、新建sftp用户

useradd -d /sftpdata/sftp/tester -m -g sftp -s /sbin/nologin tester 
passwd tester

3、赋权
PS: tester 属主为root(必须),属组为sftp(必须),权限不大于755

chown  root:sftp -R /sftpdata/sftp/tester
chmod 755  /sftpdata/sftp/tester

4、设置可以写入的目录
PS:upload属主属组也固定,如下

mkdir /sftpdata/sftp/tester/upload
chown tester:sftp /sftpdata/sftp/tester/upload
chmod 755 /sftpdata/sftp/tester/upload

6、配置sshd_config

vim  /etc/ssh/sshd_config	
# 注释:Subsystem sftp /usr/libexec/openssh/sftp-server
# 追加下面内容
Subsystem sftp internal-sftp   
Match Group sftp                
ChrootDirectory /sftpdata/sftp/%u    
ForceCommand internal-sftp      
AllowTcpForwarding no        
X11Forwarding no

重启ssh

 systemctl restart sshd

7、测试
PS: ssh端口非22, -P $PORT

sftp -P 22 [email protected]   

在这里插入图片描述

8、自动上传脚本(放在客户端),需要lftp命令

#!/bin/bash
export PATH=$PATH:/sbin:/bin:/usr/local/sbin:/usr/local/bin
# SFTP服务器
IP=192.168.199.201
# 上传文件所在目录
SRCDIR=/var/log/
# 上传文件名字
FILENAME=secure
# SFTP目的目录,注意这个才是正确写法
DESDIR=/upload
# SFTP服务器的用户名&&密码&&端口
USER=tester
PASSWD="1"
PORT=22

lftp -u ${USER},${PASSWD} sftp://${IP}:${PORT} <<EOF
cd ${DESDIR}
lcd ${SRCDIR}
put ${FILENAME}
bye
EOF

你可能感兴趣的:(linux基础类,linux,服务,linux,ssh,服务器)