SSH - что это? Как использовать?

SSH - набор программ позволяющий организовать работу на удаленном компьютере. Данная статья не ставит целью показать как настраивается ssh. В место этого мы рассмотрим приемы работы с этим замечательным инструментом.

Ssh (secure shell) – это набор программ, который позволяет установить защищенное соединение с удаленным компьютером. Более того SSH позполяет выполнять комманды и программы на удаленном компьютере. Скорее всего вы уже имеете некоторое представление о том, что такое SSH. Однако не все могут знать, что SSH имеет ряд полезных инструментов. К таким инструментам можно отнести - вход по ключу без ввода пароля, автоматическое ваполнение программ не удаленном компьютере или монтирование удаленных папок.

Начнем с самых основ работы с SSH. Не судите строго:) Не у всех есть опыт работы с SSH.

Работа SSH строится по принципу клиент-сервер. Это значит, что компьютер к которомы мы подключаемся, является сервером. На этом компьютере должен быть установлен, настроен и запущен демон ssh. В современных версиях Linux сервер ssh, как правило установлен по умолчанию. Команда запуска может отличаться от бистрибутива к дистрибутиву и может выглядеть например так /etc/init.d/ssh start. При настройках по умолчанию ssh демон прослушивает порт 22. Убедитесь, что файрвол не блокирует соединения по порту на котором висит ssh. Чтобы войти на сервер в качестве пользователя uzver на сервер some_server (последний указывается как доменное имя, либо как IP-адресс), используем следующую команду в терминале:

Далее сервер запросит пароль пользователя. После успешного ввода появится измененное приглашение ввода, которое выглядит например так:

Появление этого сообщения означает успешный вход в удаленную систему. Сейчас мы работаем в окружении нашего удаленного сервера some_server. Каждая ваша введенная коменда будет выполнения на удаленном сервере с привилениями пользователя uzver (под которым мы вошли в систему).

Итак, теперь мы готовы рассмотреть те самые инструменты, о которых говорилось в начале статьи.

Защищенное копирование файлов по scp

Одной из составных частей пакета OpenSSH является утилита SCP. Данная программа позволяет копировать файлы и папки на (или с) удаленный сервер. При копировании используется соединение по протоколу ssh. Таким, образом scp выступает в качестве безопасной замены протокола ftp (последний небезепасен, широко распространенн в интернете).

В самом простейшем случае коменда копирования файла выглядит так:

Последняя команда скопирует файл userfile.txt с вашей машины на удаленный компьютер. Файл будет помещен в домашний каталог пользователя гямук на удаленной машине, например /home/uzver/. Путь ~/ в команде можно заменить на любой другой путь на удаленной машина (естественно у пользователя uzver на запись), например /home/uzver/tmp, или /tmp, или /home/uzver/public_html.

Для обратного копирования используется похожий синтаксис:

После выполнения данной комманды файл userfile.txt из домашнего каталога пользователя uzver будет скопирован в ваш текущий каталог.

Кроме того, есть ряд параметров для SCP, вот самые важные из них:

  • r – рекурсивное копирование папок (включая подкаталоги);
  • -P port – использовать нестандартный порт (по умолчанию 22). Иногда в целях безопасности стандартный порт ssh меняют на другой, т.е. демон ssh прослушивает порт отличный от 22. В таких случаях вам может потребоваться этот параметр.

Если вы не конченный linux-оид :), то вам может не нравиться пользоваться консолью. В этом случае можно использовать графические SCP клиенты.

Midnight Commander – одна из программ, обладает функциями SCP-клиента (Меню > Правая панель/Левая панель > Shell-соединение). Nautilus и Konqueror также поддерживают SCP. В среде MS Windows есть отличное приложение WinSCP. Его интерфейс очень похож на Total Commander.

Использование ssh без паролей. Генерация ключей.

Если вам нужно подключиться к серверу 1 раз, то ввести пароль не составляет труда. Однако если эту операцию надо выполнять 100 раз на дню - все становится не так рудужно:) Незащищенное же соединение - это ристк с точки зрения обеспечения безопасности.

Выходом из этой ситуации является авторизация на сервере при помощи пары открытого (public) и секретного (private) ключей.

Указанные ключи можно создать при помощи команды ssh-keygen. Существует двтипа ключей RSA и DSA.

При генерации ключей программа просит ввести пароль для ключа - просто нажмите ENTER. При этом будет создан ключ без пароля. Тут важно понимать риски. Безопасность удаленного компьютера упадет до уровня безовасности вашего локального компьютера (если злобная вражина получит доступ к секретному ключу, хранащемуся на вашем компьютера, то сможет воспользоваться им для доступа к удаленному компьютеру). Однако это избавляет вас от ввода пароля для доступа к ключу. Делайте все на свой страх и риск. Сильнее защищайте ваши секретные ключи.

После завершения работы ssh-keygen создаст два файла с секретным и публичным ключами. Секретный ключ нельзя делать общедоступным ни при каких условиях. По умолчанию он храниться в /home/uzver/.ssh/id_rsa. Но при желании его можно положить в любую другую папку (только невного измениться команда для подключения).

Открытый ключ обычно находится в /home/uzver/.ssh/id_rsa.pub, к нему можно предоставить публичный доступ.

Для получения доступа к удаленной машине с вашего локального компьютера с использованием этих ключейнеобходимо добавить информацию о вашем публичном ключе в файл ~/.ssh/authorized_keys на удаленном сервере. Для этого нужно выполнить следующие команды:

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

Если необходимо подключиться с удаленного сервера к вашему компьютеру, то аналогичная процедура должна быть выполнена с удаленного сервера.

Удаленное выполнение комманд

Зачем это надо? Например вым необходимо выполнять некоторую команду с вашего компьютера на даленном сервере ежедневно. Раньше этот процесс невозможно было автоматизировать, так как требовался ручной ввод пароля.

Простой пример, на удаленном сервере запущен некоторый процесс, поторый в экстренных случаях должен вас оповестить. Конечно, можно отправить EMail или сообщение другого типа. А можно например воспроизвести на вашем компьютере (где вы обычно работаете) звуковой сигнал:

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

Удаленный запуск графических приложений.

Данная возможность является наименнее известной. SSH может перенапраялять протокол X. Это дает возможность запускать любые графические приложения удаленно. При этом нужно добавить параметр -X при соединенни с сервером:

После этого изображения, всех запущенных X-приложений будут перенаправлены на ваш локальный X-сервер. В файле /etc/ssh/ssh_config можно включить постоянное использование перенаправления X11 (указав ForwardX11 yes). Естественно, что удаленная машина тоже должна поддерживать удаленное перенаправление X11. Иначе ничего не заработает. Все настройки выполняются в /etc/ssh/ssh_config. В большинстве систем linux эти настройки выполнены по умолчанию.

Следующей командой запускается одиночное приложение с перенаправлением:

При этом на удаленном сервере будет запущена программа psi, а ее изображение показано на локальном экране.

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

Монтирование удаленных папок - sshfs

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

Отличным решением является - смонтировать удаленный ресурс и работать с ним через ssh. Такую возможность предоставляет нам sshfs и проект fuse.

Fuse - это модуль ядра (недавно он был принят в официальную ветку 2.6), позволяющий непривилегированным пользователям монтировать различные файловые системы. Sshfs - это программа, созданная самим автором fuse, которая позволяет монтировать удаленные папки или файловые системы, используя ssh. Суть проста - удаленная папка монтируются в папку локальной файловой системы. После этого все операции над этой папкой производятся, как если бы это была обычная локальная папка, с той только разницей, что файлы перемещаются через ssh в фоновом режиме. После установки программы остается только добавить пользователя, которому мы хотим предоставить право на монтирование файловых систем через ssh, в группу fuse - например, командой:

После этого можно смонтировать удаленную папку при помощи sshfs:

Эта команда смоттирует папку /tmp на удаленном сервере в папку ~/remote_folder на вашем компьютере. Копирование файлов будет производиться по сети с использованием scp.

Размонтировать систему можно:

При постоянной работе с папкой ее можно занести в /etc/fstab. ТОгда она будет автоматически монтироваться при запуске системы:

Если планируется использовать fuse и sshfs регулярно, то нужно добавить fuse в файл /etc/modules. Иначе придется каждый раз загружать модуль fuse вручную.

Нет комментариев.
Добавить комментарий
Вам необходимо включить показ изображений в браузере для того чтобы увидеть код

Дайте нам знать, что вы - живой человек. Для нас это важно!
Кликните, если плохо видно

Прежде чем высказать свое мнение, прочитайте пожалуйста: правила


Рейтинг@Mail.ru