如何使用 SSH 密钥的方式实现无密码 SCP 传输文件

一、什么是 SSH 公钥 / 私钥

在介绍如何使用 SSH 密钥的方式实现无密码 SCP 传输文件之前,我们先来了解一下什么是 SSH 公钥/私钥。

SSH 公钥和私钥是一对密钥,用于加密您的登录信息和授权您的访问。公钥存储在服务器上,私钥存储在您的本地电脑上。当您通过SSH协议连接到服务器时,您的本地电脑会使用私钥加密登录信息,然后将其发送到服务器,服务器会使用公钥进行解密,从而验证您的身份。

二、生成 SSH 公钥 / 私钥

在使用 SSH 密钥的方式实现无密码 SCP 传输文件之前,您需要先生成一对 SSH公钥 / 私钥。

要生成密钥的客户端以 Linux 系统为例,生成 SSH 公钥 / 私钥,我们用 root 用户登录,终端输入下列命令:

ssh-keygen -t rsa -b 4096

执行上述命令后,系统会提示您输入一些信息,例如密钥的名称和密码。一般情况下,您可以直接按回车键使用默认值。生成成功后,您将在 /root/.ssh 目录下找到 id_rsa 和 id_rsa.pub 两个文件( .ssh 为隐藏目录 ,其中 id_rsa 为私钥,id_rsa.pub 为公钥。

三、将公钥添加到服务器上

生成 SSH公钥 / 私钥后,您需要将公钥添加到服务器上,从而使服务器可以使用该公钥来验证您的身份。

1、服务器段端也以 Linux 系统为例,在刚才生成密钥的客户端上运行以下命令将公钥添加到服务器上:

ssh-copy-id -p 3322 username@server_address

其中 -p 3322 为 SSH 连接的端口,默认22端口的话可以不加;username 为您在服务器上的用户名;server_address 为服务器的IP地址或主机名。

2、添加成功后,您可以使用以下命令测试身份验证是否成功:

ssh -p 3322 username@server_address

3、如果您不再需要在服务器上使用该公钥,可以使用以下命令将其删除:

ssh-add -d /root/.ssh/id_rsa.pub

四、如何使用 SCP 传输文件

# 复制本地主机 /root/test/ 目录及其子目录下所有的文件,到远程主机/root/test/目录下
scp -r /root/test/* root@192.168.16.96:/root/test/

# 复制远程主机 /root/test/ 目录及其子目录下所有的文件,到本地主机/root/test/目录下
scp -r root@192.168.16.96:/root/test/* /root/test/

# 如果远程主机修改过22端口,上面两条命令请加上 -P 参数
scp -r -P 3322 /root/test/* root@192.168.16.96:/root/test/
scp -r -P 3322 root@192.168.16.96:/root/test/* /root/test/

总结:

通过使用 SSH公钥 / 私钥的方式,在进行 SCP 传输文件时无需手动输入密码,不仅可以提高传输效率,还可以增强传输的安全性。以上就是如何使用 SSH 密钥的方式实现无密码 SCP 传输文件的详细介绍。

标签

发表评论