在主机上测试 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 密钥)?

在单个主机上使用多个密钥时 SSH 使用错误的密钥

“主机密钥验证失败”时如何建立 ssh 密钥对

SSH 主机密钥指纹...与模式不匹配...在 C# 中使用 WinSCP .NET 程序集下载文件时

Linux密钥登陆