多个服务器上的SSH代理转发

时间:2017-03-06 21:50:03

标签: github ssh

我将这个问题解释为一个故事,以便尽可能多地提供详细信息。

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文件添加任何内容,以确保我正确地执行所有操作。

2 个答案:

答案 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来确认您可以使用这些密钥,并且它应该是一致的。