首页 > 解决方案 > 使用 pass 在运行的 docker 容器上执行 SSH

问题描述

嗨!我想将我的生产数据库备份恢复到我的 docker 中。所以,我想从外部服务器将它下载到我的容器中。它失败了,因为 ssh 密码...

这是我的 Dockerfile

FROM mysql:5.6
ENV MYSQL_ROOT_PASSWORD password
EXPOSE 3306 
COPY ./scripts /docker-entrypoint-initdb.d/
RUN apt-get update && apt-get install -y ssh 
COPY  ./ssh /home/mysql/.ssh

我下载 sql 文件的脚本是

completePath=$(ssh -T user@host.ip << EOF
cd /home/data/last/2020*
sourcePath=\$PWD
databaseURI=\`ls gran*\`
sourcePath=\$sourcePath/\$databaseURI
echo \$sourcePath
EOF
)
echo $completePath

scp user@host.ip:/$completePath $PWD
mv database.dmp database.sql

该脚本在 Docker 之外运行良好。这是我的错误

docker run --name database -p 3306:3306  prod-database

权限被拒绝,请重试。从 host.ip 端口 22:2 收到断开连接:身份验证失败太多身份验证失败。

希望你能帮我!谢!

标签: dockersshdockerfile

解决方案


这是解决方案

sshpass -f <(printf '%s\n' password) ssh -T user@172.22.18.71

推荐阅读