put 本地文件路径
上传单个文件,或 mput 本地文件*
上传多个匹配文件。SFTP上传文件的详细指南
SFTP(SSH文件传输协议)是一种基于SSH的安全文件传输协议,广泛用于服务器管理、数据备份等场景,相比传统的FTP,它通过加密通道传输数据,有效防止信息泄露,以下详细介绍命令行上传文件的操作方法,涵盖从基础连接到高级批量操作。
SFTP基础连接
在操作前,确保:
- 拥有远程服务器的IP地址、用户名和密码(或SSH密钥)。
- 本地已安装OpenSSH客户端(Linux/macOS默认安装;Windows需安装Git Bash或PuTTY)。
连接服务器命令:
sftp username@remote_server_ip
- 示例:
sftp user@192.168.1.100
- 首次连接会提示确认主机密钥,输入
yes
后按回车。 - 输入密码完成登录(若用密钥,需提前配置)。
上传文件的命令详解
登录成功后,进入SFTP交互模式,常用命令:
命令 | 作用 |
---|---|
put [本地文件] |
上传单个文件 |
mput [本地文件*] |
批量上传多个文件 |
put -r [本地目录] |
递归上传整个目录 |
lpwd |
查看本地当前路径 |
cd [远程路径] |
切换远程目录 |
lcd [本地路径] |
切换本地目录 |
上传单个文件
sftp> put local_file.txt /remote/path/
- 将本地
local_file.txt
上传到远程服务器的/remote/path/
目录。 - 若省略远程路径,默认上传到远程当前目录。
批量上传多个文件
sftp> mput *.jpg
- 上传所有
.jpg
文件到远程当前目录。 - 使用
mput *.log /var/log/
指定远程路径。
上传整个目录(递归上传)
sftp> put -r local_folder /remote/path/
-r
参数表示递归操作,上传local_folder
及其所有子内容。
高效操作技巧
-
指定本地/远程路径
上传前切换目录,避免输入长路径:sftp> lcd ~/downloads # 切换到本地下载目录 sftp> cd /var/www/html # 切换到远程Web目录 sftp> put image.png # 直接上传文件
-
非交互式命令(单行操作)
无需登录SFTP交互模式:echo "put local_file.txt /remote/" | sftp -b - user@192.168.1.100
-b -
表示从标准输入读取命令。
-
使用SSH密钥免密登录
生成密钥对后,上传公钥到服务器:ssh-copy-id user@192.168.1.100
之后使用
sftp
命令无需输入密码。
常见问题解决
-
权限拒绝错误
Couldn't create file: Permission denied
原因:远程目录无写入权限。
解决:- 检查远程目录权限:
ls -ld /remote/path
- 修改权限(需管理员权限):
chmod 755 /remote/path
- 检查远程目录权限:
-
连接超时或拒绝
Connection timed out / Connection refused
原因:服务器SSH服务未运行、防火墙拦截或IP错误。
解决:- 确认服务器IP和SSH端口(默认22)。
- 检查防火墙:
sudo ufw allow 22
(Ubuntu)。
-
文件覆盖提示
上传同名文件时,SFTP默认询问是否覆盖。
强制覆盖:put -f local_file.txt
禁用提示:sftp -o "StrictHostKeyChecking=no" user@ip
(谨慎使用)。
安全实践建议
- 启用密钥认证:比密码更安全,避免暴力破解。
- 限制用户目录:通过SSH配置
ChrootDirectory
锁定用户到特定目录。 - 日志监控:定期检查
/var/log/auth.log
(Linux)追踪SFTP登录记录。 - 使用SCP替代:单文件传输时,
scp local.txt user@ip:/path/
更高效。
引用说明:
- OpenSSH官方文档:https://www.openssh.com/manual.html
- Linux权限管理参考:《Linux命令行与Shell脚本大全》
- 安全实践建议:基于NIST SP 800-123指南
版权声明:本文基于实践经验编写,转载请注明出处。
原创文章,发布者:酷盾叔,转转请注明出处:https://www.kd.cn/ask/20794.html