写点什么

Docker 下多机器免密码 SSH 登录

  • 2022 年 4 月 26 日
  • 本文字数:1039 字

    阅读完需:约 3 分钟

在 docker-compose.yml 文件所在目录下执行 docker-compose up -d 创建并启动三个容器,如下图:


![640?wx_fmt=png](https:// 《一线大厂 Java 面试题解析+后端开发学习笔记+最新架构讲解视频+实战项目源码讲义》无偿开源 威信搜索公众号【编程进阶路】 img-blog.csdnimg.cn/img_convert/8352f0b2108c35b5f475a2f643c2ef89.png)


执行命令 docker exec -it a0 ip addr 可以拿到 a0 容器的 ip 是 172.19.0.2,如下图:



再执行 docker exec -it a1 ip addr 和 docker exec -it a2 ip addr 命令,得到所有容器的地址如下表:


容器名称 | IP 地址 | 映射端口


  • | - | - a0 | 172.19.0.2 | 19010 a1 | 172.19.0.3 | 19011 a2 | 172.19.0.4 | 19012

登录 a0 容器,修改 ssh 配置,创建 ssh key

由于 a0 的 22 端口已经映射到当前电脑的 19010 端口,因此在当前电脑的命令行执行 ssh root@localhost -p 19010 即可登录 a0,密码是 password,如下图:



登录 a0 后,用 vi 打开文件/etc/ssh/sshd_config,找到下图红框中的两个配置:RSAAuthentication 和 PubkeyAuthentication:



将每个配置最左边的"#"去掉,最终配置如下图所示:



接下来在命令行输入 ssh-keygen -t rsa,连续回车,最终会在/root/.ssh 目录下生成 idrsa 和 idrsa.pub 文件,如下图:


分别登录 a1、a2 容器,修改 ssh 配置,创建 ssh key

将上面做的登录容器、修改 ssh 配置、创建 ssh key 三件事,在 a1 和 a2 容器上也各做一次;

在 a0 上合并 a0、a1、a2 的公钥

登录 a0 容器后,在/root/.ssh 目录下执行以下命令,将 a0 的公钥追加到 authorizedkeys 文件中(如果 authorizedkeys 不存在会新建):


cat id_rsa.pub>> authorized_keys


然后执行以下命令,将 a1 的公钥追加到 a0 的 authorized_keys 文件中:


ssh root@172.19.0.3 cat ~/.ssh/id_rsa.pub>> authorized_keys


执行上述命令的时候会要求输入密码,输入"password"后,就会把 a1 的公钥追加到 a0 的 authorized_keys 文件中;


再执行以下命令,将 a2 的公钥也追加到 a0 的 authorized_keys 文件中:


ssh root@172.19.0.4 cat ~/.ssh/id_rsa.pub>> authorized_keys


执行完毕后,用 cat authorizedkeys 看一下 authorizedkeys 文件,里面已经有了三个公钥,如下图:


把 a0 上合并好的公钥文件复制到 a1

在当前电脑上新开一个控制台窗口,执行 ssh root@localhost -p 19011 登录 a1,然后执行以下命令就能将 a0 的 authorized_keys 文件复制到 a1:


ssh root@172.19.0.2 cat ~/.ssh/authorized_keys>> ~/.ssh/authorized_keys


这次没有要求输入密码,因为 a0 上已经有了 a1 的公钥了,执行完毕后可以检查/root/.ssh 目录,里面的 authorized_keys 文件和 a0 上一模一样;

用户头像

还未添加个人签名 2022.04.13 加入

还未添加个人简介

评论

发布
暂无评论
Docker下多机器免密码SSH登录_Java_爱好编程进阶_InfoQ写作社区