我想编写一个可以通过 SSH 维护多个服务器的脚本。我想以这样一种方式控制身份验证/授权:身份验证由网关完成,任何其他访问都通过此 ssh 服务器路由到内部服务,而无需任何进一步的身份验证/授权要求。
因此,如果用户 A 可以登录到 server_1,则他无需任何其他身份验证即可 ssh 到 server_2,并在 server_2 上执行允许执行的任何操作(例如关闭 mysql、升级并重新启动它。这可以通过一些远程 shell 脚本完成)。
我要解决的问题是为涉及数据库和 tomcat 实例的 JavaEE 系统编写一个部署脚本。它们需要关闭并重新启动。要求是让部署脚本尽可能减少开发人员和操作人员的人工交互。
答案1
您不应该在这里重新发明轮子,否则从长远来看,您只会给自己带来更多工作,并引入新的安全问题。我想到的两个选择是:
- 编写一组 API,仅处理您需要处理的操作,然后将其托管在网关上并添加身份验证。拥有这样的独立系统,而不是尝试使用 ssh 和您自己的安全机制,将大大降低漏洞级别,并使其更容易在各种平台上实施。
- 配置基于密钥的身份验证组合,在客户端上使用
ssh-agent
并允许代理转发到最终目的地,以便您可以根据本地解锁的密钥从一个目的地通过 SSH 到达下一个目的地。