代码之家  ›  专栏  ›  技术社区  ›  S Andrew

dockerfile添加容器和主机的ssh密钥

  •  1
  • S Andrew  · 技术社区  · 6 年前

    我想让一个容器ssh进入主机而不要求密码。为此,我需要保存ssh密钥。我有以下文件:

    FROM easypi/alpine-arm
    
    RUN apk update && apk upgrade
    
    RUN apk add openssh
    RUN ssh-keygen -f /root/.ssh/id_rsa
    RUN ssh-copy-id -i /root/.ssh/id_rsa user@<ipadress of host>
    

    但问题是IP地址不是常量。所以如果我在其他机器上使用相同的图像,它就不会在那里工作。我如何解决这个问题。

    谢谢

    1 回复  |  直到 6 年前
        1
  •  0
  •   David Maze    6 年前

    Dockerfile

    .ssh

    #!/bin/sh
    usage() {
      echo "Usage: docker run --rm -it -v ...:$HOME/.ssh myimage $0 10.20.30.40"
    }
    if [ -n "$1" ]; then
      usage >&2
      exit 1
    fi
    if [ ! -f "$HOME/.ssh" ]; then
      usage >&2
      exit 1
    fi
    exec ssh "user@$1"
    

    FROM easypi/alpine-arm
    RUN apk update \
     && apk upgrade \
     && apk add openssh
    COPY ssh_user.sh /usr/bin
    CMD ["/usr/bin/ssh_user.sh"]
    

    mkdir some_ssh
    ssh-keygen -f some_ssh/id_rsa
    ssh-copy-id -i some_ssh/id_rsa user@10.20.30.40
    sudo chown root some_ssh
    

    sudo docker run --rm -it \
      -v $PWD/some_ssh:/root/.ssh \
      my_image \
      ssh_user.sh 10.20.30.40
    

    chown root -v