linux机器间建⽴信任关系
如何建⽴信任关系
在shell脚本中,需要使⽤scp命令将本地的⽂件复制到另⼀台机器中备份。但通常执⾏scp命令后都需要输⼊⽤户密码,这样在定时⾃动执⾏shell脚本中就不适⽤了。
在两台机器的两个⽤户之间建⽴安全的信任关系后,可实现执⾏scp命令时不需要输⼊⽤户密码。(该⽅法对ssh也适⽤) 以下将介绍如何在两台机器间建⽴信任关系,为了⽅便说明,我们将执⾏scp命令的机器叫做client,scp命令操作的远端机器叫做server。假设两个机器的账户都是work(其他账户也⾏,为了讨论⽅便假设了⼀个)。
1、在机器Client上work⽤户执⾏ssh-keygen命令,⽣成建⽴安全信任关系的证书。[work@Client work]# ssh-keygen -b 2048 -t rsaGenerating public/private rsa key pair.
Enter file in which to save the key (/work/.ssh/id_rsa): <– 直接输⼊回车Enter passphrase (empty for no passphrase): <– 直接输⼊回车Enter same passphrase again: <– 直接输⼊回车Your identification has been saved in /work/.ssh/id_rsa.Your public key has been saved in /work/.ssh/id_rsa.pub.The key fingerprint is:
49:9c:8a:8f:bc:19:5e:8c:c0:10:d3:15:60:a3:32:1c root@A[work@Server work]#
注意:在程序提⽰输⼊passphrase时直接输⼊回车,表⽰⽆证书密码。
上述命令将⽣成私钥证书id_rsa和公钥证书id_rsa.pub,存放在⽤户根⽬录的.ssh⼦⽬录中。
2、将公钥证书id_rsa.pub复制到机器Server的work根⽬录的.ssh⼦⽬录中,同时将⽂件名更换为authorized_keys。[work@Client work]# scp -p .ssh/id_rsa.pub work@192.168.3.206:/work/.ssh/authorized_keyswork@192.168.3.206′s password: <– 输⼊机器Server的work⽤户密码id_rsa.pub 100% |**************************| 218 00:00[work@Client work]#
执⾏完上⾯两步后,就在机器Client的work和机器Server的work之间建⽴安全信任关系。下⾯我们看看效果:[work@Client work]# scp -p text work@192.168.3.206:/work
text 100% |**************************| 19 00:00 //这时不需要输⼊密码了[work@Client work]#
同⼀台机器上⾯scp也需要设⽴信任关系。。。囧
已经存在的key,直接cat .ssh/id_rsa.pub >>.ssh/authorized_keys ,就搞定啦~~~
⽆法建⽴信任关系时排错步骤
1.AB主机名是默认的Localhost,如果AB之间的主机名相同,可能会导致⽆法成功。要修改主机名⽤hostname 命令,修改/etc/sysconfig/network,then restart your server.
2.查看SSH配置⽂件/etc/ssh/ssh_config,找到IdentityFile所指定的⽂件是什么,有的不是默认的id_rsa,这⾥指定的⽂件要和第⼀部分⽣成的⽂件名要相同,这⾥是id_rsa.
3.查看B机authorized-keys的⽂件权限是否为600或者644 (),如直接在server机器上vi或touch建⽴⽂件authorized_keys,可能会导致信任关系⽆法建⽴。
4.查看/var/log/secure⽇志,⾥⾯应该有⼀些蛛丝马迹可以供你参考
因篇幅问题不能全部显示,请点此查看更多更全内容