scp 命令无需输入密码完成 Linux 系统间远程拷贝

本贴最后更新于 1547 天前,其中的信息可能已经时移世异

前面介绍了scp命令Linux 系统间远程拷贝命令 scp的基本用法,在拷贝的时候均需要输入远程主机的密码,一比较麻烦,二在很多场景下不太适用,比如有一个shell脚本是MySQL定时备份的,并且会把备份远程拷贝到备份服务器,这时候可以通过在两台服务器建立信任关系来解决。

通过在两台机器的两个用户之间建立安全的信任关系后,可实现执行scp命令时不需要输入用户密码。

在Client机生成证书

在机器Client(即本机,主机ip为172.17.207.90)上root用户执行ssh-keygen命令,生成建立安全信任关系的证书,命令如下

ssh-keygen -b 1024 -t rsa

输入以上命令

在程序提示输入文件位置时直接回车,将生成私钥证书id_rsa和公钥证书id_rsa.pub,存放在用户家目录的.ssh子目录中

在程序提示输入passphrase时直接输入回车,表示无证书密码。

[root@iZ2zefth8eteml1eyueu1sZ ~]#  ssh-keygen -b 1024 -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): 
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:s63mQEMhu/1CFmtL/p/fhllJzSbd6+VzxgSHCNhMZDI root@iZ2zefth8eteml1eyueu1sZ
The key's randomart image is:
+---[RSA 1024]----+
|    . . E*+      |
|     o ..++      |
|    . o    . . =.|
|     + o    . = B|
|    . X S    . *.|
|     B + +    o.o|
|      = o .  +.+.|
|       +.. .o..o=|
|       o+.o.....o|
+----[SHA256]-----+

image.png

拷贝公钥到Server机

将公钥证书id_rsa.pub复制到机器Server(即远程主机,主机ip为172.17.207.92)的root家目录的.ssh子目录中,同时将文件名更换为authorized_keys。采用scp命令输入密码完成远程拷贝

[root@iZ2zefth8eteml1eyueu1sZ .ssh]# scp /root/.ssh/id_rsa.pub root@172.17.207.92:/root/.ssh/authorized_keys 
root@172.17.207.92's password: 
id_rsa.pub                                                                                                        100%  242   547.0KB/s   00:00  
[root@iZ2zefth8eteml1eyueu1sZ .ssh]# 

拷贝成功,在Server机器的.ssh目录查看

image.png

再次测试远程拷贝

再次测试从Client机器拷贝a.txt到远程机器/home目录下

[root@iZ2zefth8eteml1eyueu1sZ home]# scp /home/a.txt root@172.17.207.92:/home/c.txt
a.txt                                                                                                             100%    6     4.9KB/s   00:00  
[root@iZ2zefth8eteml1eyueu1sZ home]# 

可以看到,执行远程拷贝命令,已经不需要输入远程主机的密码了

回帖
请输入回帖内容 ...