如何pipe理凭证/访问多个SSH服务器

我想制作一个可以通过SSH维护多个服务器的脚本。 我想控制authentication/授权的方式,authentication是由网关完成,任何其他访问通过此ssh服务器路由到内部服务没有任何进一步的authentication/授权要求。

因此,如果用户A可以login到server_1例如。 然后,他可以在没有任何其他身份validation的情况下ssh到server_2,并执行他在server_2上允许执行的任何操作(例如closuresmysql,升级并重新启动它,这可以通过一些远程shell脚本完成)。

我试图解决的问题是为涉及数据库和tomcat实例的JavaEE系统提出一个部署脚本。 他们需要被closures并重新产生。 要求是有一个部署脚本尽可能地为开发人员和操作尽可能less的人机交互。

你不应该在这里重新发明轮子,否则你只会长期为自己做更多的工作,并引入新的安全问题。 想到的两个选项是:

  • 编写一组处理您需要处理的操作的API,然后将其托pipe在网关上并添加身份validation。 像这样站在系统上,而不是试图用你自己的安全机制来使用ssh,这将大大降低漏洞级别,并且使其更易于在各种平台上实现。
  • configuration基于密钥的身份validation,在客户端上使用ssh-agent以及允许到最终目的地的代理转发的组合,以便您可以根据您本地解锁的密钥从一个到另一个进行SSH连接。

当你使用ssh的时候,你应该看一下基于ssh key的authentication和使用ssh-agent 。 如果你使用类似PuTTY和pageant的东西,那么你可以将私钥加载到pageant中,并使用它来validation相关公钥所在的位置。

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