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

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. Присоединись к сообществу «Xakep.ru», чтобы читать все материалы на сайте

Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», увеличит личную накопительную скидку и позволит накапливать профессиональный рейтинг Xakep Score! Подробнее

Вариант 2. Открой один материал

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


Check Also

Криптуем по-крупному. Разбираемся с режимом гаммирования из ГОСТ 34.13—2015

Режим гаммирования, в отличие от режима простой замены, позволяет шифровать сообщения прои…

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

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