Mosh

Клиент mosh (40.65КиБ)
Окно клиента, когда пропало соединение

Погонял несколько дней в качестве клиента «мош» — «мобильный шелл». Хорошая штука, логинится через эсэсаш, далее поднимает на удалённой стороне свой сервер и открывает свой шифрованный канал через ЮДиПи. Ключи авторизации тоже естественно поддерживаются.

Штука в том, что при разрыве соединения сессия не пропадает, а терпеливо ждёт возобновления — такая помесь эсэсаша и скрина, смены айпи ей тоже не страшны. Другая фишка — если канал пропал или на нём высокие задержки, делаются локальные предсказания поведения курсора, то есть можно печатать и передвигаться по тексту, даже если соединения нет.

Пока всё работает не очень стабильно, но всё равно выглядит как шаг вперёд. У меня время от времени пропадают буквы на выводе самых обычных команд, иногда по экрану скачет курсор или текст выводится не в том месте, но в целом пользовать можно.

Ставится просто — поддерживаются все основные системы, ставите на обе стороны, запускаете из командной строки (mosh имя_сервера вместо ssh имя_сервера) и всё работает.
5 комментариев
9 апреля 2017 21:08

Сила .ssh/config

Извечная задача получить доступ к одной машине через другую чаще всего решается при помощи SSH-туннелей — удобно, пока не приходится получать доступ к группе машин. Недостаток традиционного решения — не всегда удаётся придумать удачное правило выбора портов, чтобы не запутаться как мы должны соединяться, чтобы попасть на нужную машину. SSH-туннель (12.37КиБ)
Пример конфигурационного файла для получения доступа к группе машин

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

Тут нам пригодится файл ~/.ssh/config, служащий для конфигурирования SSH-соединений, я обычно туда вписываю символические имена вместо айпи-адресов, логины и прочую мишуру. Но его возможности несколько шире.

Например на картинке выше у меня конфигурация, которая позволяет к любому айпи-адресу, который начинается с 172.17.0 через машину 172.17.1.131. Вся магия заключается в директиве ProxyCommand — в ней указано, что надо залогиниться на 172.17.1.131 и там запустить команду nc, которая откроет соединение на нужный нам адрес (он будет подставлен вместо «%h»).

Таким образом получается соединение, весь трафик которого без изменений попадает на нужный нам адрес, а уже в этом соединении мы выполняем обычный логин на нужную нам машину. Все аутентификации у меня, естественно, сделаны через сертификаты.
4 комментария
8 марта 2017 17:15