Назад | Перейти на главную страницу

EC2: несколько ключей ssh ​​для экземпляра?

Можно ли создать более одного закрытого ключа для SSH в экземпляре EC2? Что для этого лучше всего? У нас есть несколько пользователей, которым нужно подключиться к серверам по SSH, и распространение одного ключа просто не работает. Это не позволяет нам лишать пользователей возможности подключаться к серверу по SSH, если мы не изменим ключ и не распространим.

Вы также можете использовать стандартные механизмы ssh. Лучшим подходом было бы, если бы пользователь запустил на своей машине ssh-keygen чтобы сгенерировать свою пару ключей. Затем они отправят вам ~/.ssh/id_rsa.pub (или id_dsa.pub, в зависимости от выбранного алгоритма), и вы добавляете его содержимое в .ssh/authorized_keys на целевом хосте в домашнем каталоге учетной записи пользователя, к которой они должны иметь доступ. В файле может быть более одного ключа. По одному на строку. И все! Один и тот же открытый ключ (id_rsa.pub) можно использовать на любом количестве хостов - он всегда будет идентифицировать пользователя.

Вы также можете сделать это иначе - вы запустите ssh-keygen и отправите пользователю ~ / .ssh / id_rsa (или id_dsa). И пользователь сохраняет файл в ~ / .ssh / id_rsa. Просто не забудьте изменить права доступа на 600 (-rw -------) этого файла, иначе ssh не примет его. Очевидно, это менее безопасно, поскольку закрытый ключ, вероятно, распространяется по электронной почте.

Это также можно сделать в PuTTY с помощью PuTTYgen.

Абсолютно; вы просто помещаете все соответствующие открытые ключи в образ, и все будет в порядке. Я предпочитаю использовать систему управления конфигурацией для управления ключами SSH; Таким образом, довольно просто отозвать доступ пользователя даже в работающей системе. Есть также гораздо больше ... скажем так, "творческих" ... способов справиться с этим, таких как хранение всех ваших ключей SSH в LDAP, которые централизуют ключи SSH, как и любые другие учетные данные.

Более простой способ показан ниже.

Для пользователей Linux / Mac:

  1. Для создания открытого и закрытого ключей используйте следующую команду: $ ssh-keygen -t rsa -b 4096

  2. Загрузите открытый ключ в папку в вашей корзине S3. Например : S3> MyBucket> Keypair

  3. Сохраните и защитите свой закрытый ключ.

Для пользователей Windows:

  1. Используйте puttygen для создания ключей.
  2. следить DigitalOcean для создания ключей SSH.
  3. Загрузите открытый ключ в S3> MyBucket> Keypair
  4. Сохраните и защитите свой закрытый ключ.

Следующие шаги важны во время запуска любого Linux AMI.

  1. Убедитесь, что для роли IAM есть роль, созданная с помощью политики AmazonS3FullAccess. Это позволяет экземпляру взять на себя роль для доступа к корзинам S3. Это необходимо для чтения открытых ключей из S3 и копирования их в профиль пользователя.

  2. Добавьте следующий код в раздел пользовательских данных в разделе «Настройка сведений об экземпляре»> «Дополнительные сведения (в виде текста)»:

    #!/bin/bash
    usermod user 1
    usermod -aG wheel user1
    mkdir /home/user1/.ssh/
    aws s3 cp s3://MyBucket    /Keypair/user1-pub.pub /home/user1/.ssh/authorized_keys
    
    useradd user2
    usermod -aG wheel user2
    mkdir /home/user2/.ssh/
    aws s3 cp s3://MyBucket   /Keypair/user2-pub.pub /home/user2/.ssh/authorized_keys
    
    sudo -i 
    echo “user1 ALL=(ALL) NOPASSWD:ALL” >> /etc/sudoers
    echo “user2 ALL=(ALL) NOPASSWD:ALL” >> /etc/sudoers
    
    yum update -y
    

Эта установка создает Пользователь1 и Пользователь2 и добавляет их в судо пользователей. В aws s3 cp команда копирует открытые ключи пользователей из папки S3 в их .ssh/authorized_keys path. Последний раздел предназначен для запуска команд от имени администратора без использования паролей.

Здесь можно порекомендовать множество улучшений безопасности. Хотя это не используется явно в этом примере, ограничение доступа к сегменту S3 конкретным сегментом и знание последствий отключения использования пароля в sudo для безопасности - это несколько вещей, которые можно выделить. Используйте их с умом, исходя из ваших конкретных потребностей.