最近做一个项目需要每天定时将多台设备上面的日志同步到指定的一台日志服务器上,故想到了scp,但是scp每次需要输入密码,这就无法完成自动化日志同步,最后借鉴了网上的一些解决方法,总结了一下:

[root@localhost ~]# ssh-keygen -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:
c4:74:2b:af:bb:92:56:8e:62:b0:de:f2:b3:dc:1e:f1 root@localhost
[root@localhost ~]#

其中公共密钥保存在~/.ssh/id_rsa.pub

私有密钥保存在~/.ssh/id_rsa

2.然后改一下.ssh目录的权限,使用命令"chmod755~/.ssh"(似乎不需要这步)

3.之后把这个密钥对中的公共密钥复制到你要访问的机器的相应账号的.ssh目录下,并保存为authorized_keys.

注意:

如果服务器1要向服务器2复制数据,要在服务器1上面生成秘钥对,然后把公钥复制到服务器2/root/.ssh/(没有的话需创建)目录下并将其文件名重命名authorized_keys,如果有多台服务器需要向服务器2复制数据,可将其他服务器的公钥一并复制到authorized_keys文件,如:

Linux scp远程复制数据不需要输入密码_scp远程同步

这样就大功告成了。可以用在计划任务里,scp访问那台机器时,就不用输入密码了。