在 Lightsail 上使用 scp 于 Linux 实例之间传输文件 - Amazon Lightsail

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

在 Lightsail 上使用 scp 于 Linux 实例之间传输文件

在 Linux 中使用安全复制(scp)命令将文件从本地计算机传输到 Linux 或 Unix 实例,以及从 Amazon Lightsail 中的一个实例传输到另一个实例。要了解有关 scp 命令的更多信息,请参阅 man7 网站上的 scp(1) — Linux 手册页面

本教程将指导您完成将文件从一个 Lightsail 实例复制到另一个实例的步骤。

前提条件

  • 您有两个 Lightsail 实例正在运行,它们都带有公有 IP 地址。要获取实例的公有 IP 地址。登录到 Lightsail 控制台,然后复制您的实例旁边显示的公有 IP 地址。

  • 您可以使用 SSH 密钥对访问这两个实例。有关更多信息,请参阅 连接到 Linux 实例

步骤 1:将私有密钥(.pem)文件保存到本地计算机

完成以下步骤,将私有密钥(.pem)文件保存到本地计算机。目标实例的私有密钥文件用于将文件从一个实例安全地传输到另一个实例。要在同一个 AWS 区域 之间复制文件,您需要使用该区域的默认密钥。要在不同区域的实例之间复制文件,您需要使用目标实例所在区域的默认密钥。要了解有关密钥对的更多信息,请参阅 SSH 和连接到您的实例

注意

如果您使用自己的密钥对,或者使用 Lightsail 控制台创建了密钥对,请找到您自己的私有密钥,并使用它来连接到您的实例。在您上传自己的密钥或使用 Lightsail 控制台创建密钥对时,Lightsail 不存储您的私有密钥。没有您的私有密钥,无法使用 scp 将文件传输到您的实例。

要将私有密钥(.pem)保存到本地计算机
  1. 登录 Lightsail 控制台

  2. 在顶部导航栏上选择用户名,然后从下拉菜单中选择账户

  3. 选择 SSH Keys(SSH 密钥)选项卡。

  4. 向下滚动到页面的 Default keys(默认密钥)部分。

  5. 对于要将文件传输到其中的实例所在的 AWS 区域,选择默认私有密钥旁边的下载

    Lightsail 控制台中的 SSH 密钥对。
  6. 将私有密钥保存在您的本地驱动器上的安全位置。

    您可能希望将下载的密钥移动到存储所有 SSH 密钥的目录,例如用户主目录中的“Keys”文件夹。您将需要引用在本指南下一部分保存私有密钥的目录。如果私有密钥尝试使用 .pem 以外的格式保存,则应在保存之前手动将格式更改为 .pem

步骤 2:更改私有密钥的权限

在以下过程中,您将更改私有密钥文件的权限,以便只有您可以读取和写入该文件。

要更改私有密钥文件的权限
  1. 在本地机器上打开终端窗口。

  2. 输入以下命令,使密钥对的私有密钥只能由您读写。这是某些操作系统所需的最佳安全实践。

    sudo chmod 400 /path/to/private-key.pem

    在该命令中,将 /path/to/private-key 替换为保存实例所用密钥对的私有密钥的目录路径。

    示例:

    sudo chmod 400 /Users/user/Keys/LightsailDefaultKey-us-west-2.pem

步骤 3:将私有密钥传输到您的实例

在以下步骤中,您将通过在本地计算机上运行 scp 命令将私有密钥传输到您的源实例。

要使用 scp 将私有密钥从您的计算机传输到源实例
  1. 确定私有密钥文件在计算机上的位置以及在实例上的目标路径。在以下示例中,私有密钥文件的名称是 private-key.pem,源实例的用户名是 ec2-user,源实例的 IPv4 地址是 public-ipv4-address,源实例的 IPv6 地址是 public-ipv6-addressdestination-path/ 是源实例上您要将私有密钥传输到其中的位置。

    注意

    根据实例使用的蓝图,您可以指定以下用户名之一:

    • AlmaLinux OS 9、Amazon Linux 2、Amazon Linux 2023、CentOS Stream 9、FreeBSD 和 openSUSE 实例:ec2-user

    • Debian 实例:admin

    • Ubuntu 实例:ubuntu

    • Bitnami 实例:bitnami

    • Plesk 实例:ubuntu

    • cPanel 和 WHM 实例:centos

    • IPv4)要将私有密钥文件传输到实例,请从计算机中输入以下命令。

      scp -i /path/private-key.pem /path/private-key.pem ec2-user@public-ipv4-address:path/
    • IPv6)如果实例具有 IPv6 地址,要将私有密钥文件传输到实例,请从计算机中输入以下命令。IPv6 地址必须用方括号 ([ ]) 括起来,并且必须对方括号进行转义 (\)。

      scp -i /path/private-key.pem /path/private-key.pem ec2-user@\[public-ipv6-address\]:path/
  2. 如果您尚未使用 SSH 连接到实例,则会看到如下响应:

    The authenticity of host 'ec2-198-51-100-1.compute-1.amazonaws.com (10.254.142.33)'
    can't be established.
    RSA key fingerprint is 1f:51:ae:28:bf:89:e9:d8:1f:25:5d:37:2d:7d:b8:ca:9f:f5:f1:6f.
    Are you sure you want to continue connecting (yes/no)?

    输入 yes

  3. 如果传输成功,则响应的形式与下方类似:

    Warning: Permanently added 'ec2-198-51-100-1.compute-1.amazonaws.com' (RSA) 
    to the list of known hosts.
    private-key.pem                                100%   480     24.4KB/s   00:00

现在,您已将私有密钥传输到源实例,接下来可以安全地连接到目标实例并将文件传输到其中。继续执行下一步,以了解如何操作。

步骤 4:在 Lightsail Linux 和 Unix 实例之间安全地传输文件

在以下过程中,您将从一个实例(源实例)运行 scp 命令,以将文件传输到另一个实例(目标实例)。

要使用 scp 在实例之间传输文件
  1. 使用 SSH 连接到源实例。您可以使用本地计算机上的终端程序进行连接,也可以使用 Lightsail 中基于浏览器的 SSH 客户端进行连接。有关更多信息,请参阅 连接到 Linux 实例

  2. 确定源文件在源实例上的位置以及在目标实例上的目标路径。在以下示例中,私有密钥文件的名称是 private-key.pem,实例的用户名是 ec2-user,实例的 IPv4 地址是 public-ipv4-address,实例的 IPv6 地址是 public-ipv6-addressdestination-path/目标实例上您要将文件传输到其中的位置。

    • IPv4)要将文件从源实例传输到目标实例,请从源实例输入以下命令。

      scp -i /path/private-key.pem /path/my-file.txt ec2-user@public-ipv4-address:destination-path/
    • IPv6)要将文件从源实例传输到目标实例,请从源实例输入以下命令。IPv6 地址必须用方括号 ([ ]) 括起来,并且必须对方括号进行转义 (\)。

      scp -i /path/private-key.pem /path/my-file.txt ec2-user@\[public-ipv6-address\]:destination-path/
  3. 如果您尚未使用 SSH 连接到目标实例,则会看到如下响应:

    The authenticity of host 'ec2-198-51-100-1.compute-1.amazonaws.com (10.254.142.33)'
    can't be established.
    RSA key fingerprint is 1f:51:ae:28:bf:89:e9:d8:1f:25:5d:37:2d:7d:b8:ca:9f:f5:f1:6f.
    Are you sure you want to continue connecting (yes/no)?

    输入 yes

  4. 如果传输成功,则响应的形式与下方类似:

    Warning: Permanently added 'ec2-198-51-100-1.compute-1.amazonaws.com' (RSA) 
    to the list of known hosts.
    my-file.txt                                100%   480     24.4KB/s   00:00