如何管理多个 ssh 服务器的凭证/访问权限

如何管理多个 ssh 服务器的凭证/访问权限

我想编写一个可以通过 SSH 维护多个服务器的脚本。我想以这样一种方式控制身份验证/授权:身份验证由网关完成,任何其他访问都通过此 ssh 服务器路由到内部服务,而无需任何进一步的身份验证/授权要求。

因此,如果用户 A 可以登录到 server_1,则他无需任何其他身份验证即可 ssh 到 server_2,并在 server_2 上执行允许执行的任何操作(例如关闭 mysql、升级并重新启动它。这可以通过一些远程 shell 脚本完成)。

我要解决的问题是为涉及数据库和 tomcat 实例的 JavaEE 系统编写一个部署脚本。它们需要关闭并重新启动。要求是让部署脚本尽可能减少开发人员和操作人员的人工交互。

答案1

您不应该在这里重新发明轮子,否则从长远来看,您只会给自己带来更多工作,并引入新的安全问题。我想到的两个选择是:

  • 编写一组 API,仅处理您需要处理的操作,然后将其托管在网关上并添加身份验证。拥有这样的独立系统,而不是尝试使用 ssh 和您自己的安全机制,将大大降低漏洞级别,并使其更容易在各种平台上实施。
  • 配置基于密钥的身份验证组合,在客户端上使用ssh-agent并允许代理转发到最终目的地,以便您可以根据本地解锁的密钥从一个目的地通过 SSH 到达下一个目的地。

答案2

由于您正在使用 ssh,因此您应该查看ssh key基于身份验证和使用ssh 代理.如果你使用类似油灰盛会然后,您只需将私钥加载到 Pageant 中,并使用它来验证相关公钥所在的位置。

如果你确实设法让一切自动化,那么就可以限制密钥的使用某些命令也。

相关内容