前言

在做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的方式追加也是可以的。

感兴趣的同学可以试试。