在 Linux 下实现 SFTP 自动登录,常见且安全的方式有几种,按推荐程度说明如下。
ssh-keygen -t rsa -b 4096
一路回车即可,默认生成:
~/.ssh/id_rsa(私钥)~/.ssh/id_rsa.pub(公钥)ssh-copy-id user@sftp.server.com
或手动追加到服务器:
~/.ssh/authorized_keys
sftp user@sftp.server.com
✅ 不再需要输入密码
⚠️ 密码会明文出现,存在安全风险
# CentOS
yum install sshpass
# Ubuntu
apt install sshpass
sshpass -p 'your_password' sftp user@sftp.server.com
适合自动化任务:
sftp -b batch.txt user@sftp.server.com
batch.txt 示例:
put localfile.txt /remote/path/
bye
lftp sftp://user@sftp.server.com -e "put file.txt; bye"
配合密钥或 .netrc 使用更方便。
| 方式 | 安全性 | 推荐度 |
|---|---|---|
| SSH 密钥 | ⭐⭐⭐⭐⭐ | ✅ 强烈推荐 |
| sshpass | ⭐ | ❌ 仅临时 |
| lftp | ⭐⭐⭐⭐ | ✅ 可用 |
如果你有 具体场景(如 cron 定时、脚本、Docker、Windows),可以告诉我,我给你更精确的方案。