• Курсы Академии Кодебай, стартующие в мае - июне, от команды The Codeby

    1. Цифровая криминалистика и реагирование на инциденты
    2. ОС Linux (DFIR) Старт: 16 мая
    3. Анализ фишинговых атак Старт: 16 мая Устройства для тестирования на проникновение Старт: 16 мая

    Скидки до 10%

    Полный список ближайших курсов ...

Статья Урок по SSH: азы использования и продвинутые трюки (часть вторая)

Первая часть здесь.

Как редактировать файл на другом компьютере через ssh

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

Вот когда vim (сокращение от "Vi IMproved" — улучшенный Vi) может помочь. vim можно рассматривать как «vi на стероидах», с расширяемыми функциями, которые здорово улучшают дефолтное окружение редактора vi. Расширяемость vim достигается благодаря использованию «плагинов». Один из таких плагинов — это netrw, который задействует чтение и запись файлов по сети. netrw поддерживает различные протоколы уровня приложений, включая ftp, http, scp, rsync и rcp.

Если вы хотите отредактировать удалённый файл через ssh с использованием vim, вы можете сделать так.
Код:
$ sudo apt-get install vim
$ vim scp://user@remote_host//home/user/path/file
Реальный пример команды:
Код:
vim scp://root@192.168.1.37//root/prs.txt
Обратите внимание на двойной слеш "/" для каталога root на удалённом хосте. Вышеприведённая команда vim откроет файл, размещённый на удалённом хосте для редактирования. За сценой, vim использует scp для получения запрошенного файла с удалённого хоста, размещает файл в /tmp и, наконец, открывает его для редактирования.

Когда вы попытаетесь сохранить изменения в файле, изменения, в первую очередь, будут применены к локальной копии в /tmp, которая затем выгрузиться через scp на удалённый хост.

Поскольку за сценой сетевая передача осуществляется плагином netrw, вы можете редактировать любой удалённый файл транспарентно, используя традиционный интерфейс vi.

Внимание, этот фокус не работает в Cygwin — только в настоящем Linux.

Как сравнить файлы на удалённом компьютере (выполнить команду diff) через SSH

diff — это утилита командной строки, которая сравнивает содержимое двух файлов (или директорий) и построчно показывает в чём они различаются. Очень просто пользоваться diff, когда оба файла размещены на локальном хосте. А как быть если (один или оба) входных файла размещены на удалённом хосте? Вы можете использовать SSH для сравнения этих файлов по сети. Здесь как применить команду diff к удалённым файлам по SSH.

Утилита diff может принимать один операнд в форме stdin (стандартного ввода) (представляется как "-"), и вы можете использовать эту особенность для достижения цели по применению diff через SSH следующим образом.
Код:
$ ssh user@remote_host "cat remote_file.txt" | diff — local_file.txt
28798


Вышеприведённая команда запросит у вас SSH пароль для удалённого хоста. После корректного ввода пароля, команда прочитает содержимое удалённого файла через SSH а затем передаст его по трубе в утилиту diff для сравнения с локальным файлом.

Другой метод для сравнения содержимого файла по SSH — это ясное использование перенаправления ввода. Чтобы использовать этот второй метод вы должны для начала включить беспроводной вход по ssh в удалённый хост(ы). Подразумевая что это готово, вы можете делать следующее:
  • Для сравнения (diff) локального файла и удалённого файла:
Код:
$ diff local_file.txt <(ssh user@remote_host 'cat remote_file.txt')
28799

  • Для сравнения (diff) двух удалённых файлов:
Код:
$ diff <(ssh user@remote_host 'cat remote_file.txt') <(ssh user2@remote_host2 'cat remote_file2.txt')
Обратите внимание, что последние команды потерпят неудачу, если удалённые хосты потребуют от вас ввода пароля SSH для доступа. Также запомните, что вышеприведённое перенаправление ввода не поддерживается шеллом sh. Используйте шелл bash или что-нибудь совместимое.

Как настроить VNC через ssh

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

Один из таких механизмов — это настройка VNC сессии через SSH туннель. В этом уроке я опишу как настроить VNC через SSH на Linux.

Я предполагаю, что у вас уже есть где-то в сети VNC сервер, к которому мы будем коннектиться.

Чтобы создать SSH туннель к удалённому хосту, где запущен VNC сервер, удалённый хост должен также иметь запущенный SSH. Поэтому для начала установите сервер OpenSSH на удалённый хости (как это сделать рассказано в первой части).

Следующий шаг — это создание SSH туннеля с локального хоста на удалённый хост. Чтобы это сделать, запустите следующую команду. Здесь 5900 — это номер порта, который прослушивает удалённый VNC сервер.
Код:
$ ssh user@remote_host -L 5900:127.0.0.1:5900
После введение SSH пароля и успешного входа, будет установлен SSH туннель между 127.0.0.1:5900 и remote_host:5900.

Теперь вы можете продолжать и запустить клиент VNC на локальном хосте. В вашем VNC клиенте соединитесь к 127.0.0.1:5900 вместо удалённого VNC сервера. Тогда трафик VNC будет перенаправляться через SSH туннель между вами и удалённым сервером VNC и, следовательно, он будет обезопасен от перехвата пакетов.
Код:
gvncviewer 127.0.0.1
28800


Как включить форвардинг (пересылку) X11 с использованием ssh

Пересылка X11 — это механизм, который позволяет графическому интерфейсу программ X11, запущенных на удалённом сервере Linux, быть отображёнными на локальной клиентской машине. За сценой, вывод X11 удалённо запущенной программы, санкционирован для отправки на локалхост через соединение X11 между клиентом и удалённым сервером. SSH имеет опции для безопасного туннелирования таких X11 соединений так, что сессия пересылки X11 получается зашифрована и инкапсулирована. Если вы хотите настроить форвардинг X11 через SSH, то ознакомьтесь с этой инструкцией.

Для пересылки X11, не требуется, чтобы на удалённый серверный хост имел полную установленную систему X11. Тем не менее, на серверном хосте нужен как минимум установленный xauth. xauth — это утилита, которая поддерживает конфигурацию Xauthority, используемую сервером и клиентом для аутентификации X11 сессий. Для установки xauth, сделайте следующее на удалённом сервере.

Для Debian и т.д. (4.0) и более поздних и Ubuntu 7.04 и более поздних:
Код:
$ sudo apt-get install xbase-clients
Для Debian lenny (5.0) и более поздних и Ubuntu 7.10 и более поздних:
Код:
$ sudo apt-get install xauth
Затем включите перенаправление X11 в sshd и запустите sshd следующим образом.
Код:
$ sudo vim /etc/ssh/sshd_config
X11Forwarding yes
$ sudo /etc/init.d/sshd restart
Вышеприведённая настройка включит пересылку X11 на всей системе серверного хоста. Если вместо этого вы хотите включить пересылку X11 на основе индивидуального пользователя, вы можете использовать специфичный для каждого пользователя конфигурационный файл ssh (например, $HOME/.ssh/config). Таким образом, вы можете использовать пересылку X11 только когда вы запускаете ssh в конкретном пользовательском аккаунте.
Код:
$ vim $HOME/.ssh/config file
ForwardX11 yes
В отличие от удалённого серверного хоста, машине с локальным клиентом нужна установленная система X11 для отображения удалённой запущенной программы X11. Если всё так, то в этом случае вы можете открыть ssh соединения из локальной машины на удалённый сервер следующим образом.
Код:
$ ssh -X user@remote_server
После входа, вы можете обычным образом запустить любую программу X11 на удалённом сервере, и её вывод будет отображён на локальной клиентской машине.
 
  • Нравится
Реакции: serge263
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!