在主机上测试 ssh 密钥可以正常工作,但不能在具有相同密钥的容器中
Posted
技术标签:
【中文标题】在主机上测试 ssh 密钥可以正常工作,但不能在具有相同密钥的容器中【英文标题】:testing ssh key on host works fine but not in container with same keys 【发布时间】:2021-02-27 00:34:52 【问题描述】:我有一些用于 github 的 ssh 密钥。根据this 页面,我在本地对其进行了测试:
ssh -T git@github.com
Hi doug-companyname! You've successfully authenticated, but GitHub does not provide shell access.
我正在运行一个 docker-container,并且在 docker-compose 的卷下我有:
- ~/.ssh:/home/rstudio/.ssh
这是为了给容器与本地相同的键。
当我运行容器时,如果我查看 ~/.ssh 我确实看到了键:
rstudio@9b5b5114115b:~$ ls -l ~/.ssh
total 12
-rw------- 1 1001 1001 452 Nov 7 19:35 id_ed25519
-rw-r--r-- 1 1001 1001 131 Nov 7 19:35 id_ed25519.pub
-rw-r--r-- 1 1001 1001 2212 Nov 15 16:50 known_hosts
这些确实和主人一样,我的本地人。 然而,当我尝试做同样的测试时,我得到:
rstudio@9b5b5114115b:~$ ssh -T git@github.com
bash: ssh: command not found
为什么我的密钥不能在我的容器中工作,但它们在本地工作正常?
【问题讨论】:
请分享你的dockerfile 我怀疑你的镜像默认没有安装SSH客户端。 是的,刚刚添加了RUN apt-get update && apt-get install -y ssh
,现在似乎可以正常工作了。也许我应该删除?
删除什么?
@Ashok 他的意思是他是否应该删除他的问题,因为他认为这是一个愚蠢的错误(注意:我个人不认为这是愚蠢的 - 我们都会不时遇到类似的问题,我会保持原样)。
【参考方案1】:
我怀疑你的镜像默认没有安装 SSH 客户端。在 Dockerfile 中添加以下行。
RUN apk add --no-cache openssh-client
【讨论】:
以上是关于在主机上测试 ssh 密钥可以正常工作,但不能在具有相同密钥的容器中的主要内容,如果未能解决你的问题,请参考以下文章
如何在同一(但正在更改)IP 地址上处理 2 个不同主机的 ssh 主机密钥验证? [关闭]
你如何找到你的 GitLab 主机名(以测试你的 SSH 密钥)?