【小技巧】利用ssh-agent来提升ansible管控的安全性?

默认情况下,ansible会使用中控端操作系统上安装的原生SSH客户端来实现与远端主机的通信。在之前我们会建立中控端与远端主机的SSH互信,首先利用ssh-keygen来生成一对私钥和公钥,再利用ssh-copy-id将公钥下发到远端主机,中控端则可以利用私钥免密地与远端主机通信。
然而这样一来,如果私钥文件泄露了,其他服务器使用这个私钥同样能够免密地和远端主机通信。这时我们可以采用加密的SSH私钥来增强私钥的安全性,在用ssh-kengen生成私钥时,输入加密密码。当私钥和公钥配对前,会强制要求输入这个私钥密码。然而这样一来又会带来另一个新问题,ansible管控了成千上万个远端主机,不可能每次都要输入私钥密码来执行任务。
这时,我们就要用到ssh agent了,它有以下几个优点:
1、ssh agent让加密的SSH私钥的管理变得更加容易,通过它能够实现免私钥密、免远端主机密码去登录远端主机。
使用方法:我们只需在中控端通过“ssh-agent”命令来启动ssh agent,然后通过“ssh-add 私钥路径/私钥文件名”来添加私钥至ssh-agent,第一次需要输入加密私钥的密码。在添加私钥时,可能会出现“Could not open a connection to your authentication agent”的报错,这时需要运行“ssh-agent bash”命令来解决。最后我们可以使用“ssh-add -L”命令来查看添加到agent中的所有私钥。
2、如果之前我们使用了ansible来管理不同的SSH私钥,使用ssh agent可以简化ansible的配置文件,而不必在主机上明确指定ansible_ssh_private_key_file。
这样一方面加强了ansible利用ssh私钥的安全性,另一方面也避免了因私钥密码的设置带来的不便利性,同时也增强了私钥的管控的统一性。

参与1

0同行回答

“答”则兼济天下,请您为题主分忧!

提问者

jxnxsdengyu
系统工程师江西农信
擅长领域: 存储灾备双活

问题来自

相关问题

相关资料

相关文章

问题状态

  • 发布时间:2020-06-10
  • 关注会员:1 人
  • 问题浏览:5414
  • X社区推广