在创建ec2实例时,我们提供密钥对名称。
但通常,我将多个ssh公钥/私钥与任何远程服务器关联。我知道一旦创建了ec2服务器,就无法附加密钥对。所以我想知道在创建实例时是否可以使用多个密钥对。
答案 0 :(得分:24)
不幸的是,也无法导入具有两个条目的密钥。只有第一个条目被导入新密钥对。
可以做的是:
不要使用EC2密钥对,而是使用public E find(E x) {
return find(root,x);
}
private E find(BinaryNode<E> n, E x) {
if (n == null) {
return null;
}
else if (n.element.equals(x)) {
return n.element;
}
else if (x.compareTo(n.element) < 0) {
return find(n.left, x);
}
else {
return find(n.right, x);
}
}
字段在user_data
文件中插入多个SSH公钥,其中是AMI的标准用户(ubuntu,ec2_user等)。 )。
您可以为每个启动的EC2实例添加/home/<user>/.ssh/authorized_keys
。请考虑以下示例:
user_data
用户数据脚本以#!/bin/bash
echo "ssh-rsa AAAA…" > /home/ubuntu/.ssh/authorized_keys
echo "ssh-rsa AAAA…" >> /home/ubuntu/.ssh/authorized_keys
chown ubuntu: /home/ubuntu/.ssh/authorized_keys
chmod 0600 /home/ubuntu/.ssh/authorized_keys
运行,因此您无需指定root
。
这样,您可以在使用Ansible或类似工具管理实例之前,通过Terraform等工具创建个性化的SSH访问密钥。
注意但是,您不知道简单外观正在使用哪些键。您需要访问机器才能检查它。
答案 1 :(得分:6)
你不能......唯一的方法是手动编辑〜/ .ssh / authorized_keys并添加你想要访问的额外用户的公钥。这种方法的缺点是,当您的EC2终止时,您将不得不重新执行此操作。在开发人员/测试环境中不太方便...... :(
答案 2 :(得分:0)
您无法将多个密钥对与EC2实例关联。
话虽如此,您可以创建多个用户,并通过SSH使用密钥身份验证而不是密码为他们提供对实例的访问权。
这个过程是这样的
答案 3 :(得分:0)
最简单,简单和标准的方法是将另一个(本地计算机的)SSH公钥添加到远程EC2实例中。
要从本地计算机生成密钥,请使用:ssh-keygen
命令。
然后将您本地计算机的.pub生成的密钥应用于EC2实例的 $ HOME / .ssh / authorized_keys 。
通过从本地计算机登录EC2来验证操作,甚至不使用SSH登录命令的 -i 选项。