我已经尝试了一段时间通过 ssh 从远程服务器(不是 gihub)复制文件到我想要构建的 docker 镜像中,但我无法连接到主机。这是关键点之前的 Dockerfile:
FROM r-base:latest
### Install libs
RUN apt-get update && apt-get install -y \
sudo \
gdebi-core \
pandoc \
pandoc-citeproc \
openssh-server \
openssh-client \
libcurl4-gnutls-dev \
libcairo2-dev \
libxt-dev \
xtail \
wget \
libssl-dev \
libxml2 \
libxml2-dev \
libv8-dev \
curl \
gnupg \
git
COPY ./setup setup
RUN mv setup/.ssh ~/.ssh
RUN touch ~/.ssh/known_hosts
RUN chmod -R 400 ~/.ssh
RUN ssh-agent sh -c 'ssh-add /root/.ssh/id_rsa'
#RUN eval "$(ssh-agent -s)"
#RUN ssh-add -K ~/.ssh/id_rsa #This is commented out as it causes an error
RUN ssh-keyscan hostname > ~/.ssh/known_host
RUN ssh-keygen -R hostname
## THIS IS THE COMMAND WE NEED TO RUN...
RUN scp -r user@hostname:/path/to/folder ./
该文件夹的所有者是user
。 id_rsa.pub被添加到主机上用户user
的authorized_keys文件中,并在那里重新启动ssh。但是我收到“身份验证失败”错误。我尝试使用我的个人 id_rsa,它可以从命令行运行,但在 docker 内也失败。这是一个 docker 问题吗?可以解决吗?
最佳答案
我终于成功地通过使用 this post 中建议的命令生成 key 来做到这一点
因此,要在本地重现我的案例:
cd setup/.ssh/
ssh-keygen -q -t rsa -N '' -f id_rsa
然后在服务器上添加id_rsa.pub
将内容发送到用户 user
的已知主机。可以使用 xclip 将内容复制到剪贴板:xclip -sel clip < setup/.ssh/id_rsa.pub
)
Dockerfile:
我已经尝试了一段时间通过 ssh 从远程服务器(不是 gihub)复制文件到我想要构建的 docker 镜像中,但我无法连接到主机。这是关键点之前的 Dockerfile:FROM r-base:latest
### Install libs
RUN apt-get update && apt-get install -y \
sudo \
gdebi-core \
pandoc \
pandoc-citeproc \
openssh-server \
openssh-client \
libcurl4-gnutls-dev \
libcairo2-dev \
libxt-dev \
xtail \
wget \
libssl-dev \
libxml2 \
libxml2-dev \
libv8-dev \
curl \
gnupg \
git
COPY ./setup setup
RUN chmod -R 600 ~/.ssh
RUN echo "IdentityFile /root/.ssh/id_rsa" >> /etc/ssh/ssh_config
RUN echo "StrictHostKeyChecking no" >> /etc/ssh/ssh_config
## THIS IS THE COMMAND WE NEED TO RUN...
RUN scp -r user@hostname:/path/to/folder ./
关于docker - 构建 docker 镜像时,在 Dockerfile 中复制文件或通过 ssh 克隆,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56755004/