ГлавнаяОперационные системыLinuxКак использовать SSH-каналы в Linux

Как использовать SSH-каналы в Linux

Каналы UNIX — это монументальный шаг в развитии UNIX и UNIX-подобных операционных систем. Это позволило пользователям выполнять сложные вычислительные задачи, связывая ввод и вывод базовых программ. Эта статья расширяет эту тему и показывает, как использовать канал UNIX в Linux по сети с протоколом SSH.

Совет. Если вам нужно освежить знания, узнайте, как это сделать работа канала и перенаправления в Linux .

Понимание конвейера Unix

Кайпы в Unix (и, соответственно, в Linux) используются для объединения программ и обеспечения их совместной работы. Например, используя cat, вы можете показать содержимое файла, но если вы использовали канал (|), вы можете связать catк команде more, чт

Понимание конвейера Unix

div>
cat file1 | more

Основная идея здесь такова: program1 fileX | program2. Однако дело не ограничивается одним файлом и двумя программами. Трубопроводы можно сделать настолько продвинутыми, насколько вам нужно, используя столько модификаторов, сколько вы только можете придумать.

Вот несколько способов эффективного использования канала (|) в ситуациях SSH.

Кстати : изучите некоторые из лучших приемов для защиты вашего SSH-сервера .

Автоматическая передача сжатых каталогов

Один из наиболее распространенных способов использования каналов UNIX — сохранение вывода программы в файл где-нибудь в локальной системе. Например, при запуске echo "Hello, MakeTechEasier!" | tee Helloбудет запущена программа echo, а также сохранена строка «Hello, MakeTechEasier!» внутри файла «Привет».

Терминал, показывающий базовое перенаправление каналов UNIX на локальном компьютере.

Тем не менее, вы можете использовать эту идею для переноса каталогов между двумя хостами Linux. Для этого прочитайте папку, которую вы хотите отправить, используя tar, а затем передайте ее вашему демону SSH:

tar czf - "~/Documents/myfolder" | ssh ramces@remote.host "tar xzf - -C ~/Documents/"

Эта команда объединит вашу папку в tar-архив и отправит его на стандартный вывод команды. Затем канал UNIX прочитает эти данные и отправит их на удаленный хост Linux с помощью

Автоматическая передача сжатых каталогов

, чтобы получить файлы с удаленных хостов:

ssh ramces@remote.host "tar czf - ~/Documents/myfolder" | tar xzf - -C "~/Documents/"

Полезно знать: узнайте, как можно создавать зашифрованные облачные резервные копии с помощью rclone .

Отправка и получение файлов с удаленных хостов

Вы также можете использовать каналы и SSH для отправки отдельных файлов по сети. Это работает с использованием catкак способа загрузки содержимого файла и отправки его через SSH:

cat < my.local.file | ssh ramces@remote.host "cat > my.remote.file"

Удаленный хост получит выходной поток от локального процесса cat и восстановит файл как есть.

Чтобы получить файл с удаленного хоста, вам необходимо изменить порядок выполнения команды и указать путь к удаленному файлу:

ssh ramces@remote.host "cat < my.remote.file" | cat > my.local.file
Терминал, показывающий передачу отдельных файлов с использованием канала SSH в Linux.

Удаленное резервное копирование и восстановление дисков

Подобно отправке файлов и каталогов, в Linux можно удаленно создавать резервные копии целых дисков с помощью канала UNIX и SSH. Это может быть полезно, если вы хотите быстро создать удаленные резервные копии и в данный момент у вас нет запасного физического диска.

Чтобы создать резервную копию всего диска, запустите dd, указав в переменной if=» диск, резервную копию которого вы хотите создать, а затем передайте ее демону SSH:

sudo dd if=/dev/sda | ssh ramces@remote.host "dd of=sda.img"

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

ssh ramces@remote.host "dd if=sda.img" |<

Отправка и получение файлов с удаленных хостов

>=/dev/sda

Кроме того, этот синтаксис канала SSH также будет работать с дискретными разделами диска. Например, если в вашей системе есть раздел /home в «/dev/sda4», вы можете запустить следующую команду, чтобы создать его резервную копию:

sudo dd if=/dev/sda4 | ssh ramces@remote.host "dd of=home.img"

К вашему сведению: узнать больше об истории вы сможете используйте команду dd для создания образов дисков .

Перенаправление аудиовхода на удаленный компьютер

Одним из преимуществ каналов SSH является то, что они позволяют взаимодействовать с удаленными компьютерами, как если бы они были локальным ресурсом. Это включает в себя возможность подключаться к файлам устройства, например к аудиовходу системы.

Для этого запустите удаленную подоболочку ALSA с помощью SSH и отправьте ее выходные данные локальному демону ALSA:

ssh ramces@remote.host "arecord -f cd" | aplay

Это позволит прослушивать устройство ввода звука по умолчанию на удаленном компьютере и воспроизводить

Удаленное резервное копирование и восстановление дисков

команд перенаправит аудиовход вашего локального компьютера на аудиовыход удаленного хоста:

Терминал, показывающий активный аудиопоток с использованием каналов SSH.
arecord -f cd | ssh ramces@remote.host "aplay"

Канал ALSA SSH также будет работать, если вы объедините его с другими инструментами воспроизведения звука. Например, вы можете отправить вывод arecord из канала SSH в ffmpeg:

ssh ramces@remote.host "arecord -f cd" | ffplay -nodisp -

Потоковое видео с удаленной веб-камеры

Еще одно замечательное применение каналов SSH в Linux — потоковая передача видео с веб-камеры в реальном времени. Как и в случае со звуком, это позволяет вам воспользоваться устройством удаленного хоста и воспроизвести его вывод на локальном компьютере.

Для потоковой передачи с веб-камеры удаленного хоста запустите SSH с подоболочкой ffmpeg, а затем передайте его клиенту воспроизведения видео на локальном компьютере:

ssh ramces@remote.host "ffmpeg  -r 14 -s 640x480 -f video4linux2 -i /dev/video0 -f matroska -" | mpv --demuxer=mkv /dev/stdin

Эта команда будет транслировать необработанное видео с первой веб-камеры на вашем удаленном компьютере.

Снимок экрана, показывающий активный видеопоток с веб-камеры, проходящий через канал SSH в Linux.

Также можно записать кадры с удаленной веб-камеры в отдельный файл. Вы можете сделать это, отправив данные из канала SSH на tee перед перенаправлением их на видеоплеер:

ssh ramces@remote.host "ffmpeg  -r 14 -s 640x480 -f video4linux2 -i /dev/video0 -f matroska -" | tee my_recording.mkv | mpv --demuxer=mkv /dev/stdin

Печать текста на удаленной консоли

Помимо аудио и видео, вы также можете использовать SSH-каналы для отправки необработанного

Перенаправление аудиовхода на удаленный компьютер

хотите отправлять сообщения о состоянии в систему без графического интерфейса.

Для начала создайте канал FIFO на своем локальном компьютере:

mkfifo my-fifo

Запустите команду прослушивания tailс помощью FIFO и отправьте ее вывод демону SSH:

tail -f my-fifo | ssh root@remote.host "cat > /dev/tty0"

Проверьте, работает ли ваш новый канал FIFO по сети, отправив текстовые данные с помощью команды echo:

echo "Hello, MakeTechEasier!" > my-fifo
Терминал, отображающий произвольный текст в консоли TTY устройства.<

Примечание. Отправка текста на TTY вашего компьютера будет работать только в том случае, если вы вошли в систему под учетной записью root этого компьютера.

Передача удаленных данных в локальный буфер обмена

Самым большим недостатком системного буфера обмена является то, что он работает только с локальным компьютером. Это проблема, если вы работаете с несколькими компьютерами и хотите передавать данные без создания временных файлов.

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

ssh ramces@remote.host "cat < ~/ramces.txt" | xclip -sel clipboard

Эта команда подключится к вашему удаленному компьютеру, запустит утилиту cat и начнет читать файл «ramces.txt». После этого он отправит удаленные данные обратно на ваш локальный компьютер и перенаправит их в системный буфер обмена.

Терминал, показывающий буфер обмена локального компьютера после канала SSH.

Вы также можете отправить текущий буфер обмена вашей системы в в

Потоковое видео с удаленной веб-камеры

дующую команду:

xclip -sel clipboard -o | ssh ramces@remote.host "cat > ~/clip.txt"

Изучение того, как отправлять данные по сети с помощью каналов UNIX и SSH, — это лишь первый шаг к пониманию того, как работают компьютерные сети. Узнайте больше о своей сети от отслеживание того, куда идут ваши пакеты, с помощью Traceroute .

Изображение предоставлено: Михаил Фесенко через Unsplash . Все изменения и скриншоты Рамсеса Реда.

Печать текста на удаленной консоли

Передача удаленных данных в локальный буфер обмена

ПОХОЖИЕ СТАТЬИ

Популярные записи