当前位置:首页 > 主机动态 > 正文

sftp如何上传文件?

使用sftp命令登录服务器后,执行 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交互模式,常用命令:

sftp如何上传文件? 第1张

命令 作用
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及其所有子内容。


高效操作技巧

  1. 指定本地/远程路径

    上传前切换目录,避免输入长路径:

  2. 非交互式命令(单行操作)

    无需登录SFTP交互模式:

    echo "put local_file.txt /remote/" | sftp -b - user@192.168.1.100

    • -b -表示从标准输入读取命令。
    • 使用SSH密钥免密登录

      生成密钥对后,上传公钥到服务器:

      sftp如何上传文件? 第2张

      ssh-copy-id user@192.168.1.100

      之后使用sftp命令无需输入密码。

    • 常见问题解决

      • 权限拒绝错误

        原因:远程目录无写入权限。

        解决:

        1. 检查远程目录权限:ls -ld /remote/path
        2. 修改权限(需管理员权限):chmod 755 /remote/path
      • 连接超时或拒绝

        Connection timed out / Connection refused

        原因:服务器SSH服务未运行、防火墙拦截或IP错误。

        解决:

        1. 确认服务器IP和SSH端口(默认22)。
        2. 检查防火墙:sudo ufw allow 22(Ubuntu)。
        3. 文件覆盖提示

          上传同名文件时,SFTP默认询问是否覆盖。

          强制覆盖:put -f local_file.txt

          禁用提示:sftp -o "StrictHostKeyChecking=no" user@ip(谨慎使用)。

        4. 安全实践建议

          1. 启用密钥认证:比密码更安全,避免暴力免费。
          2. 限制用户目录:通过SSH配置ChrootDirectory锁定用户到特定目录。
          3. 日志监控:定期检查/var/log/auth.log(Linux)追踪SFTP登录记录。
          4. 使用SCP替代:单文件传输时,scp local.txt user@ip:/path/更高效。


          引用说明

          • OpenSSH官方文档:https://www.openssh.com/manual.html
          • Linux权限管理参考:《Linux命令行与Shell脚本大全》
          • 安全实践建议:基于NIST SP 800-123指南

          版权声明:本文基于实践经验编写,转载请注明出处。

          sftp如何上传文件? 第3张

0