温馨提示×

centos sftp 如何自动上传

小樊
60
2026-09-02 22:56:20
栏目: 智能运维

在 CentOS 上实现 SFTP 自动上传,常见有几种方式,下面按最常用、最稳妥的顺序给你说明,并附示例。


一、使用 sftp + 批处理脚本(最简单)

1️⃣ 准备密码方式(不推荐,但可用)

需要 sshpass

yum install -y sshpass

2️⃣ 编写 SFTP 批处理脚本

vim sftp_upload.sh
#!/bin/bash

HOST=192.168.1.100
USER=sftpuser
PASS=yourpassword
LOCAL=/data/test.txt
REMOTE=/upload/test.txt

sshpass -p "$PASS" sftp -o StrictHostKeyChecking=no $USER@$HOST <<EOF
put $LOCAL $REMOTE
bye
EOF
chmod +x sftp_upload.sh
./sftp_upload.sh

✅ 适合:临时脚本、内网环境


二、使用 SSH 密钥(推荐 ✅)

1️⃣ 生成密钥

ssh-keygen -t rsa

2️⃣ 拷贝公钥到 SFTP 服务器

ssh-copy-id sftpuser@192.168.1.100

3️⃣ 编写自动上传脚本

vim sftp_auto.sh
#!/bin/bash

sftp sftpuser@192.168.1.100 <<EOF
cd /upload
put /data/test.txt
bye
EOF
chmod +x sftp_auto.sh

✅ 不需要密码
✅ 安全、稳定
✅ 可用于 cron


三、结合 crontab 定时自动上传

crontab -e

每天凌晨 2 点上传:

0 2 * * * /root/sftp_auto.sh >> /var/log/sftp.log 2>&1

四、使用 lftp(更强大,支持断点)

yum install -y lftp
lftp sftp://user:pass@host <<EOF
put /data/test.txt -o /upload/test.txt
bye
EOF

或密钥方式:

lftp sftp://user@host -e "put file; bye"

五、常见问题

❓ SFTP 被限制只能 SFTP 不能 SSH

确保脚本使用 sftp,不是 scp

❓ 权限拒绝

  • 目标目录是否有写权限
  • SELinux 是否限制
setenforce 0  # 测试用

✅ 推荐方案总结

场景 推荐方式
安全稳定 SSH 密钥 + sftp
定时任务 sftp + crontab
大文件 lftp
临时使用 sshpass

如果你愿意,可以告诉我:

  • CentOS 版本
  • SFTP 服务器是否你控制
  • 是否必须密码登录

我可以帮你写完整可直接用的脚本。

0 踩