📜  带有密码的 linux scp - Shell-Bash (1)

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

带有密码的 Linux SCP

SCP(Secure Copy)是 Linux 系统中常用的将本地文件或文件夹传输到远程主机的命令行工具。但是,使用 SCP 命令传输文件时需要手动输入远程主机的密码,如果需要进行大量的传输,则会变得非常繁琐和不安全。本文将介绍如何在 SCP 命令中使用密码,以方便程序员进行远程文件传输。

使用 SSH Key

SSH Key 是一种安全的身份验证方法,通过在本地和远程主机之间共享密钥对,可以在不输入密码的情况下进行 SSH 连接。因此,我们可以使用 SSH Key 的方式来避免在 SCP 命令中输入密码。下面是具体的步骤:

  1. 在本地主机上生成 SSH Key。在终端中输入以下命令:
$ ssh-keygen -t rsa

按照提示输入生成密钥对的路径和密码等信息。建议在生成 SSH Key 时不要设置密码,以免每次使用 SCP 命令时都需要输入密码。

  1. 将公钥上传到远程主机。在终端中输入以下命令:
$ ssh-copy-id -i ~/.ssh/id_rsa.pub username@remote_host_ip

其中,username 为远程主机的用户名,remote_host_ip 为远程主机的 IP 地址。输入命令后,系统会提示输入远程主机的密码,如果输入正确,公钥将被上传到远程主机。

  1. 测试 SSH 连接。在终端中输入以下命令:
$ ssh username@remote_host_ip

如果连接成功,则可以不输入密码登录到远程主机。

  1. 使用 SCP 命令传输文件。在终端中输入以下命令:
$ scp local_file_path username@remote_host_ip:/remote_file_path

其中,local_file_path 为本地文件的路径,remote_host_ip 为远程主机的 IP 地址,/remote_file_path 为远程主机上的文件路径。输入命令后,SCP 将会自动使用 SSH Key 进行身份验证,无需手动输入密码。

使用 SSH 配置文件

如果无法使用 SSH Key 进行身份验证,我们可以在 SSH 配置文件中添加远程主机和密码的信息,以避免在 SCP 命令中输入密码。下面是具体的步骤:

  1. 编辑 SSH 配置文件。在终端中输入以下命令:
$ sudo nano ~/.ssh/config

如果配置文件不存在,则会自动创建。

  1. 添加远程主机和密码的信息。在配置文件中添加以下内容:
Host remote_host_ip
    User username
    PasswordAuthentication yes
    IdentityFile ~/.ssh/id_rsa

其中,remote_host_ip 为远程主机的 IP 地址,username 为远程主机的用户名,~/.ssh/id_rsa 为本地 SSH Key 的文件路径。PasswordAuthentication yes 表示启用密码身份验证。

  1. 使用 SCP 命令传输文件。在终端中输入以下命令:
$ scp local_file_path remote_host_ip:/remote_file_path

其中,local_file_path 为本地文件的路径,remote_host_ip 为远程主机的 IP 地址,/remote_file_path 为远程主机上的文件路径。输入命令后,SCP 将会自动使用 SSH 配置文件中的密码进行身份验证,无需手动输入密码。

总结

本文介绍了如何在 SCP 命令中使用密码进行身份验证。如果条件允许,建议使用 SSH Key 的方式来避免输入密码。如果无法使用 SSH Key,则可以在 SSH 配置文件中添加密码信息。无论使用何种方式,都可以提高远程文件传输的效率和安全性。