Администрирование нескольких серверов с мобильного по ssh в Termux

Тот кто скажет, что администрирование серверов с современных мобильных устройств — это жесть и хардкор, тот скорее всего не знает, что такое разработка wap сайтов на wml  с Siemens A60. Тот не знает, что такое радость первого удачного взлома с Siemens C75, когда ради смеха ты «потрошишь» аккаунты юзеров несчастных знакомств, отправляя им xss payload-ы. Тот не знает, что такое запустить сервер с php и apache на Nokia N70, и написать вполне себе рабочую баннерную сеть в среде 3 на 4 сантиметра. Но вернемся к современным инструментам))

Рассмотрим настройку bash окружения оболочки и Android программы для работы по SSH, т.к. Apple не признаю. Впрочем и гугл с мелкомягкими не сильно жалую, но что поделаешь с корпорациями «добра». Подключаться к 4-м администрируемым серверам мы будем из Termux, причем без набора команд ssh — всего в пару кликов.

Termux

Именно этот эмулятор терминала нам понадобится под Android. Поиск и установка пакетов в терминале выполняется так:

Или вот так:

Но прежде чем начать работу с терминалом настоятельно рекомендую поставить правильную клавиатуру и языковые пакеты словарей с автозавершением ввода.

В Play маркете нам понадобятся:

  • Hacker’s keyboard
  • English completion dictionary
  • Russian dictionary

Очень классная клава, советую даже не хацкерам.

Теперь в Termux настроим приглашение ввода, поскольку $PS1 по умочанию не даёт никакой информативности о текущем каталоге, выводя лишь значок доллара.

Да, vi таки придется освоить, именно он более удобен на мобильном терминале, чем nano. Хотя дело вкуса…

И добавляем строчки:

Текущий каталог мы раскрасили светло-зеленым и доллар бирюзовым. Большего нам не нужно, доллар на решетку менять не будем, т.к. устройство всё равно не рутовано. И при входе в терминал сразу же запускаем ssh-agent

Отлично. Кто я?

Где я?

Предположим, у нас уже есть приватный ключ id_rsa подходящий к 4 серверам от юзеров sudo. Если ещё не настроили доступ по ключам, то:

Добавление юзера sudo на сервер с авторизацией по SSH ключам

Настройка SSH доступа по сертификатам

Естественно, наш приватный ключ защищен паролем, на случай утечки файла ключа в чужие руки. Этот ключик нам необходимо разместить тут:

Наш домашний каталог в Termux, в котором мы находимся это:

Как настроить доступ к Android по ssh мы рассмотрим в следующей статье, сейчас же нам просто нужно залить ключ на место и поставить ему права 600.

Из не рутованого устройства мы не сможем перейти файловыми менеджерами в каталог /data/ поскольку это системная папка. Значит зальем файл в любой доступный нам каталог и переместим командой в нужное место:

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

Назовем его sos. Всё же должно случиться нечто экстренное, чтобы влазить дрочиться с мобильного в терминале)) Ну например — лень)) встать с дивана и включить комп, когда нужно глянуть/сделать что-то по мелочи. Бывает же такое.

Файл скрипта необходимо создать тут:

Именно этот bin каталог прописан в $PATH в эмуляторе Termux

А вот и наш лаконичный помощник:

Обратите внимание, на шебанг:

именно тут рапологается bash в Termux

Попробуем:

Пароль ключа спрашивается только при первом запуске скрипта. Далее набираем sos и получаем лаконичное меню серверов. Достаточно 1 нажатия в любом регистре, для подключения к любому выбранному серверу по ssh. Отключение от текущего сервера возвращает нас снова в меню скрипта sos. Неверный выбор возвращает меню и красноречивую ошибку Unknown server. Для возвращения в Termux жмем E в любом регистре.

Вот пример с парочкой реальных серверов:

UPD: немножко поюзав эту весьма удобную программку, нашел моменты, которых в ней не хватает.

Во-первых добавим приём параметров сразу в командной строке, чтобы для подключения к нужному серверу можно было набирать команду вида: sos b и сразу минуя меню, происходило подключение к нему.

Во-вторых ssh позволяет удаленно выполнять команды, почему бы нам по аргументу u(или выбору в меню u) не получать например состояние uptime всех серверов.

Обновлённый код программки со скринов выше:

 

 

Оставить комментарий

Ваш адрес email не будет опубликован.