温馨提示×

如何使用Ubuntu SFTP进行文件传输

小樊
40
2025-12-11 03:56:11
栏目: 智能运维

Ubuntu SFTP文件传输实用指南

一 连接与登录

  • 在本地 Ubuntu 终端使用命令连接远程 SFTP(基于 SSH,默认端口 22):
    • 基本连接:sftp username@hostname
    • 指定端口:sftp -o Port=2222 username@hostname
    • 指定私钥:sftp -o IdentityFile=~/.ssh/id_ed25519 username@hostname
    • 连接成功进入交互提示符:sftp>
  • 说明:SFTP 与 SSH 共用端口与认证方式,首次连接可能需要确认主机指纹并输入密码或使用密钥登录。

二 常用交互命令

  • 会话与帮助
    • 查看帮助:help?
    • 退出会话:exitquitbye
  • 路径与目录
    • 打印工作目录:pwd(远程)、lpwd(本地)
    • 切换目录:cd remote_dirlcd local_dir
    • 列目录:lslls
    • 建删目录:mkdir remote_dirrmdir remote_dir
  • 文件传输
    • 上传:put local_file [remote_file]
    • 下载:get remote_file [local_file]
    • 批量上传/下载:mput *.txtmget *.log
  • 权限与删除
    • 修改权限:chmod 644 file
    • 删除文件:rm file
  • 本地命令与临时 Shell
    • 执行本地命令:!command(如 !ls!df -h
    • 进入本地 Shell:!,返回 SFTP:exit
  • 提示:批量传输通配符在交互式 SFTP 中可用;若需递归传输目录,见下一节。

三 目录递归传输与实用技巧

  • 递归传输目录
    • 上传目录:put -r local_folder
    • 下载目录:get -r remote_folder
  • 指定远端起始目录
    • 登录即进入目标目录:sftp -o Port=2222 username@hostname:/remote/start/dir
  • 常见排错
    • 权限不足:确保远端目标目录对登录用户可写(如 chmod 755 或调整属主)。
    • 端口或密钥错误:核对 -o Port=-o IdentityFile= 参数及私钥权限(建议 600)。
    • 连接被拒或超时:确认远端 SSH/SFTP 已启用、端口开放及防火墙策略。

四 图形化客户端与替代工具

  • 图形化工具(适合不熟悉命令行的场景)
    • FileZillaWinSCP:支持 SFTP 协议,拖拽上传下载,跨平台易用。
  • 命令行替代
    • scp(简单复制场景):上传 scp file user@host:/path;下载 scp user@host:/path/file .;递归复制目录加 -r;指定端口用大写 -P;指定私钥用 -i。示例:scp -P 2222 -i ~/.ssh/id_rsa file user@host:/opt/
  • 说明:SFTP 与 SCP 均基于 SSH,在安全性与身份认证方式上一致。

五 作为 SFTP 服务端的快速配置(可选)

  • 安装并启用服务
    • sudo apt update && sudo apt install openssh-server -y
    • sudo systemctl start ssh && sudo systemctl enable ssh
  • 基本 SFTP 配置(编辑 /etc/ssh/sshd_config
    • 确保启用 SFTP 子系统:Subsystem sftp internal-sftp
    • 限制某用户组仅 SFTP 且禁 Shell(示例组 sftpusers
      Match Group sftpusers
          ChrootDirectory %h
          ForceCommand internal-sftp
          AllowTcpForwarding no
          X11Forwarding no
      
    • 创建 SFTP 用户与目录(示例用户 sftpuser
      sudo groupadd sftpusers
      sudo useradd -m -G sftpusers -s /usr/sbin/nologin sftpuser
      sudo passwd sftpuser
      sudo chown root:root /home/sftpuser
      sudo chmod 755 /home/sftpuser
      sudo mkdir -p /home/sftpuser/uploads
      sudo chown sftpuser:sftpusers /home/sftpuser/uploads
      
    • 使配置生效:sudo systemctl restart ssh
  • 安全建议
    • 仅开放必要端口,优先使用 SSH 密钥 认证,必要时限制来源 IP,避免将 SSH 端口 22 对公网完全放开。

0