前言
在做mysql集群的时候,需要在同个安全组的机器上来回拷贝文件,和远程执行命令。
如果实现了ssh互信的话用起来就方便多了。
步骤
1、生成密钥
ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa
2、拷贝到其他机器
# 主
ssh-copy-id -i ~/.ssh/id_dsa.pub 172.31.145.39;
# 从1
ssh-copy-id -i ~/.ssh/id_dsa.pub 172.31.145.38;
# 从2
ssh-copy-id -i ~/.ssh/id_dsa.pub 172.31.145.40;
三台机器,以上命令都执行一遍。
3、添加hosts
sudo vi /etc/hosts
172.31.145.39 node1
172.31.145.38 node2
172.31.145.40 node3
sudo echo 172.31.145.39 node1 >> /etc/hosts
sudo echo 172.31.145.38 node2 >> /etc/hosts
sudo echo 172.31.145.40 node3 >> /etc/hosts
三台机器,以上命令都执行一遍。
4、互信测试
ssh node1
ssh node2
ssh node3
三台机器,以上命令都执行一遍。
成功信息如下:
[mysql@iZm5e2mylql8b8vqklsir7Z ~]$ ssh node1
Last login: Mon Mar 30 21:50:50 2020 from 172.31.145.39
Welcome to Alibaba Cloud Elastic Compute Service !
[mysql@iZm5ebq5g3dxxlguud3akeZ ~]$ ssh node2
Last login: Mon Mar 30 21:52:50 2020 from 172.31.145.40
Welcome to Alibaba Cloud Elastic Compute Service !
[mysql@iZm5e2mylql8b8vqklsir7Z ~]$ ssh node3
Last login: Mon Mar 30 21:50:09 2020 from 172.31.145.38
Welcome to Alibaba Cloud Elastic Compute Service !
[mysql@iZm5eh3yfwvy52yb78f6obZ ~]$
可以看到实现了机器间的免密登录,登录后的主机名已经改变,如下所示:
[mysql@iZm5ebq5g3dxxlguud3akeZ ~]$
[mysql@iZm5e2mylql8b8vqklsir7Z ~]$
[mysql@iZm5eh3yfwvy52yb78f6obZ ~]$
5、scp搬运文件
搬运node1机器上的文件至node2、node3
scp all_0331.sql node2:/home/mysql/
scp all_0331.sql node3:/home/mysql/
# 将文件拷贝到机器node3下的/home/mysql文件夹下,无需输入密码
后记
其实ssh-copy-id 的原理只是将ssh-keygen生成的密钥追加到了~/.ssh/id_dsa.pub文件中,手动用echo的方式追加也是可以的。
感兴趣的同学可以试试。