温馨提示×

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

小樊
45
2025-11-16 15:09:08
栏目: 智能运维

Ubuntu 通过 SSH 进行文件传输的实用指南

一 准备工作

  • 在作为服务器的 Ubuntu 上安装并启动 OpenSSH Server,客户端一般已自带 OpenSSH Client
    安装与启动示例:
    sudo apt update
    sudo apt install openssh-server
    sudo systemctl start ssh
    sudo systemctl enable ssh
  • 确认服务与端口:
    sudo systemctl status ssh(应显示 active/running)
    ss -tlnp | grep :22(默认端口为 22,如修改需同步客户端参数)
  • 防火墙放行(如使用 UFW):
    sudo ufw allow ssh
  • 基本连通性测试:
    ssh username@server_ip(能登录即表示 SSH 可用)
    以上步骤完成后,即可使用基于 SSH 的文件传输工具(如 SCPSFTPrsync)。

二 常用方法

  • 使用 SCP(简单安全拷贝)

    • 从本地上传到远程:
      scp -r /path/local_file_or_dir username@server_ip:/path/remote/
      示例:scp -r ~/project user@192.168.1.10:/opt/
    • 从远程下载到本地:
      scp -r username@server_ip:/path/remote_file_or_dir /path/local/
      示例:scp -r user@192.168.1.10:/var/log/syslog ./syslog.bak
    • 指定非默认端口(注意是大写 -P):
      scp -P 2222 -r user@server_ip:/path/file ./
    • 常用选项:-r(递归目录)、-C(压缩)、-p(保留时间戳与权限)、-v(详细输出)、-i ~/.ssh/id_rsa(指定私钥)。
  • 使用 SFTP(交互式会话,适合多文件管理)

    • 连接:
      sftp username@server_ip(默认端口 22;非默认端口:sftp -oPort=2222 user@server_ip)
    • 常用交互命令:
      ls、cd、lcd(本地切换目录)、pwd、lpwd、get remote_file、put local_file、rm、mkdir、rename、exit
    • 图形化客户端:如 FileZilla、WinSCP,选择协议 SFTP,填入主机、端口、用户名与认证方式即可。
  • 使用 rsync(增量同步,适合备份与镜像)

    • 本地到远程:
      rsync -avu --delete -e ssh /path/local/ username@server_ip:/path/remote/
    • 远程到本地:
      rsync -avu --delete -e ssh username@server_ip:/path/remote/ /path/local/
    • 常用选项:-a(归档模式)、-v(详细)、-u(仅更新)、–delete(镜像删除)、-e ssh(指定使用 SSH)。

三 非默认端口与身份认证

  • 指定端口
    • SCP:scp -P 2222 …(大写 P)
    • SFTP:sftp -oPort=2222 …
    • rsync:rsync -e “ssh -p 2222” …
  • 使用 SSH 密钥免密登录(推荐)
    • 生成密钥:ssh-keygen -t rsa -b 4096(默认生成到 ~/.ssh/id_rsa~/.ssh/id_rsa.pub
    • 将公钥上传到服务器:ssh-copy-id -i ~/.ssh/id_rsa.pub username@server_ip
    • 之后 SCP/SFTP/rsync 可直接执行,无需输入密码(也可用 -i 指定私钥路径)。

四 常见问题与排查

  • 端口与连通性
    • 报错 “ssh: connect to host … port 22: Connection refused”:目标机未运行 SSH、端口被改或防火墙拦截。
      处理:确认服务运行(systemctl status ssh)、检查端口(ss -tlnp | grep :22)、放行防火墙(ufw allow ssh)、如改端口则客户端用 -P/-oPort 指定。
  • 权限与路径
    • “Permission denied”:目标目录无写权限或父目录权限不当。
      处理:确保目标路径对登录用户可写(必要时使用 sudo 调整目录属主/权限),或改传到用户有写权限的目录(如 ~/)。
  • 目录递归与参数
    • 拷贝目录忘记 -r:会报 “not a regular file”。
      处理:目录传输务必加 -r;SCP 仅传单个文件时可省略 -r
  • 主机密钥变更
    • 首次连接提示 “The authenticity of host … can’t be established.”:属正常提示,核对指纹后输入 yes 保存即可;若服务器重装导致指纹变化,需删除本地旧记录(~/.ssh/known_hosts 对应行)再连接。

0