Об утилите SSH
SSH — утилита и одноименный сетевой протокол прикладного уровня, позволяет управлять удаленной ОС, также позволяет создавать туннели для безопасной передачи данных. Аббревиатура расшифровывается с английского — Secure Shell (безопасная оболочка). SSH как протокол похож на telnet, но в отличие от последнего, весь трафик шифруется, включая и передачу данных для авторизации на удаленном компьютере. Алгоритм шифрования по-умолчанию AES-128, но доступны и другие. На основе SSH работает утилита для копирования файлов — SCP.
SSH позволяет не только управлять удаленным компьютером, а также передавать через себя практически любой другой сетевой протокол, что позволяет использовать его не только для управления компьютером, но и например для передачи потокового аудио или другого трафика. Также через ssh возможно запускать приложения X-Server. Есть поддержка сжатия трафика. По-умолчанию порт для подключения по ssh — 22.
Авторизация на удаленном сервере может проходить несколькими способами:
- Авторизация по имени пользователя и паролю, пароль передается в зашифрованном виде.
- По ключу, таким образом проверяется имя пользователя и его ключ.
- По IP адресу, использует несколько методов проверки, но способ не является безопасным, так как есть опасность подмены IP злоумышленником.
Синтаксис
Авторизация на сервере
# ssh флаги сервер
Авторизация на сервере и выполнение команды
# ssh флаги сервер команда
Синтаксис команды является стандартным, указываем флаги (например если используется нестандартный для протокола порт подключения), указываем сервер подключения и если необходимо можно указать команду, которая будет выполнена сразу после авторизации. Сервер можно указать без данных, а можно сразу указать имя пользователя — user@host.
Флаги SSH
- -g — разрешить удаленным машинам обращаться к локальным портам
- -l — имя пользователя в системе
- -p — порт для подключения через ssh, если он является не стандартным (стандартный — 22, используется по умолчанию)
- -q — тихий режим, отключает вывод сообщений об ошибках
- -v — подробный режим (при подключении будут показаны все действия)
- -x — отключает перенаправление X11
- -X — включает перенаправление Х11
- -C — активируем сжатие данных
- -L — перенаправление порта с локальной машины на удаленную
- -R — перенаправление порта с удаленной машины на локальную
- -N — запрет выполнения удаленных команд
- -t — создание псевдотерминала, необходимо для некоторых приложений (запуск консольных приложений)
- -T — отключает псевдотерминал (по умолчанию)
- -f — включаем для ssh фоновый режим
- -n — перенаправить стандартный вывод в /dev/null
Примеры команды SSH
Подключение к серверу с указанием имени пользователя
# ssh user@host
Дополнительно укажем нестандартный порт
# ssh -p 32456 user@host
Активируем сжатие трафика
# ssh -C -p 32456 user@host
Если необходимо через запускать какие-то графические приложения, то указывается флаг — X (обратите внимание на регистр буквы, для включения необходимо использовать флаг в верхнем регистре), также укажем флаг -t, некоторым приложениям это необходимо
# ssh -X -t -p 32456 user@host
Подключимся к удаленной машине с выводом всей сопутствующей информации
# ssh -v -p 32456 user@host
Если же хотите отключить вывод сообщений об ошибках, то ставим флаг -q
# ssh -q -p 32456 user@host
Подключаемся к удаленному серверу и разрешаем ему обращаться к локальным портам локальной машины
# ssh -g user@host
Редирект портов
По-умолчанию в SSH запрещено удаленное перенаправление портов, чтобы активировать эту возможность необходимо в файле /etc/ssh/sshd_config раскомментировать #GatewayPorts no
строку установить параметр yes.
Перенаправляем локальный порт на удаленный хост
# ssh -g user@host.com -L 10400:host:80
Теперь, если вы например захотите получить доступ например к web серверу на удаленной машине — host, на локальном компьютере достаточно будет ввести в браузере http://localhost:10400 и браузер автоматически откроет страницу расположенную по адресу http://host.com:80. Так как порт 80 является стандартным для протокола http, а мы на него перенаправили порт 10400 с локальной машины, то откроется web интерфейс сервера если таковой имеется.
Перенаправим порт с удаленной машины на локальную, обратите внимание на флаг -g, он необходим
# ssh -g user@host.com -R 23000:host:33000
В данном примере видно, что порт 33000 с удаленной машины, будет перенаправлен на порт 23000 локальной. Это может понадобится если например у вас есть свой локальный сервис, который работает с портом 23000, а на удаленной машине приложение которое пользуется этим сервисом. Приложение настраиванием на подключение к адресу localhost:33000 и весь трафик будет перенаправлен в вашу сеть, а конкретно — локальный компьютер на порт 23000.
Укажем, что утилита должны работать в фоновом режиме, для этого добавим флаг -f
# ssh -f user@host.com -R 23000:host:33000