Показаны сообщения с ярлыком ssh. Показать все сообщения
Показаны сообщения с ярлыком ssh. Показать все сообщения

Duna HD: поиск тайных знаний

Некоторое время назад я стал счастливым обладателем медиаплейера Dune HD TV102. Зная, что внутри у этой приставки Linux, естественно мне захотелось посмотреть на это чудо изнутри. Не разобрать на части, конечно, а посмотреть как устроено программное обеспечение и вообще система. Кроме того,  дюна поддерживает подключение плагинов, почему-бы не разработать какое-нибудь полезное расширение для этой приставки?

Graphite: отправка данных из Yandex-Танк

Продолжаю коллекционировать интересные штуки про Graphite: вот например, опенсорсная утилита для автоматизированного нагрузочного тестирования Yandex-Tank, разработка программистов Yandex, как можно догадаться из названия, построен на Фантоме. С некоторых пор и в Яндекс-Танке появилась поддержка Graphite. Конфигурационный файл выгрузки позволяет настроить разные префиксы метрик для тестируемых серверов. Подробности по ссылкам внизу статьи. Ну и, чтобы два раза не вставать, немного про, собственно, Яндекс-Танк (вольный перевод Readme.md с гитхаба проекта и немного отсебятины):

Mac OS X: примонтировать диск dmg в терминале

Задался вопросом,- возможно ли примонтировать образ диска dmg в командной строке Mac OS X? Это может быть нужно, например, в случае удалённого подключения по ssh. Короткий ответ: возможно :-).

В этом поможет команда hdiutil. С параметром attach просим подключить диск, система проверяет образ и сообщает путь монтирования вида /Volumes/<имя диска>


$ hdiutil attach <полный путь к файлу образа>
expected   CRC32 $6FBC93B9
/dev/disk2                                         /Volumes/<имя диска>

Отключить (размонтировать) можно той-же командой и параметром detach, только вместо пути к образу диска указываем уже путь монтирования, который нам вернул hdiutil attach:

$ hdiutil detach Volumes/<имя диска>

Человекоподобный робот: копаемся в мозгах

Вспомнил, зачем мне понадобился рутовый доступ к Android: оказывается, я хотел включить на нём демона sshd интереса ради и, вероятно, для опытов. Поуправлять, так сказать, своим телефоном дистанционно и\или без помощи рук. Поскольку у меня CyanogenMod 10.1, искомый демон там есть по умолчанию, осталось его только настроить.

Console Colors: Сделать цветную консоль за 3 шага

Пример раскраски вывода ls
в 
online-конфигураторе
Очень часто делаю что-то в консоли, и в десктопном маке и на удалённых серверах. Использую bash. И, очень часто, выводит из себя отсутствие раскрашивания, как минимум в выводе листинга директорий. Сел разбираться,- оказывается, чтобы сделать консоль цветной, нужно сделать 3 простых шага:

Во-первых, надо удостовериться, что в переменных окружения стоит правильная консоль xterm (xterm-color или даже xterm-256color). Смотрим на вывод команды env:


    $ env
    SHELL=/usr/local/bin/bash
    TERM=xterm-256color
    PAGER=more
    BLOCKSIZE=K
    EDITOR=vi
    ...
Если тип консоли указан неправильно,- надо исправить (и добавить соответствующую строку в ~/.profile):

    $ TERM="xterm"; export TERM

Во-вторых, надо разрешить консоли использовать цвета:
    $ CLICOLOR="YES"; export CLICOLOR
И, наконец, настроить цветовую схему для вывода ls. Цветовая схема для ls задаётся переменной окружения LSCOLORS (или LS_COLORS, зависит от системы). Формат описания цветовой схемы тоже зависит от системы, чтобы не искать документацию, можно воспользоваться простеньким online-конфигуратором (позволяет задать только базовые 8 цветов). Набросал для примера вот такую схему, и добавил описание в env:
    LSCOLORS="ExGxFxdxCxDxDxhbadExEx"; export LSCOLORS

Страсти вокруг du -h

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

Обычный способ,- посмотреть сколько места занимает каждая папочка начиная с рута, зайти в самые толстые, найти вредителей и уничтожить,- и так рекурсивно пока df -h не начнёт показывать приемлимые цифры. Но перфекционизму нет предела,- хочется "чтобы одной командой", да "отсортировать по размеру", да ещё и в человекочитаемом формает, т.е. занимаемое место показывать в Гига-\ Мега- \Кило- байтах. Поигрался с du -h и sort'ом: не вытанцовывается, полез гуглить.

Набрёл на прекрасный топик с кучей рекомендаций, начиная от улучшенной версии coreutils >= 7.5, в которой sort умеет сортировать выдаваемые du -h значения, заканчивая половыми извращениями в виде Python-овских скриптов или вставок awk или Perl в командной строке. Но самое изящное решение оказалось простым, как Unix:

du -scBM * | sort -rn

Показывает отсортированные по убыванию размера папки и файлы в текущей директории. Размер приводится в мегабайтах, чего, вообщем-то, вполне достаточно для оценки,- стоит ли в папке искать залежи мусора, или пусть живёт?

Ctrl-S и vi


У системных администраторов и программистов бывают плохие привычки. Одна из таких привычек,- работать попеременно в разных редакторах, например в редакторе mc и vi в консоли, да ещё и в Notepad++, к примеру. Сам по себе факт работы в разных редакторах ни плох, ни хорош, но вот следствия бывают не очень приятными. Например, привычные сочетания клавиш под разными системами могут приводить к разной реакции. Одно из таких комбинаций CTRL+S. Во множестве десктопных редакторов, в особенности в Windows, такое сочетание зарезервировано для сохранения текущего документа, в редакторе mc это же самое сочетание клавиш включает и выключает подсветку кода.

А вот при работе по ssh в терминальном окне Putty это сочетание клавиш приводит к зависанию сессии. Ну, то есть, множество раз мне казалось, что сессия зависла и приходилось попросту подключаться заново к серверу, пока я не решил разобраться.

Оказалось, что на самом деле CTRL+S включает режим XOFF, в котором терминал принимает нажатия клавиш, но не выводит в ответ ничего. Визуально кажется, что сессия умерла, но это не так. А если есть режим XOFF, то есть режим XON. Режим XON включается обратно при помощи CTRL+Q.

Вот так-то.

Удалённая трассировка с помощью wireshark, tcpdump и ssh

В случае, когда приходится снимать много сетевых дампов на одном и том-же сервере, а клиентская машина работает под линуксом, можно использовать полезную функцию перенаправления вывода по ssh:

ssh root@127.0.0.1 "tcpdump -i bond0 -w - -s 0" | /usr/bin/wireshark -k -i -

Для ускорения процесса можно записать эту строчку в скриптовый файл, вывести ссылку на него на рабочий стол (или прописать алиас в .bashrc) и в ssh настроить авторизацию по ключу, чтобы не вводить пароль при каждом подключении.

Настройка SSH авторизации с помощью ключей в Windows (PuTTY)


  1. С помощью PuttyGen сгенерировать приватный и публичный ssh-ключи - кнопка “Generate”. В настройках можно указать тип ключа и его размер. Примечание - при генерации ключа необходимо в произвольном порядке перемещать мышку в окне утилиты.

  2. После этого не заполняя поля Passphrase сохранить приватный ключ в файл с помощью кнопки “Save private key”, например private.key. Публичный ключ отображается в верхнем поле “Key” и имеет вид: “ssh-rsa AAAAB3NzaC1yc*что-то*uJQ== rsa-key-20090806“.

  3. Cохранить публичный ключ, например в файл rsa_pub.key, или скопировать содержимое публичного ключа в буфер обмена;

  4. Запустить ssh-клиент Putty и произвести коннект к нужному серверу.

  5. Попав на сервер, создать папку ~/.ssh (если такой ещё нет);

  6. Создать файл ~/.ssh/authorized_keys (если не существует);

  7. скопировать содержимое public.key в файл ~/.ssh/authorized_keys. ВАЖНО! Ключ в файле должен быть записан в одной строке без переносов.

  8. Изменить права доступа к файлу командой chmod 600 ~/.ssh/authorized_keys;

  9. Закрыть PuTTY;

  10. Запустить PuTTY. В настройках соединения указать путь к приватному ключу;

  11. Сохранить настройки соединения и произвести коннект к серверу. SSH-сервер запросит имя пользователя - ввести логин. Далее авторизация пройдет с использованием приватного и публичного ssh-ключей.

Настройка SSH авторизации с помощью ключей (клиент-Unix)

Шаг первый: генерируем ключи

Команда ssh-keygen с опцией -t dsa будет генерировать ключ DSA длиной 2048 бит (по умолчанию RSA 4096 бит).

$ ssh-keygen -q -f ~/.ssh/id_rsa -t rsa
$ ssh-keygen -q -f ~/.ssh/id_dsa -t dsa


Шаг второй: устанавливаем ключи на удалённый хост

Каждый авторизованный ключ для хоста добавляется в файл ~/.ssh/authorized_keys в папке пользователя удалённого хоста, одной строкой (в формате тип-ключ-хост). Поэтому при повторной генерации, или если авторизацию какого-то хоста надо прекратить, удаляем соответствующую строку в этом файле.

$ ssh-copy-id -i ~/.ssh/id_rsa.pub <user>@<remote_server>
$ ssh-copy-id -i ~/.ssh/id_dsa.pub <user>@<remote_server>

или ещё проще:

$ cat ~/.ssh/id_dsa.pub | ssh <user>@<remote_server> "cat - >> ~/.ssh/authorized_keys"


Шаг третий: проверяем результат

$ ssh <user>@<remote_server>