Содержание статьи

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

Свободная реализация протокола SSH, названная OpenSSH, была выпущена разработчиками OpenBSD еще в 1999 году. И сегодня это де-факто стандарт безопасного и удобного подключения к удаленной консоли. Спустя семнадцать лет разработки в OpenSSH появилось огромное количество возможностей, настроек и режимов работы, о которых знают далеко не все пользователи.

Эта статья — своего рода сборник быстрых рецептов, который ты можешь заучить или использовать как шпаргалку. Команды приведены для Linux, но большинство из них будут работать и в любой другой ОС, для которой есть сборка OpenSSH. Удаленный юзер и хост в тексте всегда обозначаются как user@host, а по отдельности как <user> и <host>. Приятного чтения.

 

1. Запускай команды быстро

Чтобы выполнить всего одну удаленную команду, совсем не обязательно подключаться к SSH, вводить команду, а затем отключаться. Можно сделать это сразу. Например, так можно посмотреть заполненность ФС удаленной машины:

$ ssh user@host df -h

А так — перезагрузить ее:

$ ssh user@host sudo reboot
 

2. Составляй списки команд и запускай их разом

Если у тебя есть целый список команд, которые следует выполнить, их можно записать в файл и скормить этот файл SSH:

$ ssh user@host "`cat file.txt`"
 

3. Редактируй удаленные файлы локальным редактором

Чтобы отредактировать файл на удаленной машине, не требуется заходить на нее и использовать консольный редактор. На самом деле файл можно открыть в твоем любимом текстовом редакторе на локальной машине (gvim заменяем на свой редактор):

$ gvim scp://user@host//путь/к/файлу
 

4. Копируй содержимое удаленного файла в буфер обмена

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

$ ssh user@host cat /путь/к/файлу | xclip

А так можно скопировать вывод команды:

$ ssh user@host uname -a | xclip
 

5. Сравнивай удаленный и локальный файл без копирования

Похожий прием можно использовать для сравнения двух файлов:

$ ssh user@host cat /путь/к/удаленному/файлу | diff /путь/к/локальному/файлу -
 

6. Работай с удаленными файлами с помощью локального файлового менеджера

Не всегда удобно работать с большим количеством файлов с помощью консольных команд или mc, запущенного на удаленной машине. Но всегда можно подключить любой каталог удаленной машины как сетевой диск. Для этого достаточно установить sshfs:

$ sudo apt-get install sshfs

Создать каталог для подключения «сетевого диска»:

$ mkdir remote_files

И подключить его:

$ sshfs user@host:/home/user ~/remote_files/

Теперь все файлы удаленного каталога /home/user будут видны в каталоге ~/remote_files/ и с ними можно работать, как с обычными.

 

7. Используй tmux

Сложные действия на удаленной машине редко ограничиваются одной консолью. Обычно мы открываем сразу несколько SSH-соединений, в которых запускаем различные команды, копируем текст из одной в другую, одновременно следим за выполнением нескольких операций. Однако держать открытыми несколько сессий совсем не обязательно, хватит и одной, в которой запущен tmux.

Утилита tmux — еще одно детище команды OpenBSD. Она позволяет запустить внутри одной SSH-сессии неограниченное количество консолей, с которыми можно работать одновременно, в том числе сразу с несколькими на одном экране. Но самое главное — tmux поддерживает функцию detach/attach, позволяющую отключиться от текущей сессии tmux, закрыть SSH-соединение, подключиться к машине уже с другого компа и возобновить сессию tmux со всеми открытыми консолями и их содержимым.

Tmux в режиме разделения экрана
Tmux в режиме разделения экрана

Tmux доступна в репозиториях почти всех популярных дистрибутивов. Устанавливать и запускать ее следует на удаленной машине, но перед тем как начать использовать, придется прочитать документацию (или шпаргалку).

Продолжение доступно только подписчикам

Вариант 1. Оформи подписку на «Хакер», чтобы читать все материалы на сайте

Подписка позволит тебе в течение указанного срока читать ВСЕ платные материалы сайта. Мы принимаем оплату банковскими картами, электронными деньгами и переводами со счетов мобильных операторов. Подробнее о подписке

Вариант 2. Купи один материал

Заинтересовала информация, но нет возможности оплатить подписку? Тогда этот вариант для тебя! Обрати внимание: этот способ покупки доступен только для материалов, опубликованных более двух месяцев назад.


15 комментариев

  1. kamazee

    16.12.2016 at 14:10

    Как альтернатива в #9: вместо создания фоновой сессии можно добавить в конфиг ControlPersist 0 и просто запускать первую сессию к хосту с ключом -M. Всё, TCP-сессия должна остаться жить вечно, все последующие SSH-сессии будут мультиплексироваться в это открытое соединение. Спасибо за статью, подтолкнула разобраться в этом моменте наконец-то.

    Также спасибо за knockd: никогда не использовал, надо будет потыкать и добавить к провиженингу по умолчанию, как и fail2ban.

  2. soko1

    17.12.2016 at 15:52

    Браво!
    Наконец-то на хакере какая-то интересная статья для подписчиков появилась. Именно ради таких статей я и приобретал подписку на год.
    Благодарю!

  3. maxwalter

    18.12.2016 at 14:27

    Очень интересная и поучительная статья!!! Большое спасибо!!!

  4. roman.rrv

    19.12.2016 at 10:32

    пункт 7 Вместо tmux использую screen

  5. mikhail.

    19.12.2016 at 13:00

    Спасибо за статью 😀 !
    тлоько почем не затронули настройки sshd… про таймауты сессий и прочее ?

  6. Powerman

    20.12.2016 at 21:13

    > На самом деле файл можно открыть в твоем любимом текстовом редакторе на локальной машине (gvim заменяем на свой редактор):
    > `gvim scp://user@host//путь/к/файлу`

    К сожалению, это не так. Это будет работать в vim/gvim (благодаря встроенному плагину netrw), возможно ещё в каком-то редакторе, но точно не в общем случае.

  7. RobotNed

    24.12.2016 at 21:36

    Хороший обзор, спасибо!

  8. WhiteW0lf

    02.02.2017 at 00:24

    Весьма полезно. Спасибо!

  9. hrapovd

    16.02.2017 at 14:47

    К #3 можно добавить еще — gvim (как и vim) может работать как файловый менеджер, по этому можно запускать команду так:
    $ gvim scp://user@host//
    и тогда открывается каталог / и дальше удобно просматривается фс.

  10. crabovwik

    30.03.2017 at 19:06

    Ого! Отличная статья, спасибо!

  11. WellFedCat

    13.05.2017 at 10:03

  12. Rickchers

    17.05.2017 at 09:56

Оставить мнение

Check Also

Целенаправленная социальная инженерия. Нестандартные техники введения в заблуждение

В предыдущей статье мы разобрали массовые атаки. Но их применимость ограничена: пентестер …