Команда ssh
Содержание:
Поднятие socs5
Вы можете создать linux сервер и позволить подключаться к нему из интернета, используя проброс портов. Дальше через этот сервер ( назовём его ssh-proxy) вы сможете подключаться к другим серверам из интернета. Главное чтобы в локальной сети ssh-proxy имел доступ к этим серверам.

Для подключения к ssh-proxy с поднятием прокси выполним такую команду:
$ ssh -D 8080 <user>@<ip_ssh_proxy> -p <port_ssh_proxy>
Посмотрим что у нас получилось:
$ netstat -pan | grep 8080 tcp 0 0 127.0.0.1:8080 0.0.0.0:* LISTEN 8354/ssh tcp6 0 0 ::1:8080 :::* LISTEN 8354/ssh
Команда выше показывает что служба слушает только localhost, ниже я покажу как слушать любые интерфейсы.
Теперь вы можете настроить socs5 proxy для вашего браузера используя 127.0.0.1:8080. Внутренние сайты и web-админки доступные только из офиса начнут открываться.
Чтобы служба вместо localhost слушала и другие интерфейсы можно воспользоваться такой командой:
$ ssh -D 0.0.0.0:8080 <user>@<ip_ssh_proxy> -p <port_ssh_proxy> $ netstat -pan | grep 8080 tcp 0 0 0.0.0.0:8080 0.0.0.0:* LISTEN 10099/ssh
Базовые опции SSH
На данный момент мы обсудили некоторые основные параметры, необходимые для установления соединения:
HostName: фактическое имя хоста, которое должно использоваться для соединения. Оно заменяет любой псевдоним, определенный в заголовке Host. Этот параметр не требуется, если определение Host указывает валидное имя хоста для подключения.
User: имя пользователя, с помощью которого нужно создать подключение.
Port: порт, по которому работает удаленный демон SSH (эта опция нужна, только если удаленный экземпляр не работает по стандартному порту 22).
SSH поддерживает еще много полезных опций, которые нужно рассмотреть.
Как ограничить доступ по SSH
Сменить порт
Port 9724
Теперь при авторизации вам нужно вместо стандартного порта указывать .
Способ очень простой и действенный против большинства простых ботов хакеров, которые стучатся в стандартные порты. Тут главное не создать конфликт с другими службами и подобрать заведомо неиспользуемое число.
Здесь мы определяем, что связь возможна только по протоколу v2
Protocol 2
Запретить авторизацию под root
PermitRootLogin no
По умолчанию . Если , можно авторизовываться под рутом. Под root работать небезопасно, лучше создать своего пользователя и работать под ним.
MaxAuthTries 2
Количество попыток ввода пароля. По умолчанию 6. При неудачном переборе сеанс связи обрывается.
Уменьшить время ожидания авторизации
LoginGraceTime 30s
По умолчанию, 120 секунд может длиться сеанс авторизации. По истечению этого времени он обрывается. 2 минуты на авторизацию — это перебор, всё это время сервер держит связь открытой, что очень нерационально. Полминуты за глаза хватит.
Закрыть доступ по IP
Если доступ нужен только вам, самым простым и надёжным будет закрыть доступ отовсюду, кроме вашего IP или, если он динамический, то диапазона IP.
- Открываем и добавляем туда
SSHD: 192.168.1.1
где — ваш IP. Если у вас динамический IP, и запишите Вашу подсеть вместо IP, например:
SSHD: 192.168.0.0/16
- Открываем и добавляем туда:
SSHD: ALL
Теперь никто, кроме вас, не сможет авторизоваться на сервере по SSH.
Синтаксис
Рассмотрим синтаксис команды.
Стоит отметить, что утилита ssh способна работать с помощью двух версий протокола, они так и называются протокол 1 и протокол 2. Второй вариант является наилучшим, так как поддерживает значительно больше способов шифрования, а также аутентификаций. Именно поэтому протокол 2 применяется пользователями чаще всего.
Основные опции:
- «g» — для разрешения удаленной машине пользоваться определенным локальным портом.
- «l» — для изменения/введения имя пользователя в определенной системе.
- «f» — аргумент переводит режим работы в фоновый.
- «n» — для перенаправления классического вывода.
- «p» — для изменения/введения данных о локальном порту SSH, используемом на удаленной машине.
- «q» — для исключения вероятности показа сообщений о возникающих ошибках.
- «v» — для включения специального режима отладки.
- «x» — для отключения перенаправления X11.
- «X» — для включения перенаправления Х11.
- «C» — для включения сжатия.
Представленный выше список является неполным. На самом деле команда ssh поддерживает в разы больше опций, а описанные варианты используются чаще всего. Стоит заметить, что большинство настроек можно водить с использованием файла «ssh/config».
Настройка
Для осуществления поставленной перед пользователем задачи первоначально требуется обратиться к файлу «/etc/ssh/sshd_config». Здесь имеется множество настроек, большинство из которых применяются редко. Именно поэтому рекомендуется рассмотреть те, которые пользователи вводят чаще всего.
Строка Port
Утилита работает согласно стандартным установкам на основе порта 22. Это поведение не является безопасным, так как мошенникам известен этот порт. Они могут организовать атаку Bruteforce, чтобы перебить имеющийся пароль. Требуемый порт задается с помощью строки «Port 22». Потребуется в обязательном порядке изменить показатели порта на необходимые вам данные.
Строка — Protocol 2,1
На сервере команда ssh согласно стандартным установкам используются две версии протоколов. Они предназначены для совмещения. К примеру, если потребуется использование только второго протокола, потребуется раскомментировать (удалить #) строку «Protocol 2,1» и убрать цифру 1.
Запрет входа root через ssh
В команде ssh согласно стандартным установкам разрешается Root-доступ. Данное поведение также небезопасно. Именно поэтому пользователю потребуется обязательно раскомментировать строку:
Вход только одному пользователю
В файле конфигурации sshd_config можно добавить две директивы:
- Allowusers;
- AllowGroups.
Они позволяют разрешить пользоваться ssh только конкретным пользователям или группам.
Особенности выполнения приложений Х11
Не каждый современный пользователь знает, что утилиту SSH можно применить для полноценного запуска приложений Х11. Чтобы появилась возможность использования такой функции, потребуется разрешить ее со стороны сервера. Для этих целей необходимо ввести:
Для вступления изменений, внесенных в утилиту ssh, необходим обязательный перезапуск сервиса. Для этого потребуется ввести специальную команду:
Или можно перезагрузить всю машину:
Пример. Скрипт. Копирование файла с удаленного компьютера.
Задача. На удаленном компьютере Anacron запускает один раз в сутки. Нужно создать скрипт который будет копировать удаленные backup-копии на локальный сервер бекапов. Скрипт запустим при помощи Использование планировщика cron в Linux.
$ ssh-keygen -t dsa $ ls id_dsa id_dsa.pub $ chmod 600 id_dsa
Поместим публичный ключ файл ~/.ssh/authorized_keys на удаленном компьютере.
$ ssh-copy-id -i id_dsa.pub USER@HOST
Скрипт:
#!/bin/bash # Copy PostgreSQL SFTP='/usr/bin/sftp' DIR='/home/backups_mbill_sql/' HOST='user@host:/home/backups_mbill_sql/' FILES="psql-`date +%d.%m.%Y`*.sql" $SFTP $HOST$FILES $DIR
Версии SSH-протокола
В настоящий момент известны две рабочие версии протокола SSH:
-
SSHv1. Версия 1995 года, сейчас фактически не используется из-за наличия серьезных недостатков в реализации, наиболее подвержена взлому виртуальными злоумышленниками.
Так, например, в культовом фильме «Матрица: Перезагрузка» показана вполне достоверная с технической точки зрения сцена, в которой Тринити взламывает электростанцию. С помощью программы Nmap она находит открытый порт SSH (22 — порт, на котором по умолчанию работает серверная часть SSH), затем запускает эксплойт SSHNuke. Через уязвимость первой версии протокола SSHv1 CRC32 она получает права суперпользователя (root), меняет пароль на свой и отключает электростанцию.
-
SSHv2. Запущена спустя год после первой версии и является современной модификацией сетевого протокола, устойчивой к агрессивным атакам «man-in-the-middle», благодаря которой злоумышленники не смогут «прослушивать» трафик пользователя.
Еще один уровень защиты второй версии — максимальная степень устойчивости к несанкционированному доступу путем «серединного» подсоединения (например, session hijacking), а также к приему подмены серверных имен (DNS spoofing).
Из вышеизложенного можно сделать вывод, что использование сетевого протокола SSH-2 является единственно приемлемым с точки зрения безопасности и сохранности конфиденциальной информации.
Определение ключей
Если вы используете SSH-ключи, эти параметры помогут вам управлять ключами для каждого хоста.
IdentityFile: Эта опция может использоваться для указания расположения ключа каждого хоста. Если ваши ключи находятся в местах по умолчанию, каждый из них будет проверен автоматически. Если у вас есть несколько ключей, и все они используются для разных целей, эта опция укажет точный путь, где можно найти правильный ключ.IdentitiesOnly: Благодаря этой опции SSH будет полагаться только на тождества, предоставленные в файле конфигурации. Она может быть необходима, если у агента SSH в памяти есть альтернативные ключи, которые недействительны для данного хоста.
Эти параметры особенно полезны, если вам нужно отслеживать большое количество ключей разных хостов и использовать один или несколько агентов SSH.
Подключение к Linux через SSH
Наряду с правильным IP-адресом у вас также должны быть имя пользователя и пароль для доступа к удаленному компьютеру.
Для инструментов SSH командной строки используйте
ssh username@REMOTE.IP.ADDRESS.HERE
Обязательно замените имя пользователя фактическим именем пользователя, а REMOTE.IP.ADDRESS.HERE — IP-адресом удаленного устройства. Нажмите Enter, и вам будет предложено ввести пароль.
С правильным паролем вы получите работающую подсказку терминала — теперь вы вошли на удаленный компьютер.
Используете настольный клиент SSH, например PuTTY?

Введите имя хоста или IP-адрес , выберите тип подключения SSH , затем « Открыть». Когда будет предложено ввести имя пользователя и пароль, введите их в окне командной строки, чтобы завершить подключение и получить удаленный доступ.
Опции команды SSH
Теперь давайте рассмотрим самые основные опции команды ssh:
- f — перевести ssh в фоновый режим;
- g — разрешить удаленным машинам обращаться к локальным портам;
- l — имя пользователя в системе;
- n — перенаправить стандартный вывод в /dev/null;
- p — порт ssh на удаленной машине;
- q — не показывать сообщения об ошибках;
- v — режим отладки;
- x — отключить перенаправление X11;
- X — включить перенаправление Х11;
- C — включить сжатие.
Это далеко не все опции утилиты, остальные выходят за рамки данной статьи. Многие настройки работы ssh можно изменять через конфигурационный файл ~/.ssh/config но здесь мы это тоже подробно рассматривать не будем.
Подключение по SSH
Подключение происходит с помощью команды
ssh + имя_пользователя + хост
Например
ssh andrei@192.168.0.2
Если вы подключаетесь к хосту впервые, появится предупреждение
The authenticity of host ‘192.168.56.101 (192.168.56.101)’ can’t be established.
ECDSA key fingerprint is SHA256:db8az/qbrWOJWvNRv2d9UHaDBnnUHanJ9Svca9vFx7c.
Are you sure you want to continue connecting (yes/no/)?
Если выбрать yes
то в файл
~/.ssh/known_hosts
добавится похожая строка:
|1|abcdef+abcdefghijklmnopqrst=|abcdefghijklmnopqrstuvwxyz1= ssh-rsa abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrst/abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz12345/abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzB1234567
Обычно файл
known_hosts
имеет следующий формат (записи идут через пробел)
Таким образом
abcdef+abcdefghijklmnopqrst=|abcdefghijklmnopqrstuvwxyz1=
Это хэш от имени сервера.
Здесь через пробел записаны три элемента: хэш от имени сервера, название используемого ассиметричного алгоритма и публичный ключ сервера. Разберём их по очереди.
The story of getting SSH port 22
I wrote the initial version of SSH (Secure Shell) in Spring 1995. It was a time when telnet and FTP were widely used.
Anyway, I designed SSH to replace both (port 23) and (port 21). Port 22 was free. It was conveniently between the ports for and . I figured having that port number might be one of those small things that would give some aura of credibility. But how could I get that port number? I had never allocated one, but I knew somebody who had allocated a port.
The basic process for port allocation was fairly simple at that time. Internet was smaller and we were in the very early stages of the Internet boom. Port numbers were allocated by IANA (Internet Assigned Numbers Authority). At the time, that meant an esteemed Internet pioneer called Jon Postel and Joyce K. Reynolds. Among other things, Jon had been the editor of such minor protocol standards as IP (RFC 791), ICMP (RFC 792), and TCP (RFC 793). Some of you may have heard of them.
To me Jon felt outright scary, having authored all the main Internet RFCs!
There we were! SSH port was 22!!!
On July 12, 1995, at 2:32am, I announced a final beta version to my beta testers at Helsinki University of Technology. At 5:23pm I announced ssh-1.0.0 packages to my beta testers. At 5:51pm on July 12, 1995, I sent an announcement about SSH (Secure Shell) to the mailing list. I also posted it to a few newsgroups, mailing lists, and directly to selected people who had discussed related topics on the Internet.

Установка ssh Ubuntu 16.04
Довольно часто может понадобиться получить доступ к удаленному компьютеру или серверу через интернет. В случае с персональным компьютером, это может понадобиться для срочного решения какой-либо проблемы, а в случае с сервером это вообще очень распространенная практика. В Linux наиболее часто для решения таких задач используется протокол ssh.
Служба ssh позволяет получить доступ к терминалу удаленного компьютера и выполнить там все необходимые вам команды. При своей простоте она достаточно безопасна, чтобы использоваться для решения серьезных коммерческих задач, так и задач обычных пользователей. В этой статье мы рассмотрим как выполняется установка ssh Ubuntu 16.04, а также поговорим о начальной настройке ssh сервера.
Что такое SSH?
SSH или Secure Shell — это протокол безопасного доступа из одного компьютера к другому по сети. У протокола SSH очень много возможностей. Вы можете создавать защищенные соединения между компьютерами, открывать командную строку на удаленном компьютере, запускать графические программы, передавать файлы и организовывать частные сети.
За поддержку протокола SSH в Linux отвечает набор программного обеспечения OpenSSH. Это открытая реализация этого протокола, которая предоставляет все необходимые возможности. В состав пакета OpenSSH входят утилиты для установки соединения, передачи файлов, а также сам ssh сервер.
Установка OpenSSH в Ubuntu
Установить ssh на Ubuntu будет очень просто, программа считается стандартной и используется почти везде. Хотя по умолчанию в дистрибутиве ее нет, но зато она есть в официальных репозиториях.
Поэтому для установки откройте терминал с помощью сочетания клавиш Ctrl+Alt+T и выполните команду:
sudo apt install openssh-server
Будет загружено несколько пакетов, а когда установка ssh сервера Ubuntu завершится, программа будет готова к работе. Если вы хотите чтобы служба запускалась автоматически нужно добавить его в автозагрузку. Поэтому чтобы включить ssh Ubuntu 16.04 выполните:
sudo systemctl enable sshd
Если затем вы захотите удалить службу из автозагрузки, используйте команду disable:
sudo systemctl disable sshd
Что касается клиента ssh, то он уже установлен в системе по умолчанию. Сейчас вы можете попробовать подключиться к локальному ssh серверу просто набрав:
ssh localhost
В одной из предыдущих статей мы рассматривали что означает адрес 0.0.0.0, сейчас вы можете убедиться что в пределах этой машины он значит локальный адрес:
ssh 0.0.0.0
Точно таким способом вы можете получить ssh доступ ubuntu к любому другому компьютеру из сети. Для этого достаточно указать вместо localhost его ip адрес и имя пользователя в таком формате:
$ ssh имя_пользователя@ip_адрес
Настройка SSH в Ubuntu
С параметрами по умолчанию сервер SSH не очень безопасен поэтому перед тем, как программа будет готова к полноценному использованию ее нужно немного настроить. Все настройки сервера SSH хранятся в конфигурационном файле sshd_config, который находится в папке /etc/ssh.
Перед тем как вносить изменения в этот конфигурационный файл рекомендуется сделать его резервную копию, для этого можете использовать такую команду:
sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.factory-defaults
Дальше вы можете перейти к настройке конфигурационного файла:
sudo vi /etc/ssh/sshd_config
Первым делом желательно сменить порт, на котором работает ssh, возможный злоумышленник не знал включен ли у вас этот сервис. Найдите в конфигурационном файле строчку Port и замените ее значение на любое число, например, Port 2222:
Чтобы разрешить аутентификацию по ключу, а не по паролю найдите строку PubkeyAuthentication и убедитесь, что ее значение yes.
После того как все настройки будут завершены, сохраните изменения нажав :w и перезапустите службу ssd:
sudo systemctl restart ssh
Более подробно про настройку и использование различных тонкостей ssh рассказано в статье как использовать ssh.
Если вы изменили порт, то при подключении в клиенте тоже нужно указать новый порт, так как по умолчанию будет использоваться 22, например:
ssh -p 2222 localhost
К тому же, если на компьютере установлен и настроен брандмауэр, то в нем тоже нужно разрешить доступ к новому порту ssh, для этого выполните:
sudo ufw allow 2222
Даже если служба ssh находится на порту по умолчанию, его тоже нужно открыть в брандмауэре если вы собираетесь подключаться к компьютеру через интернет:
sudo ufw allow 22
Настройка ssh Ubuntu 16.04 полностью завершена.
[править] Проблемы подключения
Описание проблемы: Сервер не принимает пароль, ошибка авторизации.Решение: Скорее всего проблема связана с тем, что вы вводите логин/пароль путем copy/paste со страницы /Пароли на ресурсы/, в этом случае велика вероятность того, что при копировании в буфер обмена попадают лишние символы: проблел, возврат строки. Попробуйте ввести данные для авторизации вручную.
Описание проблемы: Всё зависает на этапе ввода пароля.Решение: Скорее всего ничего не зависло. В unix-системах при авторизации в целях дополнительной безопасности вводимый пароль не отображается вообще, даже звёздочками. Просто вводите пароль и нажимайте Enter.
В случае успеха вы увидите примерно такой ответ от сервера:
В противном случае вам нужно проверить настройки своего Firewall’а и/или обратиться к администратору вашей сети.
[править] Настройка SSH-клиента
Прежде всего, перед началом настройки программы убедитесь, что ваш сайт работает на UNIX-сервере, это можно сделать через раздел личного кабинета /Полный список функций/ -> /Управление сайтами и серверами/, при необходимости в этом же разделе можно и сменить тип сервера.
UNIX-шелл доступен (для сайта используется сервер на операционной системе Linux)
UNIX-шелл не доступен (для сайта используется сервер на операционной системе Windows)
Все необходимые реквизиты доступа для настройки вы найдете в личном кабинете на странице /Полный список функций/ -> /Пароли на ресурсы/.
Скачайте с официального сайта последнюю версию программы и сохраните ее в любой каталог на вашем компьютере или на рабочий стол (для удобства).
Запустите программу:
Главное окно настройки
- Настройте основные параметры доступа и авторизации:
- Host Name (адрес сервера, он же адрес FTP сервера), например moisait-ru.1gb.ru;
- Port (порт), 2222;
- Protocol (протокол), SSH;
- Saved Sessions (имя сессии), например, moisait.ru;
Основные параметры подлючения
Раздел настройки внешнего вида
в открывшися окне выбираем набор символов Cyrillic:
Окно выбора набора символов
Настройка набора символов перекодировки
Сохранение параметров настройки
Подключение к серверу
в ответ вы получите приглашение от сервера на ввод вашего логина (FTP пользователь):
Ввод логина (имени пользователя)
и пароля (FTP пароль):
Ввод пароля
В случае успешной авторизации, вы попадаете в свой домашний каталог, интерпретатор будет находится в состоянии ожидании ввода команд:
Ожидание ввода команд.
Как отключить вход для суперпользователя OpenSSH
Перед тем, как отключить вход для суперпользователя убедитесь, что создан хотя бы ещё один пользователь. После этого:
-
1.
Откройте терминал. -
2.
Создайте резервную копию конфигурационного файла с помощью команды:
-
3.
Откройте конфигурационный файл с помощью команды:
-
4.
Раскомментируйте строку «PermitRootLogin» и укажите значение «no»:
Чтобы сохранить изменения, нажмите Ctrl + O и Enter. Затем закройте редактор сочетанием клавиш Ctrl + X.
Вы можете изменить решение: для этого в строке «PermitRootLogin» укажите значение «yes».
-
5.
Чтобы применить настройки, выполните команду:
Готово, вы отключили вход для суперпользователя.
Opening Backdoors into the Enterprise
Remote SSH port forwarding is commonly used by employees to open backdoors into the enterprise. For example, the employee may set get a free-tier server from Amazon AWS, and log in from the office to that server, specifying remote forwarding from a port on the server to some server or application on the internal enterprise network. Multiple remote forwards may be specified to open access to more than one application.
The employee would also set on the server (most employees do not have fixed IP addresses at home, so they cannot restrict the IP address).
For example, the following command opens access to an internal Postgres database at port 5432 and an internal SSH port at port 2222.
Обратный SSH-туннель: выставляем ресурсы в Интернет
Обратный SSH-туннель применяется для того, чтобы на удаленном хосте (ssh-сервере) открыть сокет и перенаправлять соединения, устанавливаемые с этим сокетом, на порт локального хоста (ssh-клиента).
Практический пример:
Вы работаете дома, на удаленке, и завершили разработку веб-сайта. Коллеги с работы просят вас показать результат. Для этого вам нужно сделать так, чтобы 80 порт вашего веб-сервера стал доступен вашим коллегам.
Вы устанавливаете соединение с ssh-сервером корпоративного роутера (публичный ip 1.1.1.1) и задаете правило обратной трансляции с помощью аргумента -R (remote port). Затем указываете точку входа, находящуюся на удаленном хосте (ssh-cервере), 172.16.0.1:8080 и адрес трансляции на порт локального хоста (ssh-клиента) 127.0.0.1:

Что происходит с пакетом отправленным по обратному SSH-туннелю:
1. Источник с адресом192.168.0.200 отправляет пакет с адресом назначения 192.168.0.1:8080, который поступив на ssh-сервер попадает в сокет, открытый процессом sshd;
2. Процесс sshd переписывает адрес и порт назначения с 192.168.0.1:8080 на 127.0.0.1:80 и отправляет и отправляет его по SSH туннелю стороне инициатору сеанса;
3. На хосте процесс ssh смотрит адрес назначения полученного пакета и переписывает адрес отправителя с 192.168.0.200 на адрес своего loopback, затем отправляет его в локальный сокет 127.0.0.1:80, открытый процессом веб-сервера.
Configuring SSH access through firewalls
SSH is one of the few protocols that are frequently permitted through firewalls. Unrestricted outbound SSH is very common, especially in smaller and more technical organizations. Inbound SSH is usually restricted to one or very few servers.
Outbound SSH
Configuring outbound SSH in a firewall is very easy. If there are restrictions on outgoing traffic at all, just create a rule that allows TCP port 22 to go out. That is all. If you want to restrict the destination addresses, you can also limit the rule to only permit access to your organization’s external servers in the cloud, or to a jump server that guards cloud access.
Back-tunneling is a risk
Unrestricted outbound SSH can, however, be risky. The SSH protocol supports tunneling. The basic idea is that it is possible to have the SSH server on an external server listen to connections from anywhere, forward those back into the organization, and then make a connection to some Internal server.
This can be very convenient in some environments. Developers and system administrators frequently use it to open a tunnel that they can use to gain remote access from their home or from their laptop when they are travelling.
However, it generally violates policy and takes control away from firewall administrators and the security team. It can, for example, violate PCI, HIPAA, or NIST SP 800-53. It can be used by hackers and foreign intelligence agencies to leave backdoors into organizations
Inbound SSH access
For inbound access, there are a few practical alternatives:
-
Configure firewall to forward all connections to port 22 to a particular IP address on the internal network or DMZ.
-
Use different ports on the firewall to access different servers.
-
Only allow SSH access after you have logged in using a VPN (Virtual Private Network), typically using the IPsec protocol.
Как сделать forwarding и перенаправить порты
Функция forwarding необходима для двух целей: во-первых, чтобы организовать переброс различных ip-адресов и портов и создания туннелей, а во-вторых, агент forwarding позволяет клиенту переходить между серверами. Начнем со второго предназначения агента forwarding – он нужен, если у вас не один сервер и вы не хотите каждый раз проходить авторизацию заново, а желаете используя один и тот же публичный ключ перемещаться с сервера 1 на сервер 2. Чтобы настроить такой forwarding, вам необходимо изменить настройки файла конфигураций – прописать следующую строку в нем: ForwardAgent yes.
Теперь разберемся с туннелями между хостами и тем, как при помощи forwarding настроить переброс с одного ip-хоста с определенным портом на другой. А сделать это весьма просто. К примеру, если вы хотите настроить 2220 порт для переброса ip-адреса 97.86.77.66 на 10.12.11.13 мы вводим следующую строку: ssh -f -N -R 2222:10.12.11.13:22 username@97.86.77.66. Где буква -f это и есть функция forwarding. Теперь, когда пользователь введет запрос для получения доступа к локальному хосту 97.86.77.66, сработает переброс (forwarding) и он будет перемещен на 2222-й порт 10.12.11.13. Аналогично этому принципу можно настроить forwarding для перебрасывания любого ресурса куда угодно, к примеру, для перенаправления в Сеть.

Что касается целей создания туннелей, они могут быть самыми разнообразными. Поскольку SSH использует шифрование данных, то туннелирование может понадобится для передачи различных зашифрованных файлов, например, IMAP IRC или VNC. Туннелирование позволит вам принимать на сервер различные типы трафика. Кроме того, часто перенаправление портов и IP-адресов используют для обхода плохо настроенных маршрутиризаторов, сетевых анализаторов трафика и прочих ограничителей. Но учитывайте, что после добавления переадресации, возможно, понадобится изменить настройки некоторых программ, через которые вы осуществляете соединение по SSH каналам.
Шаг 3: Предоставление административных привилегий
На втором шаге был создан пользователь remuserbak, но администрировать с ним сервер нельзя, ибо нет у него прав таких! Придется дать ему возможность становится рутом, как говорится с чего начали — тем и закончили.
Чтобы избежать необходимости выходить из системы обычного пользователя и снова входить в систему как учетная запись root, мы можем настроить так называемые привилегии суперпользователя или root для нашей обычной учетной записи. Это позволит нашему обычному пользователю запускать команды с административными привилегиями, помещая слово sudo перед каждой командой.
Чтобы добавить эти привилегии нашему новому пользователю, нам нужно добавить пользователя в группу sudo. По умолчанию пользователям, которые являются членами группы sudo, разрешено использовать команду sudo.
От имени пользователя root выполните команду usermod, чтобы добавить нового пользователя в группу sudo (замените имя пользователя своим новым пользователем:
root@vps:~# usermod -aG sudo remuserbak
Проверим командой id добавился ли пользователь в группу sudo
root@vps:~# id remuserbak uid=1000(remuserbak) gid=1000(remuserbak) groups=1000(remuserbak),27(sudo)
Теперь, когда вы войдя в систему как обычный пользователь remuserbak, можете ввести sudo перед командами, чтобы выполнять действия с привилегиями суперпользователя (root).
Подключение к удаленной системе с вашего локального компьютера
В вашей локальной системе Linux уже должен быть установлен клиент SSH. Если нет, вы всегда можете установить его, используя следующую команду в Ubuntu:
sudo apt install openssh-client
Чтобы подключиться к вашей системе Ubuntu, вам необходимо знать IP-адрес компьютера и использовать команду ssh, например:
ssh username@address
Измените username на своего фактического пользователя в системе и address на IP-адрес вашего сервера Ubuntu.
Если вы не знаете IP-адрес своего компьютера, вы можете ввести ip a в терминале сервера и проверить вывод. У вас должно получиться что-то вроде этого:
Использование «ip a» для поиска IP-адреса
Как видно здесь, мой IP-адрес 192.168.2.54. Давайте попробуем подключиться, используя формат имя username@adress.
ssh omgubuntu@192.168.2.54
При первом подключении к серверу SSH он запросит разрешение на добавление хоста. Введите да и нажмите Enter, чтобы продолжить.
Первое подключение к серверу
Сразу же SSH сообщает вам, что хост был добавлен навсегда, а затем запрашивает пароль, назначенный для имени пользователя. Введите пароль и еще раз нажмите Enter.
Хост добавлен, теперь введите пароль
И вуаля! Вы войдете в свою систему Ubuntu удаленно!

Теперь вы можете работать в терминале удаленной системы в обычном режиме.
Почему это важно?
Аппаратные ключи заметно повышают уровень безопасности любого решения. Вообще говоря, и до релиза OpenSSH 8.2 существовали методы использования аппаратных ключей совместно с SSH. Например, можно использовать сервер PrivacyIdea, хранить приватные SSH-ключи на аппаратном токене, используя PIV или же OpenPGP. Неплохая сводка таких решений доступна на сайте Yubico.
Но в большинстве этих решений нужно было использовать стороннее ПО, а иногда еще и специальным образом настраивать аппаратные ключи. Во многих случаях процесс становился слишком сложным для массового применения.
Новый подход выглядит многообещающе: он поддерживается стандартно самим пакетом OpenSSH и очень напоминает обычную схему работы с SSH-ключами. Никакого дополнительного ПО, сложных конфигураций, преднастройки аппаратных ключей и прочего. Вы берете аппаратный ключ, генерируете SSH-ключ специального типа, добавляете публичный ключ на ваш сервер, как и обычно — и готово! Давайте посмотрим, как это работает в реальной жизни.
Доступ по паролю или ключу
У нас уже есть защищённое соединение, и теперь мы можем вводить пароль. Для этого, после запуска нашей команды или клиента, SSH-сервер присылает в ответ такое:
Это значит, что нам нужно ввести пароль от пользователя с именем login. Пароль вводится каждый раз, когда мы устанавливаем SSH-соединение.
Есть и другой способ доказать серверу, что вы имеете право подключаться к нему: ключи доступа. Если настроить доступ по ключу, то пароль уже не нужен. Главное — нигде не публиковать приватный ключ. О ключах сейчас говорить не будем, сложновато.
Теперь соединение установлено, можно управлять удалённым компьютером, сидя у себя дома. Именно за это SSH и любят админы: лаконичный и понятный (для них) интерфейс, простота работы и полная безопасность при грамотной настройке.