欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

aws ec2的key pairs的深入理解 博客分类: awsec2ssh awssshec2key pairssh-keygen 

程序员文章站 2024-02-06 19:13:16
...

ssh

提到ssh,用过linux的应该都不陌生。通俗地说,就是通过工具生成一个key pair,linux server端存储public key,client端保留一个private key。通过支持ssh协议的客户端工具(putty,tera term)或者命令行工具(ssh),login到server的时候,需要输入linux用户名,同时选择一个保存private key的文件。只有private key和public key匹配成功,才会login成功。

 

aws key pairs

aws里面的key pairs,其实就是ssh的public key和private key。只是aws可以通过console界面来生成和管理,向使用者屏蔽了ssh复杂的技术细节,这一点也是面向服务思想的一个体现吧。

 

在创建ec2实例的时候,会提示你create key pair,所以说key pair资源是用来绑定到ec2 instance上的。

同一个key pair可以绑定到多个ec2 instance。而且,一个instance内部的多个os用户也可以使用同一个key pair。虽然从安全角度,aws是不推荐这么共用key pair的。

 

不过,通过ec2的console,只能绑定一个key pair,如果每个ec2 os用户需要使用自己单独的key pair的话,该怎么办呢?别急,有好几种方法可以搞定。

 1〉最直接的方法

手工编辑~/.ssh/authorized_keys文件。把每个用户的public key配置信息追加进来。

 

2〉创建ec2 instance的时候,通过Advanced instance options中的User Data界面,配置cloud-init directive脚本。不过user data中的脚本只在创建instance的时候执行一次。

此外,除了cloud-init directive,User Data还支持shell script,如果使用aws cli创建instance的话,也可以指定本地的脚本文件,当然文件内容既可以是shell script,也可以是cloud-init directive。

 

其实,aws ec2和key pairs,说白了,就是传统linux os和ssh的一种面向服务的包装而已。

 

常用的一些小技巧

 

1〉通过private key,获取public key

 

ssh-keygen -y

Enter file in which the key is:my-private.pem

ssh-rsa xxxxxxxxxxxxxxyyyyyyyyyyyyyyyyyyyyyyzzzzzzzzzzzzzzzzzz

 

2>aws cli获取key pairs信息

>set http_proxy=myproxy.com:9999

>set https_proxy=myproxy.com:9999

>aws configure

  AWS Access Key ID [****************xxxx]:

  AWS Secret Access Key [****************yyyy]:

  Default region name [None]: ap-northeast-1

  Default output format [None]: json

 

查看所有的key pair信息

>aws ec2 describe-key-pairs

 

查看指定的key pair信息

>aws ec2 describe-key-pairs --key-name mykey

 

从返回结果中可以发现有一个KeyFingerprint(通过aws console查看也可以发现),这个fingerprint是针对public key生成的一个指纹信息,用于辅助校验key pair的安全性。一般在在第一次发起ssh连接的时候,server端会把这个fingerprint信息存储在client端,ssh客户端以后每次连接的时候会比较一下本地cache的fingerprint与server端返回的是否一致,如果不一致,会提醒用户核实情况再发起连接。

 

查看public key的fingerprint的方法

--client端

ssh-keygen -lf authorized_keys

 

--sshd daemon

ssh-keygen -lf /etc/ssh/ssh_host_rsa_key.pub