针对 Gerrit git 服务器验证虚拟机

Authenticating a virtual machine against a Gerrit git server

我有一个 CentOS 7 VM 托管在 Scientific Linux 机器上(两个分支都是 Red Hat)。我使用 docker 作为 SW 来模拟 SL 上的 CentOS。两者之间的通信是通过 docker 自己建立的网桥(一个小型​​ VLAN)完成的。如有必要,可以在主机和 docker 虚拟机之间创建更多虚拟网桥。我可以将我的 SL 主机连接到远程 git 服务器,通过 SSH 协议共享我的私钥,只有我的私钥才能授予我访问权限。

我的问题是我无法找到针对 git 服务器验证我托管的 CentOS 的方法。我试图将 priv 密钥复制到它的 .ssh 文件夹,但它不起作用。我可能需要在我的 CentOS 上设置更多网络参数,或者找到一种方法将 SSH 流量转发到我的主机。有什么建议吗?

git clone -vvv ssh://<user>@<server>:<port>/project/utils
Cloning into 'utils'...
Enter passphrase for key '/home/<user>/.ssh/id_rsa': 
Permission denied (publickey).
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

我的 .ssh 文件夹已从我工作的 git 台式电脑复制到我的 VM,具有相同的用户名和权限,如上所述。 SSH 测试在主机客户端上也不起作用,所以我认为 git 可能会将 SSH 身份验证重定向到另一个端口。带有 Gerrit 存储库 URL 的 ssh-keyscan returns 没什么,但这可能是 Gerrit 服务器的正常程序。

只是一个想法(可能有更简单的方法来实现同样的事情) - 临时配置一个 read/write 从你的镜像挂载到你的文件系统 - 在容器内启动一个 shell - 从容器中生成新的密钥对并将密钥文件写入磁盘 - 将 public 密钥添加到您在 git 服务器上的帐户 - 将私钥文件添加到您的 Docker 文件并重新创建图像,以便每次重新启动容器时它都可用。

问题是我的 RSA 密钥有密码。在我的主机上,没有必要输入密码,因为 ssh-agent 充当我的 SSH 库的前端,并且它在内存中加密了密码。

虚拟机不是这种情况,它几乎是空的,只有 .ssh 文件夹(具有正确的权限和正确的用户)。我修复了这个问题并通过在我的 Dockerfile 中添加 运行 命令将密码更改为空字符串来自动化解决方案,这允许在构建图像时从 git 中提取。我没有在 /etc/ssh 下找到任何更改的参数允许我在不输入密码的情况下连接,所以我必须假设密码步骤在 RSA 协议中是强制性的,以确保用户的机密性,即使使用用户的 public 密钥足以确保它。