Отличительной чертой Jelastic можно считать удобный UI, который позволяет управлять многими процесами в вашем окружении без особых трудностей. Основные возможности доступны в панели управления, но порой пользователю необходимо погрузиться поглубже, чтобы произвести дополнительные настройки в том или ином контейнере, с целью кастомизации, улучшения производительности и т.д. Потому мы предоставили возможность доступа к контейнерам через SSH. В этой статье мы расскажем об этой функции и ее использовании в облаке Jelastic.
![image](https://habrastorage.org/r/w1560/files/b6b/b17/dce/b6bb17dce677477d95b3f9e8d337f0f6.png)
SSH (Secure Shell) — это протокол, используемый для безопасного соединения с удаленным контейнером и выполнения действий над ним. Команды SSH зашифрованы и защищены: подключение клиент/сервер проходит аутентификацию с помощью цифрового сертификата, а пароли также защищены шифрованием.
Чтобы предоставить SSH доступ в Jelastic, мы добавили новый компонент инфраструктуры — SSH Gateway (SSH шлюз). Он принимает подключения пользователей из интернета и передает их нужному контейнеру по внутренней сети.
![image](https://habrastorage.org/r/w1560/files/631/e12/ed3/631e12ed3d9e4715bfbe919d982166c2.png)
Процедура аутентификации в Jelastic SSH шлюзе разделена на две независимые части:
Оба этапа базируются на стандартном протоколе SSH и используют криптографическую пару (открытый и закрытый ключи).
С помощью Jelastic SSH шлюза можно легко получить доступ:
![image](https://habrastorage.org/r/w1560/files/438/6c9/9dc/4386c99dc5974d8986c7cdbc0ffd8daa.png)
![image](https://habrastorage.org/r/w1560/files/bde/ccf/835/bdeccf835f33473bb716cf1136394e97.png)
При доступе к контейнерам посредством SSH, пользователь получает все необходимые разрешения и дополнительно может управлять основными сервисами с помощью команд sudo следующего типа (и других):
sudo /etc/init.d/jetty start
sudo /etc/init.d/mysql stop
sudo /etc/init.d/tomcat restart
sudo /etc/init.d/memcached status
sudo /etc/init.d/mongod reload
sudo /etc/init.d/nginx upgrade
sudo /etc/init.d/httpd help
Кроме того, Jelastic поддерживает SFTP (Secure File Transfer Protocol), благодаря внедрению потокового демона для обработки SFTP-соединений. Это позволяет получать доступ к файлам, управлять ими и передавать их непосредственно в контейнер через SSH шлюз, что обеспечивает полную безопасность данных.
Еще один защищенный сетевой протокол — это FISH (Files transferred over Shell protocol). Он поддерживается рядом популярных FTP-клиентов и файловых менеджеров, таких как Midnight Commander Konqueror, lftp, Krusader и другие. FISH предоставляет пользователю защищенный доступ и управление файловой системой контейнера.
Ниже мы расскажем, как можно:
Процедура генерации SSH ключа зависит от используемой вами операционной системы:
Сгенерируйте новый ключ SSH (DSA или RSA), используя инструмент ssh_keygen:
1. Выполните генерацию с помощью следующей команды:
$ ssh-keygen -t dsa
2. Чтобы получить ключ, перейдите к файлу id_dsa.pub
~ $
~/.ssh $ cat
id_dsa id_dsa.pub known_hosts
~/.ssh $ cat id_dsa.pub
3. Скопируйте сгенерированный SSH-ключ.
1. Загрузите и запустите предпочитаемую утилиту для генерации SSH ключей, например, PuTTYgen:
![image](https://habrastorage.org/r/w1560/files/66e/5ab/a67/66e5aba67b4c4d3bb206d611654f07bb.png)
2. Укажите следующие параметры:
Нажмите Generate.
![image](https://habrastorage.org/r/w1560/files/2e4/a5f/cc7/2e4a5fcc788444a8917980f3ed581763.png)
3. Скопируйте сгенерированный ключ из поля вывода в верхней части окна.
![image](https://habrastorage.org/r/w1560/files/6c7/b38/fec/6c7b38fec5774b19aa7f77f579465575.png)
Теперь вы можете добавить сгенерированный SSH ключ в ваш аккаунт Jelastic.
1. Откройте панель управления Jelastic и нажмите кнопку Settings в верхнем правом углу.
![image](https://habrastorage.org/r/w1560/files/bbc/844/69b/bbc84469b19449ee9ef5f809c61e7ab3.png)
2. В открывшейся вкладке Account settings перейдите к разделу SSH Access.
![image](https://habrastorage.org/r/w1560/files/d67/580/d0c/d67580d0ca7b4213905f7c18d0446043.png)
3. Нажмите на кнопку Add SSH Key и скопируйте предварительно сгенерированный ключ в поле Key. Поле Title будет заполнено автоматически, если ваш ключ уже имеет название.
![image](https://habrastorage.org/r/w1560/files/8ed/882/5b8/8ed8825b848446c48b3f6b116d7fec79.png)
Нажмите Add Key.
4. Как результат, добавленный SSH ключ появится в списке.
![image](https://habrastorage.org/r/w1560/files/0c2/a27/6b5/0c2a276b59bc43fcbb4555030b8920e2.png)
Таким же образом вы можете добавить несколько ключей или удалить их, если они не нужны.
Теперь давайте посмотрим, каким образом можно получить доступ к аккаунту Jelastic со всеми его окружениями и контейнерами через SSH.
Откройте Jelastic и перейдите к верхней панели инструментов. Нажмите на кнопку Settings.
![image](https://habrastorage.org/r/w1560/files/bbc/844/69b/bbc84469b19449ee9ef5f809c61e7ab3.png)
В открывшейся вкладке Account settings перейдите к пункту SSH Access.
Чтобы открыть ваш SSH шлюз, перейдите по ссылке в примечании. Как результат, вы автоматически получите доступ к Shell Handler через консоль.
Или же просто скопируйте указанную командную строку и запустите ее через консоль (SSH клиент).
![image](https://habrastorage.org/r/w1560/files/19f/490/fba/19f490fba21440df8c8d8ab060fe2399.png)
Следующие шаги для получения SSH доступа к аккаунту зависят от используемой операционной системы:
1. Откройте терминал и введите строку SSH подключения из вкладки Settings панели SSH Access.
![image](https://habrastorage.org/r/w1560/files/be4/b63/ddd/be4b63ddd6324b36842bb526888f0694.png)
2. В результате вы увидите список окружений, доступных на вашем аккаунте.
Для выбора необходимого окружения введите его номер в списке.
![image](https://habrastorage.org/r/w1560/files/f83/824/e36/f83824e36635420c8b4cec1043de58d2.png)
3. После этого откроется список контейнеров выбранного окружения.
Рядом с каждым контейнером указан node ID идентификатор и LAN IP адрес. Чтобы получить доступ к контейнеру, введите его порядковый номер.
![image](https://habrastorage.org/r/w1560/files/cd0/e90/85c/cd0e9085cae64a8ab5a19a36f21311ed.png)
4. Теперь вы можете приступать к настройке необходимых конфигураций.
![image](https://habrastorage.org/r/w1560/files/022/ffd/d4e/022ffdd4e42642059780550df9d3b965.png)
Доступ к командной оболочке связан с определенными рисками, т.к. можно случайно повредить ваше приложение. Поэтому пожалуйста, будьте аккуратны при выполнении любых операций изнутри контейнера.
Чтобы установить SSH подключение для операционной системы Windows, на вашей локальной машине должен быть приватный ключ, который соответствует ранее добавленному в панель управления Jelastic открытому. Следовательно, выполните следующие шаги:
1. Сохраните приватную версию вашего SSH ключа (мы используем утилиты PuTTY в качестве примера)
![image](https://habrastorage.org/r/w1560/files/25a/04a/094/25a04a0943f4425e834ffb31a1987499.png)
2. Загрузите и запустите PuTTY SSH-агент (он называется Pageant). В отрывшемся окне нажмите кнопку Add key и выберите ваш локальный файл с приватным SSH-ключом.
![image](https://habrastorage.org/r/w1560/files/b7c/1af/491/b7c1af4913df455d8b98939b07d5e8c3.png)
3. После этого можно нажать кнопку Close. Pageant будет свернут в панель задач. Не закрывайте эту программу до тех пор, пока ваша сессия SSH не будет завершена, иначе подключение будет прервано.
4. Загрузите и запустите ваш клиент SSH (например, PuTTY). Перейдите во вкладку Session в списке слева.
5. Напечатайте в поле Host Name (or IP address) строку SSH-соединения из вкладки Settings > SSH Access панели управления Jelastic. Также введите номер порта — 3022.
![image](https://habrastorage.org/r/w1560/files/493/d44/4c3/493d444c339b47f2906bae9f9f4bf41c.png)
Нажмите кнопку Open.
6. Вы увидите консоль со списком окружений, доступных вашему аккаунту. Дальнейшие шаги аналогичны инструкции для Linux/MacOS.
Также вы можете перейти непосредственно к необходимому контейнеру, пропустив шаги выбора окружения и сервера.
Для этого необходимо знать ID требуемого контейнера. Его можно получить, используя описанную ранее методику SSH-доступа через интерактивное меню. Там вы можете увидеть список доступных контейнеров и их ID (значения в колонке nodeid).
![image](https://habrastorage.org/r/w1560/files/a42/939/e64/a42939e647b24da4ac238e2d6b3c0a16.png)
Чтобы войти в нужный контейнер, используйте значение его nodeid в следующей команде:
ssh {nodeid}-{uid}@{SSH_gateway} -p 3022
Значения параметров {uid} и {SSH_gateway} можно найти в панели управления Jelastic (Settings > SSH Access).
Например, чтобы получить доступ к контейнеру MySQL-5.5.34 нашего текущего окружения, необходимо ввести следующую команду:
ssh 6481-97@gate.jelastic.com -p 3022
Эта возможность может быть полезна во время работы с инструментами для развертывания приложений и настройки удаленных контейнеров (например, Capistrano).
Надеемся, эта информация окажется полезной для тех из вас, кто хотел бы разобраться в широких возможностях платформы Jelastic поглубже. Больше деталей можно найти в дополнительной документации.
![image](https://habrastorage.org/files/b6b/b17/dce/b6bb17dce677477d95b3f9e8d337f0f6.png)
Обзор
SSH (Secure Shell) — это протокол, используемый для безопасного соединения с удаленным контейнером и выполнения действий над ним. Команды SSH зашифрованы и защищены: подключение клиент/сервер проходит аутентификацию с помощью цифрового сертификата, а пароли также защищены шифрованием.
Чтобы предоставить SSH доступ в Jelastic, мы добавили новый компонент инфраструктуры — SSH Gateway (SSH шлюз). Он принимает подключения пользователей из интернета и передает их нужному контейнеру по внутренней сети.
![image](https://habrastorage.org/files/631/e12/ed3/631e12ed3d9e4715bfbe919d982166c2.png)
Процедура аутентификации в Jelastic SSH шлюзе разделена на две независимые части:
- подключение конечного пользователя к шлюзу (внешняя аутентификация)
- подключение шлюза к контейнеру пользователя (внутренняя аутентификация)
Оба этапа базируются на стандартном протоколе SSH и используют криптографическую пару (открытый и закрытый ключи).
С помощью Jelastic SSH шлюза можно легко получить доступ:
- ко всему аккаунту, с возможностью перемещаться между вашими окружениями и контейнерами без дополнительной аутентификации, используя интерактивное меню
![image](https://habrastorage.org/files/438/6c9/9dc/4386c99dc5974d8986c7cdbc0ffd8daa.png)
- непосредственно к отдельным контейнерам, работая с ними удаленно с помощью определенных инструментов (например, Capistrano), или используя протоколы SFTP и FISH
![image](https://habrastorage.org/files/bde/ccf/835/bdeccf835f33473bb716cf1136394e97.png)
При доступе к контейнерам посредством SSH, пользователь получает все необходимые разрешения и дополнительно может управлять основными сервисами с помощью команд sudo следующего типа (и других):
sudo /etc/init.d/jetty start
sudo /etc/init.d/mysql stop
sudo /etc/init.d/tomcat restart
sudo /etc/init.d/memcached status
sudo /etc/init.d/mongod reload
sudo /etc/init.d/nginx upgrade
sudo /etc/init.d/httpd help
Примечание: если вы разворачиваете какое-либо приложение, меняете конфигурацию или интегрируете дополнительный функционал в ваше окружение через SSH, это не будет отображено на панели управления Jelastic.
Кроме того, Jelastic поддерживает SFTP (Secure File Transfer Protocol), благодаря внедрению потокового демона для обработки SFTP-соединений. Это позволяет получать доступ к файлам, управлять ими и передавать их непосредственно в контейнер через SSH шлюз, что обеспечивает полную безопасность данных.
Еще один защищенный сетевой протокол — это FISH (Files transferred over Shell protocol). Он поддерживается рядом популярных FTP-клиентов и файловых менеджеров, таких как Midnight Commander Konqueror, lftp, Krusader и другие. FISH предоставляет пользователю защищенный доступ и управление файловой системой контейнера.
Ниже мы расскажем, как можно:
- сгенерировать SSH ключ;
- добавить SSH ключ;
- получить доступ к контейнерам и окружениям.
Генерация SSH ключа
Процедура генерации SSH ключа зависит от используемой вами операционной системы:
- Linux/MacOS
- Windows
Для Linux/MacOS
Сгенерируйте новый ключ SSH (DSA или RSA), используя инструмент ssh_keygen:
1. Выполните генерацию с помощью следующей команды:
$ ssh-keygen -t dsa
2. Чтобы получить ключ, перейдите к файлу id_dsa.pub
~ $
~/.ssh $ cat
id_dsa id_dsa.pub known_hosts
~/.ssh $ cat id_dsa.pub
3. Скопируйте сгенерированный SSH-ключ.
Примечание: в примере выше мы сгенерировали ключ типа DSA, но можно также использовать RSA тип. Чтобы сгенерировать такой ключ, выполните те же операции, заменив значение dsa на rsa в команде.
Для Windows
1. Загрузите и запустите предпочитаемую утилиту для генерации SSH ключей, например, PuTTYgen:
![image](https://habrastorage.org/files/66e/5ab/a67/66e5aba67b4c4d3bb206d611654f07bb.png)
2. Укажите следующие параметры:
- выберите тип ключа (SSH-2 RSA или SSH-2 DSA)
- введите желаемое количество бит (например, 2048)
Нажмите Generate.
![image](https://habrastorage.org/files/2e4/a5f/cc7/2e4a5fcc788444a8917980f3ed581763.png)
3. Скопируйте сгенерированный ключ из поля вывода в верхней части окна.
![image](https://habrastorage.org/files/6c7/b38/fec/6c7b38fec5774b19aa7f77f579465575.png)
Добавление SSH ключа
Теперь вы можете добавить сгенерированный SSH ключ в ваш аккаунт Jelastic.
1. Откройте панель управления Jelastic и нажмите кнопку Settings в верхнем правом углу.
![image](https://habrastorage.org/files/bbc/844/69b/bbc84469b19449ee9ef5f809c61e7ab3.png)
2. В открывшейся вкладке Account settings перейдите к разделу SSH Access.
![image](https://habrastorage.org/files/d67/580/d0c/d67580d0ca7b4213905f7c18d0446043.png)
3. Нажмите на кнопку Add SSH Key и скопируйте предварительно сгенерированный ключ в поле Key. Поле Title будет заполнено автоматически, если ваш ключ уже имеет название.
![image](https://habrastorage.org/files/8ed/882/5b8/8ed8825b848446c48b3f6b116d7fec79.png)
Нажмите Add Key.
4. Как результат, добавленный SSH ключ появится в списке.
![image](https://habrastorage.org/files/0c2/a27/6b5/0c2a276b59bc43fcbb4555030b8920e2.png)
Таким же образом вы можете добавить несколько ключей или удалить их, если они не нужны.
Примечание: добавленный SSH-ключ прикрепляется ко всему вашему аккаунту, а не только к отдельному окружению.
SSH доступ к аккаунту Jelastic
Теперь давайте посмотрим, каким образом можно получить доступ к аккаунту Jelastic со всеми его окружениями и контейнерами через SSH.
Откройте Jelastic и перейдите к верхней панели инструментов. Нажмите на кнопку Settings.
![image](https://habrastorage.org/files/bbc/844/69b/bbc84469b19449ee9ef5f809c61e7ab3.png)
В открывшейся вкладке Account settings перейдите к пункту SSH Access.
Чтобы открыть ваш SSH шлюз, перейдите по ссылке в примечании. Как результат, вы автоматически получите доступ к Shell Handler через консоль.
Или же просто скопируйте указанную командную строку и запустите ее через консоль (SSH клиент).
![image](https://habrastorage.org/files/19f/490/fba/19f490fba21440df8c8d8ab060fe2399.png)
Следующие шаги для получения SSH доступа к аккаунту зависят от используемой операционной системы:
- Linux/MacOS
- Windows
Для Linux/MacOS
1. Откройте терминал и введите строку SSH подключения из вкладки Settings панели SSH Access.
Примечание: Чтобы избежать ошибок доступа/подключения, все команды должны быть выполнены из-под учетной записи того же пользователя локального компьютера, что использовался и во время генерации пары SSH ключей.
![image](https://habrastorage.org/files/be4/b63/ddd/be4b63ddd6324b36842bb526888f0694.png)
2. В результате вы увидите список окружений, доступных на вашем аккаунте.
Для выбора необходимого окружения введите его номер в списке.
Примечание: Вы можете получить доступ только к запущенному окружению.
![image](https://habrastorage.org/files/f83/824/e36/f83824e36635420c8b4cec1043de58d2.png)
3. После этого откроется список контейнеров выбранного окружения.
Рядом с каждым контейнером указан node ID идентификатор и LAN IP адрес. Чтобы получить доступ к контейнеру, введите его порядковый номер.
![image](https://habrastorage.org/files/cd0/e90/85c/cd0e9085cae64a8ab5a19a36f21311ed.png)
4. Теперь вы можете приступать к настройке необходимых конфигураций.
![image](https://habrastorage.org/files/022/ffd/d4e/022ffdd4e42642059780550df9d3b965.png)
Доступ к командной оболочке связан с определенными рисками, т.к. можно случайно повредить ваше приложение. Поэтому пожалуйста, будьте аккуратны при выполнении любых операций изнутри контейнера.
Для Windows
Чтобы установить SSH подключение для операционной системы Windows, на вашей локальной машине должен быть приватный ключ, который соответствует ранее добавленному в панель управления Jelastic открытому. Следовательно, выполните следующие шаги:
1. Сохраните приватную версию вашего SSH ключа (мы используем утилиты PuTTY в качестве примера)
![image](https://habrastorage.org/files/25a/04a/094/25a04a0943f4425e834ffb31a1987499.png)
2. Загрузите и запустите PuTTY SSH-агент (он называется Pageant). В отрывшемся окне нажмите кнопку Add key и выберите ваш локальный файл с приватным SSH-ключом.
![image](https://habrastorage.org/files/b7c/1af/491/b7c1af4913df455d8b98939b07d5e8c3.png)
3. После этого можно нажать кнопку Close. Pageant будет свернут в панель задач. Не закрывайте эту программу до тех пор, пока ваша сессия SSH не будет завершена, иначе подключение будет прервано.
4. Загрузите и запустите ваш клиент SSH (например, PuTTY). Перейдите во вкладку Session в списке слева.
5. Напечатайте в поле Host Name (or IP address) строку SSH-соединения из вкладки Settings > SSH Access панели управления Jelastic. Также введите номер порта — 3022.
![image](https://habrastorage.org/files/493/d44/4c3/493d444c339b47f2906bae9f9f4bf41c.png)
Нажмите кнопку Open.
6. Вы увидите консоль со списком окружений, доступных вашему аккаунту. Дальнейшие шаги аналогичны инструкции для Linux/MacOS.
Прямой SSH доступ к контейнеру
Также вы можете перейти непосредственно к необходимому контейнеру, пропустив шаги выбора окружения и сервера.
Для этого необходимо знать ID требуемого контейнера. Его можно получить, используя описанную ранее методику SSH-доступа через интерактивное меню. Там вы можете увидеть список доступных контейнеров и их ID (значения в колонке nodeid).
![image](https://habrastorage.org/files/a42/939/e64/a42939e647b24da4ac238e2d6b3c0a16.png)
Чтобы войти в нужный контейнер, используйте значение его nodeid в следующей команде:
ssh {nodeid}-{uid}@{SSH_gateway} -p 3022
Значения параметров {uid} и {SSH_gateway} можно найти в панели управления Jelastic (Settings > SSH Access).
Например, чтобы получить доступ к контейнеру MySQL-5.5.34 нашего текущего окружения, необходимо ввести следующую команду:
ssh 6481-97@gate.jelastic.com -p 3022
Эта возможность может быть полезна во время работы с инструментами для развертывания приложений и настройки удаленных контейнеров (например, Capistrano).
Выводы
Надеемся, эта информация окажется полезной для тех из вас, кто хотел бы разобраться в широких возможностях платформы Jelastic поглубже. Больше деталей можно найти в дополнительной документации.