使用scp 或者 rsync命令在多台Linux服务器之间同步文件时需要输入密码,除了使用expect实现自动化交互以外,还有一种方法就是配置服务器之间ssh免密登录,本文记录一下具体配置过程。
1. 创建.ssh目录
假定有3台Linux主机,分别为A,B,C
在所有主机上创建ssh目录并赋予权限1
2mkdir /root/.ssh
chmod 700 /root/.ssh
2. 生成公钥与私钥
所有主机生成公钥与私钥,执行以下命令:
1 | $ cd ~ # 进⼊入用户目录 |
3. 将公钥追加authorized_keys文件中
将第一台主机A上生成公钥追加到authorized_keys文件中
1 | $ cd ~/.ssh # 进入.ssh目录 |
然后可以删除A上的id_rsa.pub文件,因为已经写进了authorized_keys文件中
1 | $ rm -rf id_rsa.pub |
接下来将B和C的id_rsa.pub写入到A的authorized_keys文件中,使用scp 或者 rsync命令分别将B和C两台机器的id_rsa.pub复制到主机A 。(scp 或者 rsync命令的使用方法可参考文章使用SCP或Rsync实现Linux主机之间文件、目录的复制)
在主机B上操作 :
1 | $ scp id_rsa.pub hostA:~/.ssh/ # hostA为A的主机名或者A的IP地址 |
也可以直接在主机A上操作,执行如下命令:
1 | $ scp hostB:~/.ssh/id_rsa.pub ~/.ssh/ |
在主机A上执行如下命令,将主机B的id_rsa.pub文件内容添加到authorized_keys文件中:
1 | $ cat id_rsa.pub >> authorized_keys |
主机C类似,将C的id_rsa.pub文件内容添加到authorized_keys文件中。
这样authorized_keys文件里面保存了主机A,B,C的公钥,然后将authorized_keys文件拷贝到其它两台主机上就可以了:
1 | $ scp authorized_keys hostB:/root/.ssh/ |
4. 测试
1 | ssh root@要进行链接的机器ip地址 |
主机A -> B:1
2
3[root@hostA ~]# ssh root@192.168.20.20
Last login: Sat Jul 10 10:17:34 2021 from hostA
[root@hostB ~]#
主机B -> A:1
2
3[root@hostB ~]# ssh root@192.168.20.10
Last login: Sun Jul 11 19:54:08 2021 from hostB
[root@hostA ~]#
本文标题:配置多台服务器之间ssh免密登录
文章作者:hiyo
文章链接:https://hiyongz.github.io/posts/linux-password-less-ssh-login-for-multiple-remote-servers/
许可协议:本博客文章除特别声明外,均采用CC BY-NC-ND 4.0 许可协议。转载请保留原文链接及作者。