我将这个问题解释为一个故事,以便尽可能多地提供详细信息。
A(devops)用户生成了2个SSH密钥对:
/user/.ssh/serverkey /user/.ssh/serverkey.pub
/user/.ssh/github /user/.ssh/github.pub
这个用户使用100个不同的服务器,并且他们已经自动化,在启动新的服务器实例时,他们的服务器管理公钥(serverkey.pub)存储在每个新实例上。
此用户希望通过他们的github帐户访问github-repos,并通过他们存储在github.com上的公钥(github.pub)
由于无法在他们的服务器上提供信息,他们将SSH进入(其中有100个并且IP地址不是常量),此用户无法为服务器/.ssh/config
添加详细信息。 / p>
用户对代理转发有点熟悉,因此他们会执行以下操作:
ssh-add /user/.ssh/github
然后他们输入他们的密码短语。
如果有/.ssh/config
密钥对,/user/.ssh/github
应该包含哪些内容?
用户是否还应添加以下内容:
Host github.com
HostName github.com
User git
IdentityFile ~/user/.ssh/github
或者不会添加任何东西?
我亲自测试了这个,没有在/.ssh/config
文件中添加任何内容并运行此命令:
ssh -T git@github.com
在远程服务器上,它工作/连接。
我只是在验证是否应该向/.ssh/config
文件添加任何内容,以确保我正确地执行所有操作。
答案 0 :(得分:0)
不会添加任何罚款吗?
不,您需要在@Html.LocalDropDownListFor(model => model.EmpName, Model.EmpList)
文件中指定私钥(我会放置密钥的完整路径而不是依赖.ssh/config
)
如果~
没有,请检查 openssh在ssh -T git@github.com
找到其密钥的位置:默认情况下,它是ssh -Tv git@github.com
。
答案 1 :(得分:0)
首先 - 这个问题可能应该转移到服务器故障。
无论哪种方式,如果您希望用户能够在您描述的群集中的任何服务器上访问他的.ssh/github
,那么您应该这样做:
对于每个服务器,在该用户的目录下,将以下内容添加到他的ssh配置中(即/user/.ssh/config
)
Host *
ForwardAgent yes # this will forward the ssh-agent
然后,用户只需添加(如您所述)他的ssh-agent的密钥:ssh-add ~/user/.ssh/github
。
或者,他可以ssh到每个实例,但包含-A
告诉ssh做同样的事情,转发代理。示例:ssh -A user@server_1; ssh -A user@server_2
等。您可以通过从本地计算机开始的每个服务器上调用ssh-add -l
来确认您可以使用这些密钥,并且它应该是一致的。