如何在不创建新ec2-instance的情况下更改ec2-instance的pem文件?

时间:2018-08-17 06:42:43

标签: amazon-web-services amazon-ec2

我已经创建了一个实例及其名为demo.pem的pem文件,
但是出于安全考虑,我必须将旧的demo.pem文件更改为demos.pem实例。
我不想创建用于更改pem文件的新实例 =>可以吗? |救命?

2 个答案:

答案 0 :(得分:4)

值得了解密钥对的工作原理...

使用密钥对登录Linux时,您指定用户名和密钥对,例如:

var MongoClient = require('mongodb').MongoClient;
var mongoData = require('./mongoData');
var exports = module.exports = {};
var dbName = 'checklist';

MongoClient.connect(mongoData.ConString, {
  useNewUrlParser: true
}, function(err, db) {
  if (err) throw err;
  for (var key in mongoData.Customers) {
    if (!existsInDatabase(mongoData.Customers[key], 'Customers')) {
      db.db(dbName).collection('Customers').insertOne(mongoData.Customers[key], function(err, res) {
        if (err) throw err;
        console.log('1 document inserted');
        db.close();
      });
    }
  }
  for (var key in mongoData.Categorys) {
    if (!existsInDatabase(mongoData.Customers[key], 'Customers')) {
      db.db(dbName).collection('Categorys').insertOne(mongoData.Categorys[key], function(err, res) {
        if (err) throw err;
        console.log('1 document inserted');
        db.close();
      });
    }
  }
});

function existsInDatabase(obj, collection) {
  var result = false;
  MongoClient.connect(mongoData.ConString, {
    useNewUrlParser: true
  }, function(err, db) {
    db.db(dbName).collection(collection).find({}).forEach(function(doc) {
      if (doc.id == obj.id) {
        result = true;
      }
    }, function(err) {
      console.log(err);
    });
  });
  return result;
}

然后,Linux查找属于该用户的ssh -i demo.pem ec2-user@54.11.22.33 文件,例如:

.ssh/authorized_keys

如果在该文件中查找与用于登录的私钥匹配的公钥。然后,它会执行神奇的密钥对操作,并确定是否允许该人登录。

因此,要使用新的密钥对启用实例登录

  • 将密钥对的公共部分添加到相应用户主目录中的/home/users/ec2-user/.ssh/authorized_keys 文件中
  • 如果需要,请从该文件中删除旧密钥以删除访问权限

该文件中可以有多个密钥,这些密钥允许通过任何授权的密钥对登录。

答案 1 :(得分:1)

从A到Z的答案:

  1. 在aws界面中创建一个pem密钥对(示例) https://console.aws.amazon.com/ec2/v2/home?region=us-east-1#KeyPairs
  2. 然后转到您的下载文件并修改访问模式
chmod 400 yourNewPemName.pem
  1. 然后生成公钥:
ssh-keygen -y -f yourNewPemName.pem > yourNewPemName.pub
  1. 连接到ec2实例:
cd ~ / .ssh
  1. 然后用在步骤3上方生成的公钥内容替换authorized_keys文件的内容