linux服务器之间免密码登录
假如你需要在不同服务器之间操作不用输入密码,或者写一个启动集群脚本,但是每启动一次每台服务器密码都要输入,这时候你就可以一下操作:
1、在我本地虚拟机有三台Linux:ip为:demo200,demo201,demo202.我用的都是root权限
2、生成一个密钥对,
# ssh-keygen -t rsa 输入完命令后敲击三次回车键
如果感觉麻烦,可以执行
# ssh-keygen -t rsa -P 敲击一次回车键

3、执行完之后回到当前用户的目录中的.ssh文件夹中(.ssh和这个文件夹下生成的文件即是刚才生成的密钥对),输入以下命令即可
# cd ~/.ssh
接着使用ls命令可以看到id_rsa和id_rsa.pub ,其中id_rsa为私钥,id_rsa.pub 为公钥
使用以下命令创建一个authorized_keys
# cp ~/.ssh/id_rsa.pub~/.ssh/authorized_keys
到这里第一步生成密钥对就算完成了。
然后对集群中每台需要生成密钥对的机器都执行以上操作。
4、每台机器都生成密钥对之后,把所有机器上的authorized_keys 全部合并成一个文件,然后覆盖到每台机器上 authorized_keys文件上,也就是说每台机器上都有集群中其他机器上的authorized_keys。可以先把所有机器上的authorized_keys远程拷贝到一台机器上,然后在这台机器上合并完之后,再远程拷贝覆盖所有机器上的authorized_keys文件。
5、首先在demo200服务器上执行以下命令
# scp ~/.ssh/authorized_keys com@192.168.1.102:~/.ssh/201
之后会提示输入102机器上的密码,输入即可。然后在demo200上执行相同操作,不过在demo201,demo202上远程拷贝后文件名要改下,我习惯用服务器最后IP号明明:例如:201,202 ,命令如下
# scp ~/.ssh/authorized_keys com@192.168.1.102:~/.ssh/201
6、然后在demo200机器上com文件夹下的.ssh目录中将demo201,demo202,authorized_keys 三个文件合并
# cat ~/.ssh/201 >> ~/.ssh/authorized_keys
# cat ~/.ssh/202 >> ~/.ssh/authorized_keys
7、然后再将合并之后的authorized_keys文件分别拷贝并覆盖到100机器和101机器上
# scp ~/.ssh/authorized_keys com@demo201:~/.ssh
# scp~/.ssh/authorized_keys com@demo202:~/.ssh
8、之后可以执行一下命令
# ssh com@192.168.1.101


浙公网安备 33010602011771号