前言
- 通过docker的远程服务向服务器的ssh写入本机公钥实现免密登录。
实现原理
-
docker开启了远程访问服务
-
服务器有ssh服务(一般都有)
-
docker开启了远程服务之后通过docker的挂载功能将root/.ssh/目录挂载到docker容器中然后将本机公钥写authorized_keys中,即可实现ssh免密登录
实现过程
- docker开启远程服务
vim /lib/system/system/docker.service
# 修改ExecStart
ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock
# 重启docker
systemctl daemon-reload
systemctl restart docker
从虚拟机或者其它服务器远程操作docker
docker -H tcp://xxx.xxx.xxx.xxx:2379 ps -a
可以看到远程主机上的docker容器了
平时我们都是使用docker ps来查看本机运行的容器,这里使用-H,指定A主机的IP和端口,即可以查看远程主机的。
- 启动一个centos镜像
# 拉取镜像
docker -H tcp://xxx.xxx.xxx.xxx:2379 pull centos
# 启动容器并进入容器bash
docker -H tcp://47.102.xxx.xxx:2379 run -it -v /root:/tmp/root centos bash
- 复制自己的公钥
再次进入docker容器bash,找到.ssh文件,没有的自己创建一个
# 进入/tmp/root下(相当于系统的root目录,因为root挂载到了tmp/root下)
cd /tmp/root
# 没有.ssh目录创建
mkdir .ssh
cd .ssh
# 没有authorized_keys文件,自己创建,将公钥添写进文件中退出
vi authorized_keys
- 使用ssh连接服务器
ssh xxx.xxx.xxx.xxx
# 发现不要密码 直接进去了
喜欢点个赞
留个群