github 的客户端可以保存用户名和密码,也可以设置 ssh 登录,不过在保存了一个用户名之后,想使用另一个用户就不方便切换了,此时可以借助 Docker 把 ssh 密钥保存在镜像中,不同的的镜像中保存不同的 ssh 密钥。
运行方式:
获取代码
git clone https://github.com/huzhenghui/Connecting-to-GitHub-with-SSH
进入项目目录
cd .\Connecting-to-GitHub-with-SSH\
构建 Docker 镜像
docker build -t ssh-github .
运行,将看到帮助说明
docker run ssh-github
获取公钥
docker run ssh-github key
把公钥复制到 github 页面中
https://github.com/settings/keys
测试
docker run ssh-github test
不想看代码的话看到这里会使用就可以了。
构建 Docker 镜像的脚本
FROM alpine
MAINTAINER huzhenghui hu@daonao.com
COPY known_hosts /root/.ssh/known_hosts
COPY entrypoint.sh /root/entrypoint.sh
RUN apk update && \
apk add openssh-keygen openssh-client && \
ssh-keygen -t rsa -b 4096 -N "" -C "" -f /root/.ssh/id_rsa && \
eval "$(ssh-agent -s)" && \
ssh-add /root/.ssh/id_rsa
ENTRYPOINT ["/bin/sh", "/root/entrypoint.sh"]
入口脚本
#!/bin/sh
if [ -$1- == -key- ]; then
cat /root/.ssh/id_rsa.pub
elif [ -$1- == -test- ]; then
ssh -T git@github.com
else
echo
echo 'Step 1 : print public key'
echo
echo -e "\trun"
echo -e "\tdocker run <IMAGE NAME> key"
echo
echo 'Step 2 : add key to github'
echo
echo -e "\tvisit"
echo -e "\thttps://github.com/settings/keys"
echo
echo 'Step 3 : test'
echo
echo -e "\trun"
echo -e "\tdocker run <IMAGE NAME> test"
echo
fi