📜  带有 ssh 密钥的 scp - Shell-Bash (1)

📅  最后修改于: 2023-12-03 15:39:24.241000             🧑  作者: Mango

带有 SSH 密钥的 SCP - Shell-Bash

介绍

SCP(Secure Copy)是一种安全的远程文件传输协议,它能够在本地计算机和远程计算机之间进行文件的传输,使用了 SSH(Secure Shell)协议加密所有传输的数据。

通常,SCP 需要在每次传输文件时都需要输入远程主机的密码,但是使用 SSH 密钥可以避免每次都输入密码。

本文将介绍如何在 Shell-Bash 环境下使用带有 SSH 密钥的 SCP 进行文件传输。

前置要求

在执行本文中的命令前,您需要满足以下前提条件:

  1. 拥有一台远程主机,并可以使用 SSH 远程登录该主机;
  2. 在本地计算机和远程主机之间已经通过 SSH 生成了密钥对,并已经将公钥文件添加到远程主机的 ~/.ssh/authorized_keys 文件中。
使用

使用带有 SSH 密钥的 SCP 进行文件传输需要指定私钥文件,方法如下:

scp -i /path/to/private_key local_file remote_user@remote_host:/path/to/remote_file

其中,/path/to/private_key 是本地计算机上的 SSH 私钥文件路径,local_file 是本地要传输的文件路径,remote_user 是远程主机的用户名,remote_host 是远程主机的主机名或 IP 地址,/path/to/remote_file 是远程主机上的文件路径。

示例

接下来,我们通过一个示例演示如何使用带有 SSH 密钥的 SCP 进行文件传输。

假设我们要将本地计算机上的文件 /path/to/local_file 传输到远程主机的路径为 /path/to/remote_file,远程主机的用户名为 remote_user,远程主机的 IP 地址为 192.168.0.100

首先,我们需要执行以下命令将本地的公钥文件添加到远程主机的 ~/.ssh/authorized_keys 文件中:

cat /path/to/local_public_key | ssh remote_user@192.168.0.100 "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"

然后,我们可以使用以下命令将本地的文件传输到远程主机:

scp -i /path/to/local_private_key /path/to/local_file remote_user@192.168.0.100:/path/to/remote_file

这样,文件就会被成功地传输到远程主机上指定的路径。

结论

本文介绍了如何在 Shell-Bash 环境下使用带有 SSH 密钥的 SCP 进行文件传输。对于经常需要在本地计算机和远程主机之间进行文件传输的开发者来说,使用 SSH 密钥可以极大地提高工作效率。