首页 帮助中心 常见问题 如何使用SSH传输文件
如何使用SSH传输文件
时间 : 2025-04-08 16:32:44 编辑 : 华纳云 阅读量 : 39

  当您需要通过SSH发送文件时(无论是用于远程备份、服务器迁移还是日常文件管理),SSH 文件传输是一项必备技能。安全的文件传输可保护您的数据免遭未经授权的访问、拦截或损坏。这在跨公共网络工作时尤其重要,因为传统方法(如 FTP)会暴露您的信息。

  我们中的许多人仍然使用过时的文件传输方法,只是因为我们已经习惯了它们,而没有意识到我们在重要数据方面所承担的风险。基于 SSH 的传输为您提供了强大的安全性,而不会使事情变得复杂。从数据库备份到配置文件的所有内容都会被加密,但当您通过 SSH 发送文件时,该过程保持简单。

  在本指南中我们将探讨如何使用SSH传输文件,查看SCP和SFTP 等相关工具,并逐步完成 Linux 和 Windows 服务器之间安全文件传输的步骤。您将找到实际的命令和实际示例,这些命令和示例在现实世界中实际有效 - 无论您使用的是 Ubuntu、CentOS 还是 Windows Server。

  这些技术将帮助您保证数据安全,同时提高服务器管理工​​作的效率。让我们从 SSH 文件传输的基础知识开始。

/uploads/images/202504/08/88e82f356a9c5f4cfc0c15509a81d8c6.jpg  

  什么是SSH?

  什么是 SSH?SSH(安全外壳)也称为安全套接字外壳,是一种加密网络协议,可在计算机之间建立受保护的连接,即使在不安全的网络上也是如此。当您使用 SSH 连接到远程服务器时,您来回发送的所有内容都会被加密 - 确保您的密码、命令和数据不会被窥探。

  可以将 SSH 视为通过公共互联网的安全隧道。任何试图拦截您的连接的人都只会看到加密数据,而不是您的实际信息。这种加密会自动进行,在幕后工作以保护您。

  SSH 之所以如此强大,是因为它处理身份验证的方式。SSH 不再仅仅依赖密码(密码很容易被猜到或被盗),而是可以使用我们所谓的 SSH 密钥:

  公钥:此部分位于服务器上 - 有点像只有您才有钥匙的特殊锁。

  私钥:它保留在您的计算机上,永远不应共享 - 它是解锁您访问服务器的唯一密钥。

  这种基于密钥的方法有两个重要作用:它使您的连接更安全,并为自动化打开大门。您可以设置脚本来连接服务器而无需输入密码,这非常适合计划备份或其他例行任务。

  虽然大多数人都知道 SSH 可用于远程登录,但它的作用远不止于此。SSH 支持隧道(为其他应用程序创建安全路径)、端口转发(安全地重定向流量)以及与我们最相关的安全文件传输。这就是为什么系统管理员和开发人员每天都依赖安全套接字外壳来移动文件而不损害安全性。

  什么是SCP?

  SCP(安全复制协议)是一款简单但功能强大的工具,基于 SSH 构建。顾名思义,它能够利用 SSH 的所有加密功能在计算机之间安全地复制文件。

  SCP 的优点在于您可能已经安装了它。如果您的系统上有 SSH(大多数 Linux 和 macOS 机器都有),则 SCP 是免费的 - 无需额外的软件。安装了 OpenSSH 的 Windows 用户也可以立即访问 SCP。

  我喜欢 SCP 的一点是它的直观性。命令遵循逻辑模式,只要用过几次就很容易记住。它与常规复制命令非常相似,但具有在互联网上安全工作的能力。

  以下是在现实情况下使用 SCP 的方法:

  将文件发送到远程服务器: 

scp /path/to/local/file username@remote_host:/path/to/remote/directory

  从服务器下载文件

 scp username@remote_host:/path/to/remote/file /path/to/local/directory

  直接在两台服务器之间移动文件(无需先下载到您的机器):

scp usernameA@serverA:/path/to/file usernameB@serverB:/path/to/destination/

  需要传输整个文件夹及其所有内容?只需添加 -r(递归)选项:

scp -r /local/directory username@remote_host:/remote/directory/

  SCP 会自动处理加密,因此您无需担心配置安全设置。正是这种简单性和安全性的结合,使得安全复制协议文件传输成为在机器之间安全移动文件的首选解决方案。

  如何在服务器之间通过 SSH 传输文件

  在远程服务器上启用 SSH

  在服务器之间通过 SSH 传输文件之前,您需要确保服务器上的 SSH 已启动并正在运行。这就像在拨打电话之前检查电话线是否正常一样。设置方法如下:

  Linux 服务器

  如果您使用的是 Ubuntu 或其他基于 Debian 的系统,那么准备 Linux SSH 非常简单:

  安装 OpenSSH 服务器:首先,更新您的软件包列表并安装 SSH 服务器:

  sudo apt-get update
  sudo apt-get install openssh-server

  启动并启用 SSH 服务:现在让我们运行该服务并确保它在服务器启动时自动启动:

  sudo systemctl start ssh
  sudo systemctl enable ssh

  配置高级设置(可选):为了提高安全性,您可能需要编辑 /etc/ssh/sshd_config 以禁用 root 登录或更改默认端口。这样可以使您的服务器不易受到针对标准配置的自动攻击。

  想要跳过所有这些设置吗?查看华纳云 Linux VPS 解决方案,其中远程 SSH 已预先配置并可立即使用。

  SSH Windows 服务器

  Windows 在 SSH 支持方面取得了长足进步。最新版本包含 OpenSSH 作为内置功能,您可以启用它:

  安装 OpenSSH 服务器

  前往“设置”→“应用程序”→“可选功能”

  点击“添加功能” ,在列表中 找到“OpenSSH 服务器”

  选择它并单击安装

  通过 PowerShell 启动服务:以管理员身份打开 PowerShell 并运行:

  Start-Service sshd
  Set-Service -Name sshd -StartupType 'Automatic'

  配置防火墙:不要忘记允许端口 22(标准 SSH 端口)上的流量通过 Windows 防火墙。否则,连接在到达 SSH 服务器之前就会被阻止。

  对于具有适当安全配置的企业级 Windows 托管,请查看华纳云 的 Windows 许可证。

  使用 SCP(和 SFTP)传输文件

  一旦两端都启用了 SSH,您就可以开始移动文件了。您有两个主要选项:SCP(用于快速 SCP 文件传输)和 SFTP(用于更具交互性的会话)。

  使用 SCP 命令

  当您确切知道要复制什么以及在哪里复制时,SCP 命令 Linux 是完美的选择:

  本地到远程传输示例:将文件从计算机复制到服务器:

  scp /local/path/file.txt username@remote_host:/remote/path/

  远程到本地传输示例:从服务器下载文件到您的计算机:

  scp username@remote_host:/remote/path/file.txt /local/path/

  两个远程服务器之间示例:两个远程服务器之间的 SCP(当您不想使用自己的带宽时非常方便):

  scp usernameA@serverA:/path/file.txt usernameB@serverB:/destination/path/

  递归目录传输示例:复制整个目录及其中的所有内容:

  scp -r /本地/目录用户名@远程主机:/远程/目录/

  使用 SFTP 进行交互式传输

  有时您需要浏览远程系统,然后再决定要传输的内容。这就是 SFTP 的亮点——它感觉很像旧版 FTP,但具有 SSH 的所有安全性。

  使用以下方式连接到服务器:

  sftp 用户名@远程主机

  然后你就可以使用熟悉的命令了:

  ls 查看有哪些文件可用

  cd directory 更改目录

  获取文件名以下载文件

  将文件名放入上传文件

  完成后退出

  不喜欢命令行?没问题。WinSCP 和 FileZilla 等程序为 SFTP 提供了不错的图形界面,使其感觉更像是在 Windows 资源管理器或 Mac Finder 中拖放文件。这些工具非常适合从 Windows 到 Linux 的 SCP 传输。

  SFTP 的高级用例

  SFTP 不仅仅用于手动传输 - 它还可以做一些非常酷的事情:

  使用 SSHFS在本地挂载远程目录,这样服务器上的文件夹看起来就像在本地计算机上一样,可以实现无缝的 SSH 文件传输

  使用 Python 的 Paramiko、C 程序的 libssh 或 Java 的 SSHJ 等库自动执行应用程序中的 文件传输

  这些高级功能使 SFTP 成为自动备份、部署脚本和其他需要安全文件传输而无需人工干预的情况的理想选择。使用这些方法通过 SSH 传输文件时,您可以保持安全性,同时获得复杂工作流程的灵活性。

  SSH文件传输常见问题解答

  以下是有关通过 SSH 传输文件的常见问题的解答:

  问:通过 SSH 传输文件的主要优点是什么?

  答:安全!通过 SSH 传输的所有数据都经过加密,以防止被拦截或未经授权的访问。

  问:SCP 和 SFTP 有何不同?

  答: SCP 非常适合简单的复制任务;它速度快,但缺乏交互功能。SFTP 提供目录列表、权限管理和更多高级选项的交互式控制 - 所有这些都由 SSH 加密保护。

  问:我可以自动传输文件吗?

  答:当然可以!通过使用 SSH 密钥设置无密码身份验证,您可以使用 cron 作业 (Linux) 或任务计划程序 (Windows) 自动执行传输。

  问:我在转移过程中遇到了权限问题——我该怎么办?

  答:验证源目录和目标目录/文件的用户权限。相应地调整权限,或在必要时使用管理权限 (sudo)。

  问:SFTP 有专用的图形客户端吗?

  答:是的!流行的客户端包括 WinSCP、FileZilla、Cyber​​duck (Windows/macOS) 和 PuTTY (Windows)。它们提供用户友好的界面,可简化安全 SSH 文件传输管理任务。

  安全地移动文件比以往任何时候都重要,而 SSH 可以为您提供这种安全性,而不会使事情变得复杂。与老式的 FTP 或手动下载和重新上传文件不同,基于 SSH 的传输可让您的数据从始至终保持加密。

  当您确切知道需要将什么内容传输到哪里时,可以将 SCP 视为直接进行 SSH 文件传输的首选工具。当您需要浏览目录或想要更熟悉的界面时,SFTP 可以为您提供同样强大的安全性。

  以下是需要记住的:

  首先在服务器上正确设置 SSH(无论是 Linux 还是 Windows)

  当你需要快速复制文件时,可以使用 SCP

  当您想要在传输之前导航和探索时,请切换到 SFTP

  通过设置 SSH 密钥并自动执行常规传输来节省时间

  如果服务器管理是您工作中很重要的一部分,那么您可能需要查看 华纳云 的托管解决方案。他们的服务器从一开始就配置了 SSH,节省了您的设置时间并确保已实施最佳安全实践。

  SSH 文件传输乍一看似乎很技术性,但很快就会成为习惯。一旦您熟悉了这些命令,您就会想知道为什么以前要用其他方式传输敏感文件。您的数据值得这种级别的保护,现在您知道如何通过 SSH 发送文件了。

华纳云 推荐文章
怎么解决SSH连接远程新加坡服务器时的权限问题 香港云服务器如何使用SSH连接远程数据库 如何检查SSH服务是否在远程香港云服务器上运行 美国云服务器的SSH安全设置有哪些 美国服务器Ubuntu系统如何配置SSH访问 香港云服务器ssh一直连接不上怎么办 服务器如何进行ssh的使用与配置? Ubuntu系统上生成SSH密钥的步骤 Pssh如何实现多台Linux远程服务器上执行相同命令 如何通过SSH实现TCP/IP隧道(端口转发)?
活动
客服咨询
7*24小时技术支持
技术支持
渠道支持