如何为不同服务器上的用户提供单一的ssh公钥/私钥对?

我正在努力在我们的环境中标准化不同的位,并且希望转向基于ssh密钥的身份validation。

目前我们在每台服务器上都有个人帐户(大约150-200个),幸好我们在大多数服务器上保持uid / gid / username相同。当有人join或离开时,很难在每台主机上添加/删除用户公司。 通常情况下,每个团队和团队成员都有一个软件帐户,通过input帐户密码ssh到服务器作为软件帐户。

为了方便我们的pipe理,我将在环境中引入puppet,并且想用ssh_authorized_key puppet资源用用户的公钥更新软件账户授权密钥文件。

在我的理解中,这将是:

ssh_authorized_key {'Ram':user =>'',type =>'ssh-rsa',key =>'',}

ssh_authorized_key {'Shyam':user =>'',type =>'ssh-rsa',key =>'',}

那么,如何确保这个公钥在所有服务器上都是相同的? 例如,如果用户'Ram'尝试从任何服务器ssh到服务器'hostA',则应该使用相同的公私密钥对。

任何指针,我怎么能保持? 请让我知道,如果有什么不清楚。 提前致谢。

-内存

您需要使用SSH代理转发。 基本上你做一个文件~/.ssh/config ,在其中添加:

 Host host ForwardAgent yes 

这告诉SSH它会将authentication信息从当前会话传递到下一个服务器。 因此用户的私钥保存在自己身上,并用它连接到第一台服务器。

有关更完整的指南,请参阅https://developer.github.com/v3/guides/using-ssh-agent-forwarding/

你有你的所有用户的公钥的副本吗? 编写一个为每个用户的凭证运行ssh-copy-id的脚本应该是相对简单的。

您将需要确保用户在每个用户打算进入SSH的机器上创build。

另一方面,密钥不是特定于用户的。 你只需要添加一个公钥到任何用户的〜/ .ssh / authorized_keys'他们打算作为。 您可以将相同的密钥添加到根,ec2-user,“joe”等。