В этой статье я покажу как быстро и без проблем установить Linux на AWS (Amazon Web Services).
Подготовка к установке Linux на AWS
Надеюсь вам удалось успешно пройти регистрацию, выбрали желаемую подписку, с вас списали доллар и вы оказались на странице:
Linux машина далее по тексту будет именоваться — instance.
Жмём в левом верхнем углу на вкладку Services, после чего видим список всех предоставленных сервисов AWS.
Нас интересует EC2:
В правом верхнем углу(1) вкладка с наименованием Frankfurt говорит нам о расположении нашего instance.
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:
Шаг 1.
- Если вы хотите познакомиться с AWS, рекомендую ставить галочку free tier only, что позволяет использовать бесплатно в течение года micro instances. С ограничение по 750 часов в месяц.
- Выбираем необходимые нам image и архитектуру, я выберу Debian.
- Select
Шаг 2.
- Нам предлагается следующая бесплатная конфигурация, вы можете выбрать необходимое, но помните, за всё нужно платить:
- t2.micro (- ECUs, 1 vCPUs, 2.5 GHz, -, 1 GiB memory, EBS only).
- Можем навести курсором на выделенную зелёным цветом надпись и подробнее прочитать про условия использования данного instance type в кабинете AWS.
- Next: Configure Instance Details
Шаг 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:
- Enclave — позволяет создавать изолированные переменные.
- User data — здесь можем написать скрипт, который выполнится при создании instance.
- Next: Add Storage.
Шаг 4.
- Указываем размер тома, его тип, при необходимости добавляем новые тома. Бесплатно можете использовать 30Gb, за остальное в кабинете AWS придётся платить.
- Next: Add Tags.
Шаг 5.
- Добавим таг Name, Value: Debian_Server.
- Можем добавить таг Owner, Value: AWS_admin.
- Данная информация будет отображаться на панели instances. Очень удобно всегда тагируйте.
- Next: Configure Security Groups.
Шаг 6.
- Создаём свою Security Group (SG).
- Указываем SG name: SG_web_http_https_ssh.
- Указываем Description: SG_web_http_https_ssh.
- Add Rule: выбираем протокол HTTP.
- В поле Source нам предоставляют выбор:
- Custom — задаём подсеть и маску.
- Anywhere — доступно всем пользователя сети интернет.
- My ip — будет доступно только вам.
- HTTPS, SSH и т.д.
- Review and launch.
Шаг 7.
Нам будет предоставлена полная информация о сконфигурированном instance. Жмём Launch.
Шаг 8.
- Всплывёт окно, в котором нам необходимо выбрать создание пары ключей, так как созданных ещё нет.
- Key pair name — пишем что-то осмысленное, например: admin_debian_frankfurt.
- Download key pair — начнётся скачивание приватного ключа. Переместите ключ в удобное для вас место.
- Жмите на ‘Launch Instance’.
Конфигурация завершена. Жмём View instance.
Нас переносит на вкладку Instances, где мы можем увидеть наш только что созданный instance.
Первоначально статус будет: Pending, спустя некоторое время изменится на Running.
- Зелёным цветом показано, что instance запущен. Можем подключаться.
- Public IPv4, можем подключаться по нему, либо использовать Public IPv4 DNS
- Нажмём на Instance ID выделен синим цветом.
Внутри Instance ID видим:
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.
Ещё немного интересного об аккаунте на AWS:
На главной странице кликаем на профиль, далее My Billing Dashboard:
На всё бесплатное есть ограничение как вы уже заметили.
Потренировались с 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.
- Жмём Ок.
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.
Что видим на консоли:
- 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 без заполнения строки.
Успешно сгенерировав пару ключей, вы увидите уведомление:
Открытый ключ хранится в файле /домашний_каталог/.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