使用SCP或Rsync安全地通过专用网络传输文件
Anne655
・4 分钟阅读
前提条件
- 两个实例(我们会叫他们
server_a
和server_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_a
到server_b
,它将不再要求密码,如果公钥对不在~/.ssh/id_rsa
中,那么你可以使用-i
参数(你还需要在scp
和rsync
命令中使用这个参数)指定它所在的位置。
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_a
到server_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
选项允许'归档模式'在保留属性(如所有者,组和权限)的同时递归复制文件。