gpt4 book ai didi

docker : how to share ssh-keys between containers?

转载 作者:行者123 更新时间:2023-12-02 13:46:57 24 4
gpt4 key购买 nike

我有 4 个容器配置如下( docker-compose.yml ):

version: '3'
networks:
my-ntwk:
ipam:
config:
- subnet: 172.20.0.0/24
services:
f-app:
image: f-app
tty: true
container_name: f-app
hostname: f-app.info.my
ports:
- "22:22"
networks:
my-ntwk:
ipv4_address: 172.20.0.5
extra_hosts:
- "f-db.info.my:172.20.0.6"
- "p-app.info.my:172.20.0.7"
- "p-db.info.my:172.20.0.8"
depends_on:
- f-db
- p-app
- p-db
f-db:
image: f-db
tty: true
container_name: f-db
hostname: f-db.info.my
networks:
my-ntwk:
ipv4_address: 172.20.0.6
p-app:
image: p-app
tty: true
container_name: p-app
hostname: p-app.info.my
networks:
my-ntwk:
ipv4_address: 172.20.0.7
p-db:
image: p-db
tty: true
container_name: prod-db
hostname: p-db.info.my
networks:
my-ntwk:
ipv4_address: 172.20.0.8
每个镜像都是由相同的 Dockerfile 构建的:
FROM openjdk:8

RUN apt-get update && \
apt-get install -y openssh-server

EXPOSE 22

RUN useradd -s /bin/bash -p $(openssl passwd -1 myuser) -d /home/nf2/ -m myuser

ENTRYPOINT service ssh start && bash
现在我希望能够从 f-app 连接运行此行时无需输入密码即可访问任何其他机器: ssh myuser@f-db.info.my .
我知道我需要在服务器之间交换 ssh key (那不是问题)。我的问题是如何使用 docker 容器以及何时(构建或运行时)!

最佳答案

为做ssh如果没有密码,您需要创建无密码用户以及配置 SSH keys在容器中,此外您还需要添加 ssh keys在源容器中加上公钥应该添加在目标容器的授权中。
这是工作的 Dockerfile

FROM openjdk:7

RUN apt-get update && \
apt-get install -y openssh-server vim

EXPOSE 22


RUN useradd -rm -d /home/nf2/ -s /bin/bash -g root -G sudo -u 1001 ubuntu
USER ubuntu
WORKDIR /home/ubuntu

RUN mkdir -p /home/nf2/.ssh/ && \
chmod 0700 /home/nf2/.ssh && \
touch /home/nf2/.ssh/authorized_keys && \
chmod 600 /home/nf2/.ssh/authorized_keys

COPY ssh-keys/ /keys/
RUN cat /keys/ssh_test.pub >> /home/nf2/.ssh/authorized_keys

USER root
ENTRYPOINT service ssh start && bash
docker-compose 将保持不变,这是您可以尝试的测试脚本。
#!/bin/bash
set -e
echo "start docker-compose"
docker-compose up -d
echo "list of containers"
docker-compose ps
echo "starting ssh test from f-db to f-app"
docker exec -it f-db sh -c "ssh -i /keys/ssh_test ubuntu@f-app"
有关更多详细信息,您可以尝试上面的工作示例 docker-container-ssh
git clone git@github.com:Adiii717/docker-container-ssh.git
cd docker-container-ssh;
./test.sh
您可以更换 key ,因为它们仅用于测试目的。

关于 docker : how to share ssh-keys between containers?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62638487/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com