前面介绍了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]-----+
拷贝公钥到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目录查看
再次测试远程拷贝
再次测试从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]#
可以看到,执行远程拷贝命令,已经不需要输入远程主机的密码了
欢迎来到testingpai.com!
注册 关于