宿主机与docker容器之间免密码ssh链接,容器与容器之间ssh免密码连接

(1)拉取一个新的centos镜像docker pull centos:7.2

(2)运行一个容器,准备安装必要的环境

docker run --privileged  --dns 8.8.8.8 --dns 8.8.4.4 -h controler --name slurm_control  -i -t  -v /container_data/:/data centos:centos7  /bin/bash

(3)在容器内安装ssh环境

yum install wget vim

wget -0 /etc/yum.repos.d/CentOS-Base.repo  http://mirrors.aliyun.com/repo/Centos-7.repo

yum cleal all

yum install passwd

yum install openssh-server

修改容器密码(提前yum -y reinstall cracklib-dicts

echo "123456" |passwd --stdin root

产生公私钥:

ssh-keygen -t rsa

cd ~/.ssh/

cp id_rsa.pub  authorized_keys

开启前准备(以下指令直接一路回车下去)

ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key

ssh-keygen -t dsa -f /etc/ssh/ssh_host_dsa_key

ssh-keygen -t rsa -f /etc/ssh/ssh_host_ecdsa_key

ssh-keygen -t rsa -f /etc/ssh/ssh_host_ed25519_key

/usr/sbin/sshd

退出容器,制作成新容器

Ctrl+d

Docker stop 2ba4a64c7f80

Docker commit 2ba4a64c7f80 docker_ssh

docker run --privileged -i -t docker_ssh /sbin/init (一直卡在当前界面,重新开启一个新的终端,进入容器内部打开sshd服务) 

docker exec -it af40bd07fa0f /bin/bash

systemctl restart sshd.service

echo "123456" |passwd --stdin root

netstat  -nplt|grep 22  //查看状态


yum install -y openssh-clients

6)退出容器,将宿主机的~/.ssh/id_rsa.pub拷贝到容器里的~/.ssh/authorized_keys即可免密码登录

在宿主机上执行

docker cp ~/.ssh/id_rsa.pub aea267757cc9:/root/.ssh/


进入容器后追加到容器的授权码

docker attach aea267757cc9

cat id_dsa.pub >> /root/.ssh/authorized_keys

制作完成,备份为新的镜像

docker commit aea267757cc9 ssh_docker1

docker run -d -p 221:22 --name ssh_container2 -h slaver1 -v /container_data/:/data f57ef7db72aa /usr/sbin/sshd -D

 

 

在宿主机上秘密免密码连接测试

ssh -p221 root@lcoalhost

 此时宿主机已经可以免密码登录docker容器

7)为防止docker每次启动ip变动,使用自定义网络后每次皮冻增加一个新的容器的host 列进去

docker network create --subnet=172.18.0.0/16 shadownet

slurm集群安装两个节点一个是计算节点一个是用控制,一个用来计算节点

 以同样的方式开启三台容器,controler,slaver1,slaver2,

docker run -d -p 220:22 --name ssh_container1 -h controler --net shadownet --ip 172.18.0.10 --add-host="slaver1 :172.18.0.11"  -v /container_data/:/data 0bedf27156e7 /usr/sbin/sshd -D

 

docker run -d -p 221:22 --name ssh_container2 -h slaver1 --net shadownet --ip 172.18.0.11 --add-host="controler:172.18.0.10"  -v /container_data/:/data 0bedf27156e7 /usr/sbin/sshd -D





下面开始测试容器与容器之间的测试。

之后随便进入一个容器,使用:ssh   (controler,slaver1,slaver2任意一个,)然后链接其他两台docker容器





好了,至此,所有两个环节:宿主机<----->容器,容器<------>容器之间的免密码登录工作完成



  • 0
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值