使用SCP或Rsync安全地通过专用网络传输文件

・4 分钟阅读

前提条件

  • 两个实例(我们会叫他们server_aserver_b )启用了专用网络
  • 两个实例都应该在同一子网中,配置专用IP地址
  • 两个实例之间都应该有SSH连接
  • 不是root的用户(我们将它称为your_user )

生成和使用SSH密钥

使用用户名和密码验证可以传输文件,但使用SSH密钥更安全。如果你决定跳过这个部分,那么你就必须在每个命令中输入用户的远程密码。

假设server_a上的公钥对位于~/.ssh/id_rsa中,则可以运行以下命令将公钥传输到server_b ,使用server_b的专用IP地址。


ssh-copy-id your_user@192.168.0.101

出现提示时,为your_user提供密码。


ssh-copy-id your_user@192.168.0.101 /usr/bin/ssh-copy-id: INFO: Source of
key(s) to be installed:"/home/your_user/.ssh/id_rsa.pub" The
authenticity of host '192.168.0.101 (192.168.0.101)' can't be
established. ECDSA key fingerprint is
SHA256:g9dfqycqU25b567/HDjPTqaQqKhep/fysNCQAG9yJG4. ECDSA key
fingerprint is MD5:41:67:be:68:51:9b:38:a8:95:82:71:47:f1:35:39:66.
Are you sure you want to continue connecting (yes/no)? yes
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s),
to filter out any that are already installed /usr/bin/ssh-copy-id:
INFO: 1 key(s) remain to be installed -- if you are prompted now it is
to install the new keys your_user@192.168.0.101's password:

Number of key(s) added: 1

现在尝试登录到机器。


ssh your_user@192.168.0.101

检查以确保只添加所需的密钥。

如果你现在从server_aserver_b,它将不再要求密码,如果公钥对不在~/.ssh/id_rsa中,那么你可以使用-i参数(你还需要在scprsync命令中使用这个参数)指定它所在的位置。


ssh-copy-id -i /path/to/your/public_key your_user@192.168.0.101 
ssh -i /path/to/your/private_key your_user@192.168.0.101 

使用SCP传输文件

SCP代表安全副本,它通过SSH连接传输所有数据,要复制单个文件~/myfile,从server_aserver_b上的/tmp目录,我们可以发出以下命令。


scp ~./myfile your_user@192.168.0.101:/tmp

要复制一个完整的文件夹,其中包含内容(包括符号链接)你可以添加-r选项,


scp -r ~./mydir your_user@192.168.0.101:/tmp

使用Rsync传输文件

Rsync是复制文件的常用工具,它通常用于同步两个位置的内容,它使用相同的安全SSH隧道传输数据。 可以使用以下命令将完整的文件夹同步到远程/tmp目录


rsync -av ~/mydir your_user@192.168.0.101:/tmp

-v选项增加了详细程度,以便你可以按照传输的进度进行操作,-a选项允许'归档模式'在保留属性(如所有者,组和权限)的同时递归复制文件。

Anne655 profile image