在linux操作系统中,可以使用scp命令进行服务器之间的文件复制,但是复制时需要输入远程服务器的密码,这在经常需要进行远程复制操作时会略显麻烦,如果远程复制是在定时任务中执行,更会导致脚本不能自动执行,这时就需要实现无需输入密码进行scp复制。无需输入密码进行scp复制的方法有多种,今天就介绍下使用公私钥来实现无需输入密码完成scp复制。
基本信息如下:
当前服务器A(10.0.89.103),登录用户名weblogic,用户主目录/home/weblogic远程服务器B(10.0.89.102),其他信息同A。
测试1:直接使用scp命令进行复制。
1. 使用weblogic用户登录服务器A,在用户主目录创建文件test.txt,用于测试远程复制。
2. 执行scp命令把文件test.txt从服务器A复制到服务器B。
从图中可以看出需要输入服务器B的用户密码才能完成复制。
测试2:使用公私钥后进行scp进行复制。
1. 使用weblogic用户登录服务器A,执行命令ssh-keygen -t rsa生成公私钥。
注意上图中所有需要输入的地方直接按回车。所以公私钥文件都是在默认位置保存,且没有密码。存储公私钥的文件夹位置默认为~/.ssh/,文件名默认是id_rsa和id_rsa.pub
2. 将生成的公钥文件(~/.ssh/id_rsa.pub)的内容复制到服务器B上的~/.ssh/authorized_keys文件中(如果没有则创建一个),这样就建立了服务器B对服务器A的信任关系,即在服务器A用任何ssh相关的工具不需要输入登录密码就可以访问服务器B了。
如果服务器B上面本来就没有授权文件~/.ssh/authorized_keys,也可以直接把服务器A上面的公钥文件复制到服务器B作为授权文件:
scp ~/.ssh/id_rsa.pub weblogic@10.0.89.102:~/.ssh/authorized_keys
3. 执行scp命令把文件test.txt从服务器A复制到服务器B。
从图中可以看出不需要输入服务器B的密码就完成了复制。