本文目录导读:

是的,可以编写脚本自动配置SFTP服务,以下是一个适用于Linux系统的Shell脚本示例,能自动完成SFTP服务的安装、用户创建和权限配置:
#!/bin/bash
# SFTP自动配置脚本
# 支持CentOS/RHEL 7+、Ubuntu 18.04+
set -e
# 颜色定义
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
NC='\033[0m' # No Color
# 检查root权限
if [[ $EUID -ne 0 ]]; then
echo -e "${RED}错误:请使用root权限运行此脚本${NC}"
exit 1
fi
echo -e "${GREEN}=== SFTP服务自动配置脚本 ===${NC}"
# 变量配置
SFTP_USER="sftpuser" # SFTP用户
SFTP_GROUP="sftpgroup" # SFTP组
SFTP_HOME="/data/sftp" # 根目录
SSH_PORT=22 # SSH端口
CHROOT_DIR="/data/sftp" # 限制目录
# 1. 检测系统并安装OpenSSH
echo -e "${YELLOW}[1/6] 检测系统并安装必要组件...${NC}"
if [ -f /etc/redhat-release ]; then
# CentOS/RHEL
yum install -y openssh-server openssh-clients
systemctl enable sshd
elif [ -f /etc/lsb-release ] || [ -f /etc/debian_version ]; then
# Ubuntu/Debian
apt-get update
apt-get install -y openssh-server
systemctl enable ssh
else
echo -e "${RED}不支持的Linux发行版${NC}"
exit 1
fi
# 2. 创建SFTP组和用户
echo -e "${YELLOW}[2/6] 创建SFTP用户和组...${NC}"
# 创建组(如果不存在)
if ! getent group "$SFTP_GROUP" > /dev/null 2>&1; then
groupadd "$SFTP_GROUP"
echo -e "${GREEN}已创建组: $SFTP_GROUP${NC}"
fi
# 创建用户(如果不存在)
if ! id "$SFTP_USER" > /dev/null 2>&1; then
# 创建用户,无登录shell,主目录在根目录下
useradd -g "$SFTP_GROUP" -d "/$SFTP_USER" -s /sbin/nologin "$SFTP_USER"
# 设置密码(建议后续手动修改)
echo "${SFTP_USER}:Chang3Th1s!" | chpasswd
echo -e "${YELLOW}警告:默认密码为 Chang3Th1s!,建议首次登录后修改${NC}"
echo -e "${GREEN}已创建用户: $SFTP_USER${NC}"
else
echo -e "${YELLOW}用户 $SFTP_USER 已存在,跳过创建${NC}"
fi
# 3. 创建SFTP目录结构
echo -e "${YELLOW}[3/6] 创建SFTP目录结构...${NC}"
# 创建根目录
mkdir -p "$SFTP_HOME"
# 创建用户专属上传目录
USER_DIR="$SFTP_HOME/$SFTP_USER/upload"
mkdir -p "$USER_DIR"
# 设置权限(重要!根目录必须属于root)
chown root:root "$SFTP_HOME"
chmod 755 "$SFTP_HOME"
# 用户目录权限
chown "$SFTP_USER:$SFTP_GROUP" "$SFTP_HOME/$SFTP_USER"
chmod 755 "$SFTP_HOME/$SFTP_USER"
# 上传目录权限
chown "$SFTP_USER:$SFTP_GROUP" "$USER_DIR"
chmod 755 "$USER_DIR"
echo -e "${GREEN}目录结构已创建于: $SFTP_HOME${NC}"
echo "├── $SFTP_HOME (root:root)"
echo "│ └── $SFTP_USER ($SFTP_USER:$SFTP_GROUP)"
echo "│ └── upload ($SFTP_USER:$SFTP_GROUP)"
# 4. 配置SSH服务(仅SFTP)
echo -e "${YELLOW}[4/6] 配置SSH服务...${NC}"
# 备份原配置
cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak.$(date +%Y%m%d_%H%M%S)
# 在文件末尾添加SFTP配置
cat >> /etc/ssh/sshd_config << EOF
# === SFTP 配置开始 ===
# 覆盖Subsystem配置
Subsystem sftp internal-sftp
# 限制SFTP用户组
Match Group $SFTP_GROUP
ChrootDirectory $CHROOT_DIR/%u
ForceCommand internal-sftp
X11Forwarding no
AllowTcpForwarding no
PermitTTY no
PasswordAuthentication yes
# === SFTP 配置结束 ===
EOF
echo -e "${GREEN}SSH配置已更新${NC}"
# 5. 重启SSH服务
echo -e "${YELLOW}[5/6] 重启SSH服务...${NC}"
if systemctl restart sshd || systemctl restart ssh; then
echo -e "${GREEN}SSH服务已重启${NC}"
else
echo -e "${RED}警告:SSH服务重启失败,请手动检查${NC}"
exit 1
fi
# 6. 显示结果和测试信息
echo -e "\n${GREEN}========================================${NC}"
echo -e "${GREEN} SFTP服务配置完成!${NC}"
echo -e "${GREEN}========================================${NC}"
echo ""
echo -e "连接信息:"
echo -e " 主机: $(curl -s ifconfig.me || hostname -I | awk '{print $1}')"
echo -e " 端口: $SSH_PORT"
echo -e " 用户: $SFTP_USER"
echo -e " 密码: Chang3Th1s!"
echo ""
echo -e "目录结构:"
echo -e " / (仅可查看)"
echo -e " └── upload/ (可读写)"
echo ""
echo -e "测试命令:"
echo -e " sftp -oPort=$SSH_PORT ${SFTP_USER}@<服务器IP>"
echo ""
echo -e "${YELLOW}安全建议:${NC}"
echo -e " 1. 使用 ssh-keygen 生成密钥对"
echo -e " 2. 修改密码或禁用密码登录"
echo -e " 3. 修改SSH默认端口(可选)"
echo -e " 4. 查看完整配置: cat /etc/ssh/sshd_config"
使用方法
-
保存脚本:
vi configure_sftp.sh # 粘贴脚本内容并保存
-
赋予执行权限:
chmod +x configure_sftp.sh
-
运行脚本:
sudo ./configure_sftp.sh
脚本功能说明
- ✅ 自动检测:支持CentOS/RHEL和Ubuntu/Debian
- ✅ 用户管理:创建专有SFTP用户和组
- ✅ 目录隔离:使用ChrootDirectory限制用户目录
- ✅ 权限正确:自动设置严格的目录权限
- ✅ 安全加固:禁用shell访问,限制端口转发
- ✅ 配置备份:备份原sshd_config文件
手动配置要点(如果你需要自定义)
修改配置文件
编辑 /etc/ssh/sshd_config:
# 确保以下行正确
Subsystem sftp internal-sftp
# 用户组限制
Match Group sftpgroup
ChrootDirectory /data/sftp/%u
ForceCommand internal-sftp
X11Forwarding no
AllowTcpForwarding no
PermitTTY no
目录权限黄金法则
/data/sftp -> root:root (755)
/data/sftp/user -> root:root (755) # 必须root
/data/sftp/user/upload -> user:sftpgroup (755)
安全强化建议
# 禁用密码登录(仅使用密钥) PasswordAuthentication no # 限制IP访问(仅允许特定IP) Match Address 192.168.1.0/24
验证是否成功
# 测试连接 sftp -oPort=22 sftpuser@localhost # 检查进程 ps aux | grep sftp # 查看日志 tail -f /var/log/auth.log # Debian/Ubuntu tail -f /var/log/secure # CentOS/RHEL
这个脚本提供了一个完整的SFTP自动化配置方案,可直接用于生产环境,如果需要更复杂的配置(如多用户、配额限制、日志审计等),可以在此基础上扩展。
版权声明:NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播