Найти тему
Yodo чат-бот учитель

AWS. Поднимаем Linux на AWS EC2

Оглавление

В этой статье я покажу как быстро и без проблем установить Linux на AWS (Amazon Web Services).

Подготовка к установке Linux на AWS

Надеюсь вам удалось успешно пройти регистрацию, выбрали желаемую подписку, с вас списали доллар и вы оказались на  странице:

Linux машина далее по тексту будет именоваться — instance.

Жмём в левом верхнем углу на вкладку Services, после чего видим список всех предоставленных сервисов AWS.

Нас интересует EC2:

-2

В правом верхнем углу(1) вкладка с наименованием Frankfurt говорит нам о расположении нашего instance.

-3

Region — географическое местоположение (Europe — Frankfurt).

Availability Zone — изолированный Data Centre (eu-central-1).

Instance закрепляется за связкой Region + Availability Zone.

Если изменить Region или Availability Zone, созданный ранее instance не обнаружится на AWS EC2 Dashboard.

Приступим к созданию instance, переходим по вкладке Instances(2), жмём Launch Instances:

-4

Шаг 1.

  • Если вы хотите познакомиться с AWS, рекомендую ставить галочку free tier only, что позволяет использовать бесплатно в течение года micro instances. С ограничение по 750 часов в месяц.
  • Выбираем необходимые нам image и архитектуру, я выберу Debian.
  • Select
-5

Шаг 2.

  • Нам предлагается следующая бесплатная конфигурация, вы можете выбрать необходимое, но помните, за всё нужно платить:
  • t2.micro (- ECUs, 1 vCPUs, 2.5 GHz, -, 1 GiB memory, EBS only).
  • Можем навести курсором на выделенную зелёным цветом надпись и подробнее прочитать про условия использования данного instance type в кабинете AWS.
  • Next: Configure Instance Details
-6

Шаг 3.

Рассмотрим не все настройки в данном блоке, только самое необходимое, что не требует финансовых затрат.

  • Number of instances  —  необходимое количество instance, которое мы хотим развернуть в AWS

В нашем случае достаточно одного.

  • Network  — можем создать свой VPC, а можем воспользоваться уже имеющимся.
  • Subnet — можем выбрать из имеющихся, можем создать свою.
  • Shutdown Behavior — по умолчанию стоит Stop, если выставим Terminate — instance удалится при выключении.
  • Stop — Hibernate behavior — при переводе instance в спящий режим, в режиме гибернации содержимое памяти инстанса (ОЗУ) сохраняется в корневом томе Amazon Elastic Block Store (Amazon EBS).
  • Enable termination protection — защита от случайного удаления, советую включить.
  • Advanced Details:
  1. Enclave — позволяет создавать изолированные переменные.
  2. User data — здесь можем написать скрипт, который выполнится при создании instance.
  • Next: Add Storage.
-7

Шаг 4.

  • Указываем размер тома, его тип, при необходимости добавляем новые тома. Бесплатно можете использовать 30Gb, за остальное в кабинете AWS придётся платить.
  • Next: Add Tags.
-8

Шаг 5.

  • Добавим таг Name, Value: Debian_Server.
  • Можем добавить таг Owner, Value: AWS_admin.
  • Данная информация будет отображаться на панели instances. Очень удобно всегда тагируйте.
  • Next: Configure Security Groups.
-9

Шаг 6.

  • Создаём свою Security Group (SG).
  • Указываем SG name: SG_web_http_https_ssh.
  • Указываем Description: SG_web_http_https_ssh.
  • Add Rule: выбираем протокол HTTP.
  • В поле Source нам предоставляют выбор:
  1. Custom — задаём подсеть и маску.
  2. Anywhere — доступно всем пользователя сети интернет.
  3. My ip — будет доступно только вам.
  • HTTPS, SSH и т.д.
  • Review and launch.
-10

Шаг 7.

Нам будет предоставлена полная информация о сконфигурированном instance. Жмём Launch.

Шаг 8.

  • Всплывёт окно, в котором нам необходимо выбрать создание пары ключей, так как созданных ещё нет.
  • Key pair name — пишем что-то осмысленное, например: admin_debian_frankfurt.
  • Download key pair — начнётся скачивание приватного ключа. Переместите ключ в удобное для вас место.
  • Жмите на ‘Launch Instance’.
-11

Конфигурация завершена. Жмём View instance.

Нас переносит на вкладку Instances, где мы можем увидеть наш только что созданный instance.

Первоначально статус будет: Pending, спустя некоторое время изменится на Running.

  • Зелёным цветом показано, что instance запущен. Можем подключаться.
  • Public IPv4, можем подключаться по нему, либо использовать Public IPv4 DNS
  • Нажмём на Instance ID выделен синим цветом.
-12

Внутри Instance ID видим:

-13

Instance State:

  • Stop, Start, Terminate, Reboot, Hibernate.

Подключение:

  • В кабинете AWS переходим на вкладку SSH client.
  • 4 пункт предлагает нам команду, по которой мы можем подключиться к нашему instance.
  • Вы можете использовать Public DNS, либо Public IPv4, если вы подключаетесь к Linux instance из интернета.
  • Вы можете использовать Private DNS, либо Private IPv4, если вы подключаетесь к Linux instance внутри локальной сети. Например у вас два instances, созданных в AWS.
-14

Ещё немного интересного об аккаунте на AWS:

На главной странице кликаем на профиль, далее My Billing Dashboard:

-15

На всё бесплатное есть ограничение как вы уже заметили.

-16

Потренировались с instance — удаляем его.

Добавили фичу типа мониторинга, балансировщика — посмотрели, удалили.

99,99% того что вы поставите на aws, будет стоить денег.

Рассмотрим вариант с подключением посредством SSH-client . Я использую MobaXterm.

  • Создадим новую сессию.
  • Выбираем SSH.
  • Advanced SSH settings.
  • Галку на Use private key — указываем путь до приватного ключа aws_frankfurt, который мы создавали на Step 8.
  • Remote host — указываем Public IPv4.
  • Галку на Specify username — в моём случае admin. Всю эту информацию вы также можете посмотреть в Public IPv4 DNS имени, описанном в предыдущем шаге. Напомню как это выглядит <username>@ec2-<ipv4-address>.eu-central-1.compute.amazonaws.com.
  • Жмём Ок.
-17

Cканируем порты на нашем aws instance.

Действия производим с хоста не являющегося нашим ново созданным instance.

Обновляем репозиторий и устанавливаем утилиту nmap:

$ sudo apt-get update && sudo apt-get install -y nmap

Далее вводим команду с sudo, вместо <ip_address_aws_instance> указываем IP адрес AWS instance:

$ sudo nmap -Pn <ip_address_aws_instance>

  • Можете ввести команду без дополнительных ключей -Pn, результат будет отличным от того, что у меня на экране и вам предложат добавить ключ -Pn.

Note: Host seems down. If it is really up, but blocking our ping probes, try -Pn

  • -P0 — опция -P0, при которой исследуемый компьютер не сканируется на присутствие в сети (то есть не пингуется вообще), а сканируются только порты компьютера.
  • -Pn — По умолчанию при сканировании IP-адреса Nmap получает информацию об имени компьютера из системного DNS. Чтобы увеличить скорость сканирования, можно отключить эту опцию, для чего  необходимо добавить ключ -n.
-18

Что видим на консоли:

  • IP адреса instance.
  • 999 filtered ports — Nmap не может определить, открыт ли порт, т.к. фильтрация пакетов не позволяет достичь запросам Nmap этого порта.
  • 22/tcp open ssh — Приложение принимает запросы на TCP соединение или UDP пакеты на этот порт.

У вас может отображаться больше портов, всё зависит от того, как вы настраивали SG на AWS instance при его создании.

Если хотите закрыть порты, переходите в aws, откуда у нас начиналось знакомство, потом во вкладку Instances > Instance ID > Security > Security groups > Edit Inbound Rules.

Делаете изменения, сохраняете, ради интереса вновь просканируйте.

Для того, чтобы не запоминать ip адрес instance давайте пропишем его в файл /etc/hosts:

$ sudo vi /etc/hosts

(можете использовать другой редактор, например nano)

<aws_instance_ip>       aws_instance

Сохраняем изменения и выходим, пробуем сканировать  instance по его имени, указанному в hosts:

$ sudo nmap -Pn aws_instance

Хорошо, теперь попробуем подключиться к instance по ssh, подбросив ему свой открытый ssh_public_key.

$ sudo apt-get install openssh-server openssh-clients

$ ssh-keygen

Введите путь файла, в который будут помещены ключи.

Каталог по умолчанию указан в скобках, в примере /домашний_каталог/.ssh/id_rsa. Если хотите оставить расположение по умолчанию, нажмите Enter.

Пароль (passphrase) используется для ограничения доступа к закрытому ключу. Пароль усложнит использование ключа третьими лицами в случае утраты. Если не хотите использовать секретную фразу, нажмите Enter без заполнения строки.

Успешно сгенерировав пару ключей, вы увидите уведомление:

-19

Открытый ключ хранится в файле /домашний_каталог/.ssh/id_rsa.pub, закрытый — /домашний_каталог/.ssh/id_rsa.

Скопируйте открытый ключ на сервер в файл  /домашний_каталог/.ssh/authorized_keys. Одной строкой:

$ cat ~/.ssh/id_rsa.pub | sudo ssh -i /home/<user_name>/aws_frankfurt.pem admin@<aws_admin> \ 'cat >> ~/.ssh/authorized_keys'

Вспомните куда локально сохранили приватный ключ для доступа, его мы получили после генерации пары ключей, создавая наш instance.

Скопируйте его в удобное для вас место на локальной машине. У меня он хранится в:

/home/node2/aws_frankfurt.pem

<aws_admin> — имя хоста, которое вы указали в файле /etc/hosts

authorized_keys — файл, где будут храниться наши public ключи.

Если после выполнения команды произошла ошибка, то скорее всего дело в пути к ключам.

Пробуем подключиться к instance:

$ ssh admin@aws_admin

Надеюсь, у вас получилось и вы попали в консоль AWS ec2 instance.

Начать курс Linux бесплатно:yodo.im/start

Читай также как установить Windows для Linux