前言 在做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的方式追加也是可以的。 感兴趣的同学可以试试。