docker - 使用 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 收到断开连接:身份验证失败太多身份验证失败。
希望你能帮我!谢!
解决方案
这是解决方案
sshpass -f <(printf '%s\n' password) ssh -T user@172.22.18.71
推荐阅读
- r - R中表情符号的utf8编码显示错误结果
- java - 如何在java中更改为StringBuilder
- python - Lambda 函数 - 未知数量的参数
- php - 全方位保护用户干预输入
- python - Python 3.x - 使用代表整数的符号创建垂直列表
- mysql - 在两个不同的列上连接表
- dart - dart json.encode(data) 不能接受其他语言
- spring - 为什么我会得到 hibernate.TransientPropertyValueException?
- excel - VBA检查文件是否打开
- windows - 在 Windows 10 的 DNS 中注册此连接的地址