我在Scientific Linux机器上托管了一个CentOS 7 VM(两个分支都是Red Hat)。我使用docker作为SW来模拟CentOS over SL。两者之间的通信是通过由docker本身设置的桥(一个小VLAN)完成的。如有必要,可以在主机和docker VM之间创建更多虚拟网桥。我可以将我的SL主机连接到通过SSH协议共享我的私钥的远程git服务器,只有我的私钥才能授予我访问权。
我的问题是我找不到针对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桌面PC复制到我的VM,具有相同的用户名和权限,如上所述。 SSH测试在主机客户端上也不起作用,所以我认为git可能会将SSH身份验证重定向到另一个端口。带有Gerrit repo URL的ssh-keyscan不会返回任何内容,但这可能是Gerrit服务器的正常过程。
答案 0 :(得分:0)
只是一个想法(可能是一种更简单的方法来实现同样的目的) - 临时将映像中的读/写挂载配置到文件系统上 - 在容器内启动一个shell - 从容器中生成新密钥对,并将密钥文件写入磁盘 - 在git服务器上将公钥添加到您的帐户 - 将私钥文件添加到Docker文件并重新创建映像,以便每次重新启动容器时它都可用。
答案 1 :(得分:0)
问题是我的RSA密钥有密码。从我的主机上输入密码是没有必要的,因为ssh-agent充当我的SSH库的前端,它将密码保存在内存中。
这不是虚拟机的情况,几乎是空的,只有.ssh文件夹(具有正确的权限和正确的用户)。我修复了这个并通过在我的Dockerfile中添加一个RUN命令来自动化解决方案,将密码更改为空字符串,这允许在构建映像时从git中提取。我还没有发现/ etc / ssh下的任何参数被更改允许我连接而不输入密码,所以我必须假设密码步骤在RSA协议中是强制性的,以确保与用户的机密性,即使加密使用用户的公钥足以确保它。