- Удаленное выполнение команд на Linux-сервере из Windows
- 4 инструмента для одновременного выполнения команд на нескольких Linux-серверах
- 1. PSSH — Parallel SSH
- 2. Pdsh — Parallel Remote Shell Utility
- 3. ClusterSSH
- 4. Ansible
- Итоги
- Как запустить удаленно SSH команды в Linux и показать результат локально
- Основной синтаксис для запуска удаленной команды SSH в Linux
- Примеры:
- Запуск удаленной команды SSH в Linux, для остановки или запуска любого процесса или услуги.
- Чтобы получить вывод в локальный файл Linux, выполните команду на удаленном хосте.
- Запуск команд или скрипта через SSH
- Запуск команд через SSH
- Запуск нескольких команд через SSH
- Практические примеры использования SSH
- SSH: Запуск Bash Скрипта
- Практические советы, примеры и туннели SSH
- Практические примеры SSH
- Сначала основы
- Разбор командной строки SSH
- Использование файла конфигурации
- Копирование файлов по SSH с помощью SCP
- Практические примеры
- 1. SSH socks-прокси
- Активация socks-прокси в Chrome
- Использование других приложений с прокси
- Вариант использования SSH через socks-прокси
- 2. Туннель SSH (переадресация портов)
- 3. SSH-туннель на сторонний хост
- 4. Обратный SSH-туннель
- 5. Обратный прокси SSH
- Устранение проблем с удалёнными SSH-туннелями
- Предупреждение безопасности
- 6. Установка VPN по SSH
- 7. Копирование ключа SSH (ssh-copy-id)
- 8. Удалённое выполнение команд (неинтерактивно)
- 9. Удалённый перехват пакетов и просмотр в Wireshark
- 10. Копирование локальной папки на удалённый сервер по SSH
- 11. Удалённые приложения GUI с переадресацией SSH X11
- 12. Удалённое копирование файлов с помощью rsync и SSH
- 13. SSH через сеть Tor
- 14. SSH к инстансу EC2
- 15. Редактирование текстовых файлов с помощью VIM через ssh/scp
- 16. Монтирование удалённого SSH как локальной папки с SSHFS
- 17. Мультиплексирование SSH с помощью ControlPath
- 18. Потоковое видео по SSH с помощью VLC и SFTP
- 19. Двухфакторная аутентификация
- 20. Прыжки по хостам с ssh и -J
- 21. Блокировка попыток брутфорса SSH с помощью iptables
- 22. SSH Escape для изменения переадресации портов
- Завершение
Удаленное выполнение команд на Linux-сервере из Windows
Вполне реальна ситуация, когда хотелось бы выполнить определенную команду на сервере Linux, но выполнить ее автоматически, да еще и с другой машины, при чем эта другая машина — Windows.
Например, к UPS подключены два компьютера, один их них Windows, второй — Linux. Предположим, UPS подключен по USB/RS232 к Windows-хосту. Когда пропадает питание, UPS позволяет выполнить 1) команду командной строки, 2) выключить компьютер. Если электричества нет, а батарея вот-вот разрядится, Windows-хост спокойно выключится, а вот Linux просто вырубится, как если бы при работе у него выдернули питание. Для решения задачи в текущих условиях необходимо выполнить с Windows-хоста команду выключения (или любую другую) на Linux-хосте до того, как UPS полностью разрядится.
Одним из вариантов решения может быть использование утилиты plink из состава пакета putty. Крайне желательно при этом настроить доступ по ssh по ключу, без пароля.
Все очень просто, на Windows-хосте запускаем cmd и выполняем команду:
plink 192.168.1.246 -ssh -P 22 -l userName -2 -4 -C -i path-to-private-key.ppk «shutdown -h 1»
- 192.168.1.246 — ip Linux-хоста;
- -P 22 — указание порта 22
- -l userName — указание имени пользователя, от имени которого вы входите на Linux-хост;
- -2 — используем протокол версии 2;
- -4 (могло быть -6) — версия IP (IPv4 или IPv6);
- -i path-to-private-key.ppk — путь к приватному ключу без пароля;
- «shutdown -h 1» — команда для выполнения на Linux-хосте.
Полный список параметров можно просмотреть просто выполнив plink в командной строке cmd.
Выполняемые команды можно выполнить конвейром. Например, вместо «shutdown -h 1» попробуйте выполнить что-то вроде «cd /var; ls; echo »; echo ‘NEXT:’; echo »; cd /; ls -al» . Ну или что-то другое.
После выполнения команд, управление вернется в командную строку Windows.
Если на Windows-хосте есть уже настроенные сессии для putty, можно просто указать имя одной из них вместо указания отдельных параметров командной строки, например:
plink -load «session-name» «shutdown -h 1»
plink -load «session-name» -l userName «shutdown -h 1»
Источник
4 инструмента для одновременного выполнения команд на нескольких Linux-серверах
Статья, перевод которой мы сегодня публикуем, посвящена технологиям одновременного выполнения команд на нескольких Linux-серверах. Речь здесь пойдёт о нескольких широко известных инструментах, реализующих подобный функционал. Этот материал пригодится системным администраторам, которым, например, регулярно приходится проверять состояние множества удалённых систем. Предполагается, что у читателя уже имеется несколько серверов, к которым организован доступ по SSH. Кроме того, при одновременной работе с несколькими машинами весьма полезно настроить SSH-доступ к ним по ключу, без пароля. Такой подход, с одной стороны, повышает безопасность сервера, а с другой — облегчает работу с ним.
1. PSSH — Parallel SSH
PSSH — это опенсорсный набор инструментов командной строки, написанный на Python и предназначенный для параллельного выполнения SSH-команд на множестве Linux-систем. Он быстро работает и лёгок в освоении. PSSH включает в себя такие средства, как parallel-ssh , parallel-scp, parallel-rsync , parallel-slurp и parallel-nuke (подробности об этих средствах можно посмотреть в man).
Перед установкой parallel-ssh в Linux-системе сначала надо установить pip . Вот как это делается в разных дистрибутивах:
Затем parallel-ssh устанавливают с использованием pip :
Далее, нужно внести имена хостов или IP-адреса удалённых Linux-серверов и сведения о портах в файл hosts (на самом деле, назвать его можно как угодно). Тут нам пригодится такая команда:
Вот пример содержимого такого файла:
После того, как в файл будет внесено всё необходимое, пришло время запустить parallel-ssh , передав этой утилите имя файла с использованием опции -h , а также — команды, которые нужно выполнить на всех серверах, адреса которых имеются в файле hosts . Флаг -i утилиты используется для того, чтобы вывести на экран то, что попадёт в стандартные потоки вывода и ошибок после завершения выполнения команд на серверах.
Команда запуска parallel-ssh может выглядеть так:
На следующем рисунке показано использование утилиты при работе с тремя серверами.
Утилита parallel-ssh выполняет команды на нескольких серверах
2. Pdsh — Parallel Remote Shell Utility
Pdsh — это, опять же, опенсорсное решение, представляющее собой оболочку для одновременного выполнения команд на нескольких Linux-серверах.
Вот как установить pdsh в различных дистрибутивах:
Для того чтобы выполнять команды на нескольких серверах, адреса этих серверов, как и при использовании parallel-ssh , надо добавить в файл, который тоже можно назвать hosts . Затем нужно запустить pdsh в следующем виде:
Здесь флаг -w используется для указания файла со списком серверов, флаг -R применяется для указания модуля удалённых команд (среди доступных модулей удалённых команд имеются ssh , rsh , exec ; по умолчанию используется rsh ). Обратите внимание на значок ^ перед именем файла со списком серверов.
Вот как выглядит работа с этой командой.
Выполнение команд на нескольких серверах с использованием pdsh
Если вы, при вызове pdsh , не указали список команд, которые надо выполнить на серверах, эта утилита запустится в интерактивном режиме. Подробности о pdsh можно узнать на соответствующей странице man.
3. ClusterSSH
ClusterSSH — это инструмент командной строки, предназначенный для администрирования кластеров серверов. Он запускает консоль администратора и, для каждого сервера, отдельное окно xterm . После этого на всех этих серверах можно одновременно выполнять одни и те же команды.
Теперь, для подключения к серверам, нужно выполнить команду следующего вида:
Можно воспользоваться и такой конструкцией:
После этого вы увидите нечто, подобное тому, что показано на следующем рисунке.
Работа с несколькими серверами с помощью clusterssh
Команды, введённые в консоли администратора, выполняются на всех серверах. Для выполнения команд на отдельном сервере нужно вводить их в окне, открытом для него.
4. Ansible
Ansible — это популярный опенсорсный инструмент для автоматизации IT-процессов. Он используется для настройки систем и для управления ими, для установки приложений и для решения других задач.
После этого надо добавить адреса серверов в файл /etc/ansible/hosts .
Вот пример фрагмента подобного файла с несколькими системами, объединёнными в группу webservers :
Теперь, для того, чтобы получить сведения команды uptime и узнать, какие пользователи подключены к хостам, входящим в группу webservers , можно воспользоваться следующей конструкцией:
Здесь опция -a используется для указания аргументов, передаваемых модулю, а флаг -u позволяет задать имя пользователя по умолчанию, применяемое для подключения к удалённым серверам по SSH.
Обратите внимание на то, что интерфейс командной строки ansible позволяет выполнять команды лишь по одной.
Взаимодействие с несколькими серверами средствами ansible
Итоги
В этом материале мы рассказали об инструментах, которые предназначены для одновременного выполнения команд на нескольких серверах, работающих под управлением Linux. Если вы подумываете об автоматизации задач по управлению множеством серверов — надеемся, вы найдёте здесь что-нибудь такое, что вам подойдёт.
Уважаемые читатели! Знаете ли вы о каких-нибудь полезных утилитах, упрощающих администрирование большого количества серверов?
Источник
Как запустить удаленно SSH команды в Linux и показать результат локально
Главное меню » Операционная система Linux » Как запустить удаленно SSH команды в Linux и показать результат локально
Основной синтаксис для запуска удаленной команды SSH в Linux
- SSH -> это протокол или команда используется для установки соединения с удаленным сервером.
- USER -> это имя пользователя на удаленном сервере.
- HOST -> это удаленный хост, на котором вы хотите выполнить удаленную команду.
- Command -> это команда, которую вы хотите выполнить на удаленном хосте.
Примеры:
- Допустим, вы хотите узнать детали точки монтирования удаленного сервера.
В приведенном выше примере система запросит у вас пароль вашего имени на удаленном хосте. Так как мы настроили пароль SSH между двумя серверами, система работала без пароля. В случае, если вы хотите настроить пароль SSH между двумя сервера, пожалуйста, прочитайте эту статью.
- В случае, если вы хотите узнать результат команды бесперебойной работы на удаленном хосте.
- Даже вы можете перегрузить сервер удаленно.
Запуск удаленной команды SSH в Linux, для остановки или запуска любого процесса или услуги.
- В случае, если вы хотите остановить процесс HTTPd на удаленном хосте.
Так как в приведенном выше примере команда состоит из более чем одного слова, вы должны всю команду заключить в кавычки «‘».
- Теперь, чтобы запустить его снова службу HTTPD, используйте команду ниже.
- Позволяет проверить состояние службы HTTPd удаленно с помощью следующей команды:
Чтобы получить вывод в локальный файл Linux, выполните команду на удаленном хосте.
В случае, если вы хотите получить выход выполненной команды на удаленном хосте, вам необходимо следовать следующему методу.
Здесь, в приведенном выше примере мы выполнили команду использования памяти на удаленном хосте и перенаправили вывод в локальный файл «/tmp/memory.txt». После этого вы можете проверить содержимое файла с помощью команды cat.
Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.
Источник
Запуск команд или скрипта через SSH
Сегодня рассмотрим примеры для запуска команд или скрипта через SSH соединения. Научимся запускать наши команды/скрипты из одной рабочей станции Linux на другой удаленной Linux машине. Рассмотрим практические примеры использования мощного инструмента SSH в администрировании Linux.
Запуск команд через SSH
Если вы хотите удаленно запустить какую-либо команду на сервере через SSH, то нет ничего проще. Давайте рассмотрим пару примеров.
Узнайте аптайм удаленного сервера:
Узнать проходит ли пинг на удаленном сервере до google DNS:
Перезагрузить удаленную машину:
Запуск нескольких команд через SSH
В большинстве случаем недостаточно удаленно запустить только одну команду по SSH. Намного чаще необходимо отправить сразу несколько команд на удаленный сервер, например, для сбора информации и получить результат обратно.
Запустить несколько команд на удаленном хосте по SSH:
Практические примеры использования SSH
Узнайте аптайм и сколько свободного места на диске:
Сколько используется памяти и среднюю нагрузку:
Узнать версию ядра, количество ядер CPU и сколько всего RAM:
SSH: Запуск Bash Скрипта
Также бывает ситуация, когда на Linux сервере лежит какой-либо скрипт и его необходимо запустить по SSH на другом Linux сервере.
Основная идея заключается в том, чтобы подключиться на удаленный Linux сервер, дать скрипту выполнить свою работу и получить результат, при этом не копируя сам скрипт на удаленный сервер.
Эта задаче безусловно может быть выполнена и при этом довольно просто.
Что если вы хотите выполнить сценарий с аргументом.
Если требуются привилегии sudo, то команда примет вид:
- password — пароль для пользователя root на удаленной машине.
- script.sh — файл с вашим скриптом расположенный на станции с которой производите подключение.
Если есть вопросы, то пишем в комментариях.
Также можете вступить в Телеграм канал, ВК или подписаться на Twitter. Ссылки в шапки страницы.
Заранее всем спасибо.
Источник
Практические советы, примеры и туннели SSH
Практические примеры SSH, которые выведут на новый уровень ваши навыки удалённого системного администратора. Команды и советы помогут не только использовать SSH , но и более грамотно перемещаться по сети.
Знание нескольких трюков ssh полезно любому системному администратору, сетевому инженеру или специалисту по безопасности.
Практические примеры SSH
Сначала основы
Разбор командной строки SSH
В следующем примере используются обычные параметры, часто встречающиеся при подключении к удалённому серверу SSH .
- -v : вывод отладочной информации особенно полезен при анализе проблем аутентификации. Можно использовать несколько раз для вывода дополнительной информации.
- — p 22 : порт для подключения к удалённому серверу SSH. 22 не обязательно указывать, потому что это значение по умолчанию, но если протокол на каком-то другом порту, то указываем его с помощью параметра -p . Порт прослушивания указывается в файле sshd_config в формате Port 2222 .
- -C : сжатие для соединения. Если у вас медленный канал или вы просматриваете много текста, это может ускорить связь.
- neo@ : строка перед символом @ обозначает имя пользователя для аутентификации на удалённом сервере. Если не указать его, то по умолчанию будет использоваться имя пользователя учётной записи, в которую вы вошли в данный момент (
$ whoami). Пользователя также можно указать параметром -l .
Все вышеперечисленные параметры являются необязательными, кроме remoteserver .
Использование файла конфигурации
/.ssh/config , но его можно определить как параметр для опции -F .
В приведённом выше примерном файле конфигурации ssh две записи хоста. Первая обозначает все хосты, для всех применяется параметр конфигурации Port 2222. Вторая говорит, что для хоста remoteserver следует использовать другое имя пользователя, порт, FQDN и IdentityFile.
Файл конфигурации может сэкономить много времени на ввод символов, позволяя автоматически применять продвинутую конфигурацию при подключении к конкретным хостам.
Копирование файлов по SSH с помощью SCP
SSH-клиент поставляется с двумя другими очень удобными инструментами для копирования файлов по зашифрованному ssh-соединению. Ниже см. пример стандартного использования команд scp и sftp. Обратите внимание, что многие параметры для ssh применяются и в этих командах.
В этом примере файл mypic.png скопирован на remoteserver в папку /media/data и переименован в mypic_2.png.
Не забывайте о разнице в параметре порта. На этом попадаются многие, кто запускает scp из командной строки. Здесь параметр порта -P , а не -p , как в ssh-клиенте! Вы забудете, но не волнуйтесь, все забывают.
Для тех, кто знаком с консольным ftp , многие из команд похожи в sftp . Вы можете сделать push, put и ls, как сердце пожелает.
Практические примеры
Во многих из этих примеров можно достичь результата разными методами. Как и во всех наших учебниках и примерах, предпочтение отдаётся практическим примерам, которые просто делают своё дело.
1. SSH socks-прокси
Функция SSH Proxy под номером 1 по уважительной причине. Она более мощная, чем многие предполагают, и даёт вам доступ к любой системе, к которой имеет доступ удалённый сервер, используя практически любое приложение. Клиент ssh может туннелировать трафик через прокси-сервер SOCKS одной простой командой. Важно понимать, что трафик к удалённым системам будет исходить от удалённого сервера, так будет указано в логах веб-сервера.
Здесь мы запускаем socks-прокси на TCP-порту 8888, вторая команда проверяет, что порт активен в режиме прослушивания. 127.0.0.1 указывает, что служба работает только на localhost. Мы можем применить немного другую команду для прослушивания всех интерфейсов, включая ethernet или wifi, это позволит другим приложениям (браузерам и т д.) в нашей сети подключаться к прокси-сервису через ssh socks-прокси.
Теперь можем настроить браузер для подключения к socks-прокси. В Firefox выберите Настройки | Основные | Параметры сети. Укажите IP-адрес и порт для подключения.
Обратите внимание на опцию в нижней части формы, чтобы DNS-запросы браузера тоже шли через прокси SOCKS. Если используете прокси-сервер для шифрования веб-трафика в локальной сети, то наверняка захотите выбрать эту опцию, чтобы DNS-запросы туннелировались через SSH-соединение.
Активация socks-прокси в Chrome
Запуск Chrome с определёнными параметрами командной строки активирует socks-прокси, а также туннелирование DNS-запросов из браузера. Доверяй, но проверяй. Используйте tcpdump для проверки, что DNS-запросы больше не видны.
Использование других приложений с прокси
Имейте в виду, что многие другие приложения тоже могут использовать socks-прокси. Веб-браузер просто самое популярное из них. У некоторых приложений есть параметры конфигурации для активации прокси-сервера. Другим нужно немного помочь вспомогательной программой. Например, proxychains позволяет запустить через socks-прокси Microsoft RDP и др.
Параметры конфигурации socks-прокси задаются в файле конфигурации proxychains.
Подсказка: если используете удалённый рабочий стол из Linux на Windows? Попробуйте клиент FreeRDP. Это более современная реализация, чем rdesktop , с гораздо более плавным взаимодействием.
Вариант использования SSH через socks-прокси
Вы сидите в кафе или гостинице — и вынуждены использовать довольно ненадёжный WiFi. С ноутбука локально запускаем ssh-прокси и устанавливаем ssh-туннель в домашнюю сеть на локальный Rasberry Pi. Используя браузер или другие приложения, настроенные для socks-прокси, мы можем получить доступ к любым сетевым службам в нашей домашней сети или выйти в интернет через домашнее подключение. Всё между вашим ноутбуком и домашним сервером (через Wi-Fi и интернет до дома) зашифровано в туннеле SSH.
2. Туннель SSH (переадресация портов)
В простейшей форме SSH-туннель просто открывает порт в вашей локальной системе, который подключается к другому порту на другом конце туннеля.
Разберём параметр -L . Его можно представить как локальную сторону прослушивания. Таким образом, в примере выше порт 9999 прослушивается на стороне localhost и переадресуется через порт 80 на remoteserver. Обратите внимание, что 127.0.0.1 относится к localhost на удалённом сервере!
Поднимемся на ступеньку. В следующем примере порты прослушивания связываются с другими узлами локальной сети.
В этих примерах мы подключаемся к порту на веб-сервере, но это может быть прокси-сервер или любая другая служба TCP.
3. SSH-туннель на сторонний хост
Мы можем использовать те же параметры для подключения туннеля с удалённого сервера к другой службе, запущенной на третьей системе.
В данном примере мы перенаправляем туннель от remoteserver к веб-серверу, работающему на 10.10.10.10. Трафик с remoteserver к 10.10.10.10 уже не в SSH-туннеле. Веб-сервер на 10.10.10.10 будет считать remoteserver источником веб-запросов.
4. Обратный SSH-туннель
Здесь настроим прослушивающий порт на удалённом сервере, который будет подключаться обратно к локальному порту на нашем localhost (или другой системе).
В этой SSH-сессии устанавливается соединение с порта 1999 на remoteserver к порту 902 на нашем локальном клиенте.
5. Обратный прокси SSH
В этом случае мы устанавливаем socks-прокси на нашем ssh-соединении, однако прокси слушает на удалённом конце сервера. Подключения к этому удалённому прокси теперь появляются из туннеля как трафик с нашего localhost.
Устранение проблем с удалёнными SSH-туннелями
Если у вас возникли проблемы с работой удалённых опций SSH, проверьте с помощью netstat , к каким ещё интерфейсам подключён порт прослушивания. Хотя мы в примерах указали 0.0.0.0, но если значение GatewayPorts в sshd_config установлено в значение no, то листенер будет привязан только к localhost (127.0.0.1).
Предупреждение безопасности
Обратите внимание, что при открытии туннелей и socks-прокси внутренние сетевые ресурсы могут быть доступны ненадёжным сетям (например, интернету!). Это может быть серьёзной угрозой безопасности, поэтому убедитесь, что вы понимаете, что представляет собой слушатель и к чему у него есть доступ.
6. Установка VPN по SSH
Общий термин среди спецов по методам атаки (пентестеры и проч.) — это «точка опоры в сети». После установления соединения в одной системе эта система становится шлюзом для дальнейшего доступа к сети. Точка опоры, которая позволяет двигаться вширь.
Для такой точки опоры мы можем использовать SSH-прокси и proxychains, однако есть некоторые ограничения. Например, не получится работать напрямую с сокетами, поэтому мы не сможем сканировать порты внутри сети через Nmap SYN .
Используя этот более продвинутый вариант VPN, подключение снижается до уровня 3. Затем мы можем просто направить трафик через туннель, используя стандартную сетевую маршрутизацию.
Метод использует ssh , iptables , tun interfaces и маршрутизацию.
Сначала нужно задать эти параметры в sshd_config . Поскольку мы вносим изменения в интерфейсы и удалённой, и клиентской системы, нам нужны права root с обеих сторон.
Затем установим ssh-соединение, используя параметр, который запрашивает инициализацию tun-устройств.
Теперь у нас должно быть устройство tun при показе интерфейсов ( # ip a ). Следующий шаг добавит IP-адреса к туннельным интерфейсам.
Сторона клиента SSH:
Сторона сервера SSH:
Теперь у нас прямой маршрут к другому хосту ( route -n и ping 10.10.10.10 ).
Можно маршрутизировать любую подсеть через хост на другой стороне.
На удалённой стороне необходимо включить ip_forward и iptables .
Бум! VPN через туннель SSH на сетевом уровне 3. Вот это уже победа.
Если возникают какие-то проблемы, используйте tcpdump и ping , чтобы установить причину. Поскольку мы играем на уровне 3, то наши пакеты icmp пойдут через этот туннель.
7. Копирование ключа SSH (ssh-copy-id)
/.ssh/id_rsa.pub (или ключ по умолчанию) с вашей системы в
/.ssh/authorized_keys на удалённом сервере.
8. Удалённое выполнение команд (неинтерактивно)
Команду ssh можно связать с другими командам для обычного удобного интерфейса. Просто добавьте команду, которую хотите запустить на удалённом хосте, в качестве последнего параметра в кавычках.
В данном примере grep выполняется на локальной системе после того, как лог скачался по ssh-каналу. Если файл большой, удобнее запустить grep на удалённой стороне, просто заключив обе команды в двойные кавычки.
Другой пример выполняет ту же самую функцию, что и ssh-copy-id из примера 7.
9. Удалённый перехват пакетов и просмотр в Wireshark
Я взял один из наших примеров по tcpdump. Используйте его для удалённого перехвата пакетов с выдачей результата непосредственно в GUI локального Wireshark.
10. Копирование локальной папки на удалённый сервер по SSH
Красивый трюк, который сжимает папку с помощью bzip2 (это параметр -j в команде tar ), а затем извлекает поток bzip2 на другой стороне, создавая на удалённом сервере дубликат папки.
11. Удалённые приложения GUI с переадресацией SSH X11
Если на клиенте и удалённом сервере установлены «иксы», то можно удалённо выполнить команду GUI, с окном на вашем локальном рабочем столе. Эта функция существует давным давно, но по-прежнему очень полезна. Запустите удалённый веб-браузер или даже консоль VMWawre Workstation, как я делаю в этом примере.
Требуется строка X11Forwarding yes в файле sshd_config .
12. Удалённое копирование файлов с помощью rsync и SSH
rsync во многом удобнее scp , если требуется периодическое резервное копирование каталога, большого количества файлов или очень больших файлов. Здесь есть функция восстановления после сбоя передачи и копирования только изменённых файлов, что сохраняет трафик и время.
В этом примере используется сжатие gzip (-z) и режим архивирования (-a), который включает рекурсивное копирование.
13. SSH через сеть Tor
Анонимная сеть Tor может туннелировать SSH-трафик с помощью команды torsocks . Следующая команда прокинет ssh-прокси через Tor.
Torsocks будет использовать для прокси порт 9050 на localhost. Как всегда при использовании Tor необходимо серьёзно проверять, какой трафик туннелируется и другие проблемы операционной безопасности (opsec). Куда идут ваши DNS-запросы?
14. SSH к инстансу EC2
Параметр -i просто указывает ssh-клиенту использовать этот ключ. Файл
/.ssh/config идеально подходит для автоматической настройки использования ключа при подключении к хосту ec2.
15. Редактирование текстовых файлов с помощью VIM через ssh/scp
Для всех любителей vim этот совет сэкономит немного времени. С помощью vim файлы редактируются по scp одной командой. Этот метод просто создаёт файл локально в /tmp , а затем копирует его обратно, как только мы его сохранили из vim .
Примечание: формат немного отличается от обычного scp . После хоста у нас двойной // . Это ссылка на абсолютный путь. Один слэш будет означать путь относительно домашней папки users .
Если увидите такую ошибку, дважды проверьте формат команды. Обычно это означает синтаксическую ошибку.
16. Монтирование удалённого SSH как локальной папки с SSHFS
При помощи sshfs — клиента файловой системы ssh — мы можем подключить локальный каталог к удалённому местоположению со всеми взаимодействиями файлов в зашифрованном сеансе ssh .
На Ubuntu и Debian установим пакет sshfs , а затем просто приимонтируем удалённое расположение к нашей системе.
17. Мультиплексирование SSH с помощью ControlPath
По умолчанию при наличии существующего подключения к удалённому серверу с помощью ssh второе подключение с помощью ssh или scp устанавливает новый сеанс с дополнительной аутентификацией. Опция ControlPath позволяет использовать существующий сеанс для всех последующих соединений. Это значительно ускорит процесс: эффект заметен даже в локальной сети, а тем более при подключении к удалённым ресурсам.
ControlPath указывает сокет для проверки новыми соединениями на предмет наличия активной сессии ssh . Последняя опция означает, что даже после выхода из консоли существующий сеанс останется открытым 10 минут, так что в течение этого времени вы сможете повторно подключиться по существующему сокету. Для дополнительной информации смотрите справку ssh_config man .
18. Потоковое видео по SSH с помощью VLC и SFTP
Даже давние пользователи ssh и vlc (Video Lan Client) не всегда знают об этой удобной опции, когда очень нужно посмотреть видео по сети. В настройках File | Open Network Stream программы vlc можно ввести местоположение как sftp:// . Если требуется пароль, появится запрос.
19. Двухфакторная аутентификация
Такая же двухфакторная аутентификация, как у вашего банковского счёта или учётной записи Google, применима к сервису SSH.
Конечно, ssh изначально имеет функцию двухфакторной аутентификации, под которой подразумеваются пароль и ключ SSH. Преимущество аппаратного токена или приложения Google Authenticator заключается в том, что это обычно другое физическое устройство.
20. Прыжки по хостам с ssh и -J
Если из-за сегментации сети приходится переходить через несколько хостов ssh, чтобы добраться до конечной сети назначения, вам сэкономит время ярлык -J.
Здесь главное понимать, что это не аналогично команде ssh host1 , затем user@host1:
$ ssh host2 и т. д. Параметр -J хитро использует переадресацию, чтобы localhost устанавливал сеанс со следующим хостом в цепочке. Таким образом, в приведённом выше примере наш localhost аутентифицируется на host4. То есть используются наши ключи localhost, а сеанс от localhost до host4 полностью зашифрован.
Для такой возможности в ssh_config укажите опцию конфигурации ProxyJump. Если регулярно приходится переходить через несколько хостов, то автоматизация через конфиг сэкономит массу времени.
21. Блокировка попыток брутфорса SSH с помощью iptables
Любой, кто управлял сервисом SSH и просматривал логи, знает о количестве попыток брутфорса, которые происходят каждый час каждый день. Быстрый способ уменьшить шум в логах — перенести SSH на нестандартный порт. Внесите изменения в файл sshd_config с помощью параметра конфигурации Port##.
С помощью iptables тоже можно легко блокировать попытки подключения к порту по достижении определённого порога. Простой способ сделать это — использовать OSSEC, поскольку он не только блокирует SSH, но выполняет кучу других мер по обнаружению вторжений на базе имени хоста (HIDS).
22. SSH Escape для изменения переадресации портов
И наш последний пример ssh предназначен для изменения переадресации портов на лету в рамках существующего сеанса ssh . Представьте такой сценарий. Вы глубоко в сети; возможно, прыгнули через полдюжины хостов и вам нужен локальный порт на рабочей станции, который перенаправлен на Microsoft SMB старой системы Windows 2003 (кто-нибудь помнит ms08-67?).
Нажав enter , попробуйте ввести в консоли
C . Это управляющая последовательность в сессии, позволяющая вносить изменения в существующее соединение.
Здесь вы можете увидеть, что мы переадресовали наш локальный порт 1445 на хост Windows 2003, который нашли во внутренней сети. Теперь просто запустите msfconsole , и можно идти дальше (предполагая, что вы планируете использовать этот хост).
Завершение
Эти примеры, советы и команды ssh должны дать отправную точку; дополнительная информация о каждой из команд и возможностей доступна на справочных страницах ( man ssh , man ssh_config , man sshd_config ).
Меня всегда очаровывала возможность обращаться к системам и выполнять команды в любой точке мира. Развивая свои навыки по работе с инструментами вроде ssh вы станете более эффективным в любой игре, в какую играете.
Источник