您当前的位置:首页 > 电脑百科 > 软件技术 > 操作系统 > linux

在 AWS 中使用 Ansible 来管理你的 SSH 密钥

时间:2019-12-10 09:58:19  来源:  作者:
在 AWS 中使用 Ansible 来管理你的 SSH 密钥

 

本文将会介绍一种在所有区域中使用你的公钥的方法。-- Daniel Leite De Abreu(作者)

如果你长期使用亚马逊 Web 服务(AWS)中的实例,你可能会遇到下面这个常见的问题,它不是因为技术性的原因导致的,更多的是因为人类追求方便舒适的天性:当你登录一台你最近没有使用的区域的新实例,你最终会创建一个新的 SSH 密钥对,久而久之这最终就会造成个人拥有太多密钥,导致管理起来复杂混乱。

本文将会介绍一种在所有区域中使用你的公钥的方法。最近,一篇 Fedora Magazine 的文章 介绍了另一种解决方案。但本文中的解决方案可以进一步的以更简洁和可扩展的方式实现自动化。

假设你有一个 Fedora 30 或 31 系统,其中存储了你的密钥,并且还安装了 Ansible。当这两件事同时满足时,就提供了解决这个问题的办法,甚至它还能做到更多。

使用 Ansible 的 ec2_key 模块 ,你可以创建一个简单的 Ansible 剧本来在所有区域中维护你的 SSH 密钥对。如果你需要增加或者删除密钥,在 Ansible 中这就像从文件中添加和删除行一样简单。

设置和运行 Ansible 剧本

如果要使用剧本,首先需要安装 ec2_key 模块的必要依赖项:

$ sudo dnf install Python3-boto python3-boto3

该剧本很简单:你只需要像下面的例子一样,修改其中的密钥及其对应的名称。然后,运行该剧本,它会帮你遍历所有列出的公共 AWS 区域。该示例还包括一些你可能要访问的受限区域,只需根据需要来取消对应行的注释,然后,保存文件重新运行剧本即可。

---
- name: Maintain an ssh key pair in ec2
 hosts: localhost
 connection: local
 gather_facts: no
 vars:
 ansible_python_interpreter: python
 tasks:
 - name: Make available your ssh public key in ec2 for new instances
 ec2_key:
 name: "YOUR KEY NAME GOES HERE"
 key_material: 'YOUR KEY GOES HERE'
 state: present
 region: "{{ item }}"
 with_items:
 - us-east-2 #US East (Ohio)
 - us-east-1 #US East (N. Virginia)
 - us-west-1 #US West (N. California)
 - us-west-2 #US West (Oregon)
 - ap-east-1 #Asia Pacific (Hong Kong)
 - ap-south-1 #Asia Pacific (Mumbai)
 - ap-northeast-2 #Asia Pacific (seoul)
 - ap-southeast-1 #Asia Pacific (Singapore)
 - ap-southeast-2 #Asia Pacific (Sydney)
 - ap-northeast-1 #Asia Pacific (Tokyo)
 - ca-central-1 #Canada (Central)
 - eu-central-1 #EU (Frankfurt)
 - eu-west-1 #EU (Ireland)
 - eu-west-2 #EU (London)
 - eu-west-3 #EU (Paris)
 - eu-north-1 #EU (Stockholm)
 - me-south-1 #Middle East (Bahrain)
 - sa-east-1 #South America (Sao Paulo)
 # - us-gov-east-1 #AWS GovCloud (US-East)
 # - us-gov-west-1 #AWS GovCloud (US-West)
 # - ap-northeast-3 #Asia Pacific (Osaka-Local)
 # - cn-north-1 #China (Beijing)
 # - cn-northwest-1 #China (Ningxia)

这个剧本需要通过 API 访问 AWS,为此,请使用环境变量,如下所示:

$ AWS_ACCESS_KEY="aws-access-key-id" AWS_SECRET_KEY="aws-secret-key-id" ansible-playbook ec2-playbook.yml

另一个方式是安装 aws 命令行工具并添加凭据,如以前的一篇 Fedora Magazine 文章 所述。如果你在线存储它们,这些参数将不建议插入到剧本中!你可以在 GitHub 中找到本文的剧本代码。

完成该剧本之后,请确认你的密钥在 AWS 控制台上可用。为此,可以做如下操作:

  1. 登录你的 AWS 控制台
  2. 转到 “EC2 > Key Pairs”
  3. 你应该会看到列出的密钥。唯一的限制是你必须使用此方法逐个区域来检查。

另一种方法是在 shell 中使用一个快速命令来为你做这些检查。

首先在剧本上创建一个包含所有区域的变量:

AWS_REGION="us-east-1 us-west-1 us-west-2 ap-east-1 ap-south-1 ap-northeast-2 ap-southeast-1 ap-southeast-2 ap-northeast-1 ca-central-1 eu-central-1 eu-west-1 eu-west-2 eu-west-3 eu-north-1 me-south-1 sa-east-1"

然后,执行如下循环,你就可以从 aws 的 API 获得结果:

for each in ${AWS_REGION} ; do aws ec2 describe-key-pairs --key-name <YOUR KEY GOES HERE> ; done

请记住,要执行上述操作,你需要安装 aws 命令行。


via: https://fedoramagazine.org/using-ansible-to-organize-your-ssh-keys-in-aws/

作者: Daniel Leite de Abreu 选题: lujun9972 译者: hj24 校对: wxy

本文由 LCTT 原创编译, linux中国 荣誉推出



Tags:SSH   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除,谢谢。
▌相关推荐
目的本文的目的是指导在Windows操作系统下面,如何配置通过ssh key来访问gerrit服务器。检查并生成本地的ssh key检查是否已经存在ssh key在生成本地的ssh key之前,我们需要首...【详细内容】
2021-07-23  Tags: SSH  点击:(129)  评论:(0)  加入收藏
今日,OpenBSD社区发布了OpenSSH最新版本8.6。OpenSSH是100%完整的SSH协议2.0实现,也是目前运行最广泛的服务器端和客户端,是GNU/Linux默认安装和启用的服务,其组件中也包括了,更...【详细内容】
2021-04-21  Tags: SSH  点击:(329)  评论:(0)  加入收藏
对于许多系统管理员来说,没有什么比命令行更有效的了。但是,有些用户确实更喜欢 GUI 工具,尤其是从一台桌面台式机远程连接到服务器上工作时。&bull; 来源:linux.cn &bull; 作...【详细内容】
2021-01-14  Tags: SSH  点击:(218)  评论:(0)  加入收藏
1、通过在文件对话框中选择身份文件来添加/更改身份文件2、通过图形帮助添加/编辑端口转发选项3、在帮助下添加/编辑任何受支持的ssh选项4、RSA密钥对生成5、用于将主机配置...【详细内容】
2020-12-04  Tags: SSH  点击:(192)  评论:(0)  加入收藏
在服务器开发的过程中,经常使用SSH连接到远程服务上执行脚本,有些脚本可能需要运行一段时间在脚本运行期间,如果会话超时或者会话意外断开又或者不小心关掉了关掉了当前会话窗...【详细内容】
2020-11-04  Tags: SSH  点击:(138)  评论:(0)  加入收藏
OpenSSH 8.4 已发布,OpenSSH 是 100% 完整的 SSH 协议 2.0 版本的实现,并且包括 sftp 客户端和服务器支持,它用于远程登录的主要连接工具。OpenSSH 对所有流量进行加密,避免窃听...【详细内容】
2020-09-30  Tags: SSH  点击:(128)  评论:(0)  加入收藏
需要远程工作的看一下。使用这个有用的开源解决方案,从任何地方快速地连接和访问你的所有设备。&bull; 来源:linux.cn &bull; 作者:Domarys &bull; 译者:geekpi &bull;(本文字数...【详细内容】
2020-09-17  Tags: SSH  点击:(101)  评论:(0)  加入收藏
你可能想为 SSH 连接添加额外的安全层。在这些情况下,通过代理服务器连接到 SSH 服务器是一种解决方式。&bull; 来源:linux.cn &bull; 作者:Curt Warfield &bull; 译者:geekpi...【详细内容】
2020-08-01  Tags: SSH  点击:(78)  评论:(0)  加入收藏
不少的云服务器的网页后台就能登录服务器,并可以在浏览器上进入命令行交互。能不能在自己也部署一个呢?能不能配置一个更加符合自身需求的网页 SSH 终端呢?或许可以以此做一个...【详细内容】
2020-06-18  Tags: SSH  点击:(1026)  评论:(0)  加入收藏
通过 SSH 连接远程 Linux 系统很简单。下面是教程。 来源:https://linux.cn/article-12255-1.html 作者:Jim Hall 译者:Xiaobin.Liu树莓派是一个有用且价格低廉的家庭服务器,可...【详细内容】
2020-05-29  Tags: SSH  点击:(52)  评论:(0)  加入收藏
▌简易百科推荐
作用显示文件或目录所占用的磁盘空间使用命令格式du [option] 文件/目录命令功能显示文件或目录所占用的磁盘空间一些写法的区别du -sh xxx 显示总目录的大小,但是不会列出...【详细内容】
2021-12-23  mitsuhide1992    Tags:du命令   点击:(12)  评论:(0)  加入收藏
什么是linux内核linux就像是一个哲学的最佳实践。如果非要对它评价,我真的不知道该怎么赞叹,我只能自豪地说着:“linux的美丽简直让人沉醉。”我只能说是我处在linux学习的修炼...【详细内容】
2021-12-23  linux上的码农    Tags:linux内核   点击:(15)  评论:(0)  加入收藏
本文将比较 Linux 中 service 和 systemctl 命令,先分别简单介绍这两个命令的基础用法,然后进行比较。从 CentOS 7.x 开始,CentOS 开始使用 systemd 服务来代替 service服务(dae...【详细内容】
2021-12-23  软件架构    Tags:systemctl   点击:(14)  评论:(0)  加入收藏
mv是move的缩写,可以用来移动文件或者重命名文件名,经常用来备份文件或者目录。命令格式mv [选项] 源文件或者目录 目标文件或者目录命令功能mv命令中第二个参数类型的不同(...【详细内容】
2021-12-17  入门小站    Tags:mv命令   点击:(23)  评论:(0)  加入收藏
大数据技术AI Flink/Spark/Hadoop/数仓,数据分析、面试,源码解读等干货学习资料 98篇原创内容 -->公众号 Linux sed 命令是利用脚本来处理文本文件。sed 可依照脚本的指令来处...【详细内容】
2021-12-17  仙风道骨的宝石骑士    Tags:sed命令   点击:(22)  评论:(0)  加入收藏
Node是个啥?  写个东西还是尽量面面俱到吧,所以有关基本概念的东西我也从网上选择性地拿了下来,有些地方针对自己的理解有所改动,对这些概念性的东西有过了解的可选择跳过这段...【详细内容】
2021-12-15  linux上的码农    Tags:node   点击:(25)  评论:(0)  加入收藏
难道只有我一个人觉得Ubuntu的unity桌面非常好用吗?最近把台式机上面的Ubuntu 16.04格式化了,装了黑苹果用了一周,不得不说,MacOS确实很精美,软件生态比Linux丰富很多,比Windows简...【详细内容】
2021-12-14  地球末日村    Tags:ubuntu   点击:(41)  评论:(0)  加入收藏
简介Netstat 命令用于显示各种网络相关信息,如网络连接,路由表,接口状态 (Interface Statistics),masquerade 连接,多播成员 (Multicast Memberships) 等等。输出信息含义执行net...【详细内容】
2021-12-13  窥镜天    Tags:Linux netstat   点击:(28)  评论:(0)  加入收藏
对于较多数量的文件描述符的监听无论是select还是poll系统调用都显得捉襟见肘,poll每次都需要将所有的文件描述符复制到内核,内核本身不会对这些文件描述符加以保存,这样的设计...【详细内容】
2021-12-13  深度Linux    Tags:Linux   点击:(19)  评论:(0)  加入收藏
今天,我们来了解下 Linux 系统的革命性通用执行引擎-eBPF,之所以聊着玩意,因为它确实牛逼,作为一项底层技术,在现在的云原生生态领域中起着举足轻重的作用。截至目前,业界使用范...【详细内容】
2021-12-10  架构驿站    Tags:eBPF   点击:(29)  评论:(0)  加入收藏
最新更新
栏目热门
栏目头条