Как найти ssh сервер

В наши дни SSH стал методом по умолчанию для доступа к удаленному серверу Linux.

SSH расшифровывается как Secure Shell и представляет собой мощный, эффективный и популярный сетевой протокол, используемый для удаленной связи между двумя компьютерами. И давайте не будем забывать о защищенной части его имени; SSH шифрует весь трафик для предотвращения таких атак, как угон и подслушивание, предлагая различные методы аутентификации и множество вариантов конфигурации.

В этом руководстве для начинающих вы узнаете:  

  • Основная концепция SSH    
  • Настройка SSH-сервера (в системе, к которой вы хотите получить удаленный доступ)    
  • Подключение к удаленному серверу через SSH с клиентской машины (вашего персонального компьютера)

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

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

С сайта https://www.ssh.com/academy/ssh

OpenSSH — один из самых популярных инструментов с открытым исходным кодом, который обеспечивает функциональность SSH в Linux, BSD и Windows.

Для успешной настройки SSH вам необходимо:  

  • Установите компоненты сервера SSH на машине, которая действует как сервер. Это обеспечивается пакетом openssh-server.    
  • Установите клиентский компонент SSH на машину, с которой вы хотите подключиться к удаленному серверу. Это обеспечивается пакетом openssh-client, и с ним предустановлено большинство дистрибутивов Linux и BSD.

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

Как правило, у вас есть выделенная система, работающая в качестве сервера. Например, Raspberry Pi с сервером Ubuntu. Вы включаете SSH на Raspberry Pi, чтобы вы могли контролировать и управлять устройством со своего основного персонального компьютера, используя SSH в терминале.

Обладая этой информацией, давайте посмотрим, как настроить SSH-сервер в Ubuntu.

Настройка SSH-сервера в Ubuntu

Настроить SSH не сложно, для этого нужно всего несколько шагов:

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

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

Шаг 1. Установите необходимые пакеты

Начнем с открытия окна терминала и ввода необходимых команд.

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

sudo apt update && sudo apt upgrade

Пакет, необходимый для запуска SSH-сервера, предоставляется компонентом openssh-server из OpenSSH:

sudo apt install openssh-server

Шаг 2: Проверка статуса сервера

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

service ssh status

Вы также можете использовать команды systemd:

sudo systemctl status ssh

Вы должны увидеть что-то подобное с выделенным словом Active. Нажмите q, чтобы вернуться в командную строку.

Если в вашем случае сервис не работает, вам нужно будет активировать его следующим образом:

sudo systemctl enable --now ssh

Шаг 3. Разрешение SSH через брандмауэр

Ubuntu поставляется с утилитой межсетевого экрана под названием UFW (UncomplicatedFirewall), которая представляет собой интерфейс для iptables, который, в свою очередь, управляет сетевыми правилами. Если брандмауэр активен, он может помешать подключению к вашему SSH-серверу.

Чтобы настроить UFW так, чтобы он разрешал требуемый доступ, вам необходимо выполнить следующую команду:

sudo ufw allow ssh

Статус UFW можно проверить, запустив sudo ufw status.

На данном этапе наш SSH-сервер запущен и просто ожидает соединения от клиента.

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

В вашей локальной системе 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 a» для поиска IP-адреса

Как видно здесь, мой IP-адрес 192.168.2.54. Давайте попробуем подключиться, используя формат имя username@adress.

ssh omgubuntu@192.168.2.54

При первом подключении к серверу SSH он запросит разрешение на добавление хоста. Введите да и нажмите Enter, чтобы продолжить.

Первое подключение к серверу

Первое подключение к серверу

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

Хост добавлен, теперь введите пароль

Хост добавлен, теперь введите пароль

И вуаля! Вы войдете в свою систему Ubuntu удаленно!

Теперь вы можете работать в терминале удаленной системы в обычном режиме.

Закрытие SSH-соединения

Чтобы закрыть соединение, вам просто нужно ввести exit, и оно сразу же закроет его, не запрашивая подтверждения.

Закрытие соединения

Закрытие соединения

Остановка и отключение SSH в Ubuntu

Если вы хотите остановить службу SSH, вам понадобится эта команда:

sudo systemctl stop ssh

Это остановит службу, пока вы ее не перезапустите или пока система не будет перезагружена. Чтобы перезапустить его, введите:

sudo systemctl start ssh

Теперь, если вы хотите отключить его запуск во время загрузки системы, используйте это:

sudo systemctl disable ssh

Это не остановит работу службы во время текущего сеанса, а только загрузку во время запуска. Если вы хотите, чтобы он снова запускался во время загрузки системы, введите:

sudo systemctl enable ssh

Другие клиенты SSH

Инструмент ssh включен в большинство систем * nix, от Linux до macOS, но это не единственные существующие варианты, вот пара клиентов, которые можно использовать из других операционных систем:

  • PuTTY — это бесплатный SSH-клиент для Windows с открытым исходным кодом. Он полон функций и очень прост в использовании. Если вы подключаетесь к своей машине Ubuntu со станции Windows, PuTTY — отличный вариант.    
  • JuiceSSH — потрясающий инструмент для пользователей Android. Если вы в пути и вам нужен мобильный клиент для подключения к вашей системе Ubuntu, я настоятельно рекомендую попробовать JuiceSSH. Он существует уже почти 10 лет, и его можно использовать бесплатно.    
  • И, наконец, Termius доступен для Linux, Windows, macOS, iOS и Android. У него есть бесплатная версия, а также несколько дополнительных опций. Если у вас много серверов и вы работаете с командами, использующими общие соединения, Termius — хороший вариант для вас.

Заключение

С помощью этих инструкций вы можете настроить SSH в качестве серверной службы в системе Ubuntu, чтобы иметь возможность удаленно и безопасно подключаться к вашему компьютеру для работы с командной строкой и выполнения любых необходимых задач.

Удачной удаленной работы!

В этой статье мы создадим виртуальную машину с Ubuntu 18.04 LTS 64-bit и выполним настройки для безопасного взаимодействия с сервером.

SSH (Secure Shell) — протокол с шифрованием для безопасного обмена данными между элементами ИТ-инфраструктуры. Чаще всего SSH используется для управления серверами с операционными системами семейства Linux и различным сетевым оборудованием.

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

В нашем примере используется виртуальный сервер с фиксированной конфигурацией в виде 1 ядра CPU, 1 Гб оперативной памяти, 10 Гб пространства на жестком диске и операционной системой Ubuntu 18.04 LTS 64-bit.

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

После успешного создания сервера, можно запускать консоль и настроить подключение по SSH. В Ubuntu за это отвечает утилита OpenSSH. В статье мы рассмотрим настройку доступа по ключам, настройку firewall, отключение аутентификации по паролю и проделаем некоторые другие вещи.

Как установить OpenSSH

OpenSSH — это бесплатный SSH-сервер, дающий возможность интерактивного управления сервером. Для установки SSH на сервер воспользуемся встроенным в Ubuntu пакетным менеджером apt:

# sudo apt install openssh-server -y

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

Теперь добавим SSH-сервер в автозагрузку. При следующем запуске сервера, операционная система выполнит автоматический запуск SSH-сервера. Как и в случае с другими сервисами systemd позволяет управлять параметрами запуска, автозагрузки и рестарта демона OpenSSH. Включим автозапуск:

# sudo systemctl enable ssh

В результате получим:

Проверим работоспособность утилиты:

# ssh localhost

И убедимся, что всё корректно работает:

Как настроить SSH

Настройка SSH на Ubuntu необходима для улучшения защищенности системы. Например, можно отключить возможность входа от имени пользователя root или изменить порт подключения со стандартного 22 на произвольный. Лучше использовать порты из верхнего диапазона (50000-65000). Напомним, что в стеке протоколов TCP/IP доступно 65536 портов.

Настройка выполняется выполняется в конфигурационном файле. Перед его модификацией, создадим резервную копию.

# sudo cp /etc/ssh/sshd_config
/etc/ssh/sshd_config.factory-defaults

Вот теперь можно менять порт. Все изменения конфигурации SSH выполняются в файле /etc/ssh/sshd_config. Откроем его на редактирование:

# sudo vi /etc/ssh/sshd_config

Раскомментируем строку Port 22 и изменим значение на 55555. Но мы должны вас предостеречь, боты прежде всего сканируют порты с одинаковыми цифрами, поэтому в промышленных средах лучше использовать номер порта с отличными друг от друга цифрами.

Далее нужно отключить возможность входа на сервер учетной записи суперпользователя (root) и добавить возможность входить через ключи. Для этого изменим значения параметров PermitRootLogin на no и PubkeyAuthentication на yes:

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

sudo systemctl restart ssh

Переподключимся от обычной учетной записи и по другому порту:

ssh -p 55555 ansible@95.213.154.235

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

Как создать пару ключей RSA

Еще один способ аутентификации на сервере — пара ключей RSA: открытый и закрытый. Открытый хранится на сервере, к которому будет выполняться подключение, а закрытый на удаленном компьютере (или другом сервере) откуда выполняется подключение.

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

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

# ssh-keygen -t rsa

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

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

Как скопировать открытый ключ на сервер

Чтобы скопировать ключ на удаленный сервер, выполним следующую команду:

# ssh-copy-id -i ~/.ssh/id_rsa.pub antoniusfirst@95.213.154.235

В этом примере 95.213.154.235 — это IP-адрес удаленного сервера. После ввода пароля, ключ копируется папку .ssh домашней директории пользователя.

# ssh antoniusfirst@95.213.154.235

Вывод обеих команд на скриншоте ниже.

Как пройти аутентификацию на сервере через созданный ключ

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

# ssh antoniusfirst@95.213.154.235

Если подключение по SSH будет успешным — все настройки были выполнены корректно.

Как выполнить отключение аутентификации по паролю

Для отключения возможности входа по паролю необходимо в файле /etc/ssh/sshd_config отредактировать значение PasswordAuthentication и присвоить no.

После изменения настроек перезагружаем службу SSH:

# sudo systemctl restart ssh

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

При этом подключение при помощи ключа будет успешным.

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

Как настроить стандартный firewall

В Ubuntu есть встроенный фаервол Netfilter, который может управляться как непосредственно вызовом утилиты iptables с параметрами так и специальной утилитой UFW (Uncomplicated Firewall). Мы разберем оба варианта.

Iptables на нашем демо-стенде уже установлен, но если в вашем дистрибутиве его нет — можно воспользоваться пакетным менеджером apt:

# sudo apt-get install iptables

При работе с iptables можно настроить три типа правил: INPUT — для входящих соединений, OUTPUT — для исходящих и forward для транзитных (используется для маршрутизаторов). Для сервера актуальны первые два.

При обработке пакетов возможно выполнение следующих действий: ACCEPT — разрешить прием пакета, DROP — удалить пакет, REJECT — отклонить пакет и отправил уведомление об отклонении отправителю, LOG — записать пакет в лог и QUEUE — отправить пакет приложению.

В iptables доступны следующие функции управления:

  • A — добавить правило в цепочку;
  • С — проверить все правила;
  • D — удалить правило;
  • I — вставить правило с нужным номером;
  • L — вывести все правила в текущей цепочке;
  • S — вывести все правила;
  • F — очистить все правила;
  • N — создать цепочку;
  • X — удалить цепочку;
  • P — установить действие по умолчанию.

Например, чтобы посмотреть настроенные правила можно выполнить команду

# sudo iptables -L

Теперь попробуем заблокировать все пакеты от узла 10.10.10.10:

# sudo iptables -A INPUT -s 10.10.10.0/24 -j DROP

При помощи комбинаций перечисленных выше опций можно настроить любую требуемую логику работы с сетевыми пакетами.

Если перечисленные выше опции показались сложными, можно упростить задачу настройки фаервола и воспользоваться утилитой ufw. Перед началом работы, установим ее при помощи пакетного менеджера apt:

# sudo apt install ufw -y

После установки можно начинать работать с правилами. Разрешим все исходящие соединения и запретим все входящие:

# sudo ufw default deny incoming
# sudo ufw default allow outgoing

В выводе увидим:

В примерах выше мы меняли порт для доступа по SSH на 55555. Создадим правило для доступа по этому порту:

# sudo ufw allow 55555

В выводе получим:

Теперь включим сам фаервол.

# sudo ufw enable

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

После включения фаервола, проверим его настройки командой:

# sudo ufw status verbose

В выводе увидим:

Дополнительно можно настроить доступ с определенного IP-адреса (или диапазона адресов), на определенный порт.

# sudo ufw allow from 95.213.154.235 to any port 55555

При помощи правил UFW можно также применять правила к определенным сетевым интерфейсам сервера.

Как настройки подключения по SSH влияют на безопасность

В этом разделе разберем основные настройки для повышения уровня безопасности SSH. Все настройки выполняются в уже известном конфигурационном файле /etc/ssh/sshd_config.

Первая настройка — проверка соответствия DNS-имени IP-адресу клиента. За это отвечает параметр UseDNS.

# UseDNS yes

Следующий шаг к безопасности — запрет пустых паролей. Задается в параметре PermitEmptyPasswords.

# PermitEmptyPasswords no

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

# MaxAuthTries 3

Еще один подход к ограничению несанкционированных подключений — задание пользователей и групп, которым разрешен доступ по SSH. Они перечисляются в параметрах AllowUsers и AllowGroups.

# AllowUsers User1, User2, User3
# AllowGroups Group1, Group2, Group3

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

# Login GraceTime 30

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

# ClientAliveInterval 300

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

Нельзя не упомянуть про эффективный инструмент борьбы с попытками аутентификации — утилите fail2ban. Это сервис, который читает лог безопасности и блокирует злоумышленников по IP. Штатно устанавливается при помощи apt:

# sudo apt install fail2ban

После установки появляются два конфигурационных файла: /etc/fail2ban/fail2ban.conf и /etc/fail2ban/jail.conf. Первый отвечает за настройки запуска fail2ban, а второй за настройки защиты конкретных сервисов.

Заключение

Мы рассказали об основных настройках протокола SSH, которые помогут уберечь Ubuntu-сервер от несанкционированного доступа. Особенно важно их использовать при расположении сервера в публичных облаках с публичным IP-адресом. На скриншоте ниже вы видите журнал безопасности системы, на которой мы проводили перечисленные в этой статье настройки. В нем видно, что попытки авторизаций под разными пользователями (root, system и другими) происходят регулярно.

Перечисленных в этой статье настроек достаточно для обеспечения базовой безопасности сервера и предотвращения его вовлечения в бот-сети.

SSH — (Secure Shell) — это протокол удаленного управления компьютером с операционной системой Linux. В основном ssh используется для удаленного управления серверами через терминал. Если вы администратор нескольких серверов или даже продвинутый веб-мастер, то наверное, вы часто сталкиваетесь с необходимостью работать с тем или иным компьютером по ssh. В Linux для этого используется сервер ssh на машине, к которой нужно подключится и клиент, на той из которой подключаются.

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

Базовый синтаксис

Синтаксис команды выглядит следующим образом:

$ ssh [опции] имя пользователя@сервер [команда]

Важно заметить что ssh может работать по двум версиям протокола. Версии 1 и 2. Понятное дело, что версия 2 лучше и поддерживает больше типов шифрования и аутентификации. Больше в этой статье об отличиях протоколов мы говорить не будем и я буду подразумевать что вы используете версию 2.

Теперь давайте рассмотрим самые основные опции команды ssh:

  • f — перевести ssh в фоновый режим;
  • g — разрешить удаленным машинам обращаться к локальным портам;
  • l — имя пользователя в системе;
  • n — перенаправить стандартный вывод в /dev/null;
  • p — порт ssh на удаленной машине;
  • q — не показывать сообщения об ошибках;
  • v — режим отладки;
  • x — отключить перенаправление X11;
  • X — включить перенаправление Х11;
  • C — включить сжатие.

Это далеко не все опции утилиты, остальные выходят за рамки данной статьи. Многие настройки работы ssh можно изменять через конфигурационный файл ~/.ssh/config но здесь мы это тоже подробно рассматривать не будем.

Настройка сервера SSH

Настройки сервера SSH находятся в файле /etc/ssh/sshd_config. Многие из них мы тоже трогать не будем. Рассмотрим только самые интересные. Сначала откройте файл /etc/ssh/sshd.conf

Порт ssh

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

Port 22

Поменяйте значение порта на нужное.

Протокол SSH

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

Protocol 2

И приведите ее к такому виду:

Protocol 2

Рут доступ

По умолчанию Root доступ по ssh разрешен, но такое поведение очень небезопасно, поэтому раскомментируйте строчку:

PermitRootLogin no

Доступ только определенного пользователя к SSH

Мы можем разрешить доступ к ssh только для определенного пользователя или группы. Для этого  добавьте строчки:

AllowUsers User1, User2, User3
AllowGroups Group1, Group2, Group3

Здесь User1 и Group1 — пользователь и группа к которым нужно разрешить доступ.

Выполнение X11 приложений

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

X11Forwarding yes

Основные опции рассмотрели, перед тем как переходить дальше, не забудьте перезагрузить ssh сервер чтобы сохранить изменения:

service sshd restart

Использование SSH

Основная цель этой статьи — показать интересные и полезные способы использования ssh, о которых, возможно, вы не знали. Переходим к самому вкусному — возможности ssh.

Подключение к серверу

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

ssh user@host

Выполнить команду

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

ssh user@host ls

Выполнит команду ls на удаленном сервере и вернет ее вывод в текущий терминал.

Выполнить локальный скрипт

Выполним интерпретатор bash на удаленном сервере и передадим ему наш локальный скрипт с помощью перенаправления ввода Bash:

ssh user@host 'bash -s' < script.sh

Бекап на удаленный сервер и восстановление

Мы можем сохранять бекэп диска сразу на удаленном сервере с помощью ssh. Перенаправим вывод dd с помощью оператора перенаправления |, затем сохраним его на той стороне в файл:

sudo dd if=/dev/sda | ssh user@host 'dd of=sda.img'

Теперь чтобы восстановить состояние диска из сделанной копии выполните:

ssh user@host 'dd if=sda.img' | dd of=/dev/sda

Здесь и выше /dev/sda имя файла вашего жесткого диска.

Аутентификация без пароля

Использование ssh пароля для входа на сервер не только неудобно но и небезопасно, потому что этот пароль в любой момент может быть подобран. Самый надежный и часто используемый способ аутентификации — с помощью пары ключей RSA. Секретный ключ хранится на компьютере, а публичный используется на сервере для удостоверения пользователя.

Настроить такое поведение очень легко. Сначала создайте ключ командой:

ssh-keygen -t rsa

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

Затем отправляем ключ на сервер:

ssh-copy-id -i ~/.ssh/id_rsa.pub user@host

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

Взять пароль из локального файла

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

ssh user@host < local_file.txt

 Изменить приветствие SSH

При входе по ssh может выводиться приветствие, изменить его очень легко. За это отвечает файл /etc/issue. Просто откройте этот файл и введите нужный текст:

vi /etc/issue

Welcome!

Смотрим неудачные попытки входа SSH

Хотите посмотреть были ли попытки неудачного доступа по ssh к вашему серверу и с каких IP адресов? Запросто, все запросы логируются в файл /var/log/secure, отфильтруем только нужные данные командой:

cat /var/log/secure | grep "Failed password for"

Передача файлов по SSH

Кроме выполнения команд, можно копировать файлы по ssh. Для этого используется утилита scp. Просто укажите файл, который нужно передать, удаленный сервер и папку на сервере, вот:

$ scp /адрес/локального/файла пользователь@хост:адрес/папки

Например:

scp ~/test.txt user@host:documents

Кроме утилиты scp, передача файлов ssh может быть выполнена более хитрым способом. Прочитаем файл и с помощью cat, передадим, а там сохраним поток в файл:

cat localfile | ssh user@host "cat > remotefile"

Или так:

ssh user@host "cat > remotefile" < localfile

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

tar czf - /home/user/file | ssh user@host tar -xvzf -C /home/remoteuser/

Такое копирование файлов ssh позволяет отправлять сразу целые папки.

Запуск графических приложений по ssh

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

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

ssh -XC user@remotehost "eclipse"

Как вы уже видели опция X разрешает перенаправление X11 на стороне клиента, а С — сжатие данных.

Завершение сессии SSH

Если вы использовали SSH с нестабильным интернетом, когда соединение время от времени рвется, то вам уже, наверное, надоело закрывать терминал, потому что иначе, на первый взгляд, сеанс никак не прекратить. Когда соединение с удаленным сервером разорвано вы не можете ввести никакую команду и сочетания клавиш Ctrl+C, Ctrl+Z, Ctrl+D не работают. И не будут работать поскольку клиент пытается отправить эти команды на сервер. Но есть решение — Escape последовательности. Чтобы активировать их поддержку добавьте строку:

EscapeChar ~

В файл /etc/ssh/ssh_config. Теперь, чтобы разорвать SSH соединение достаточно нажать Enter и набрать:

~.

Другие управляющие символы можно узнать нажав:

~?

Туннели SSH

С помощью SSH туннелей вы можете пробросить порт с удалённого сервера на локальную машину. Это очень полезно, в первую очередь, для разработчиков. Для того чтобы пробросить порт с удалённой машины локальной используйте опцию -L и такой синтаксис:

$ ssh -L локальный_порт:удаленный_адрес:удаленный_порт пользователь@сервер

Например, сделаем удалённую базу данных доступной локально на порту 5555. Для этого выполните подставив свои значения:

$ ssh -N -L 5555:127.0.0.1:3306 root@losst-1

Опция -N сообщает, что команду на удалённой машине выполнять не нужно. Локальный порт — 5555, поскольку сервер баз данных слушает на локальном интерфейсе удалённой машины, то и здесь надо указывать адрес 127.0.0.1. А порт MySQL по умолчанию 3306. Если же вы хотите чтобы локальный сервис был доступен на удалённой машине, то следует использовать опцию -R:

$ ssh -N -R 5555:127.0.0.1:3306 root@losst-1

Теперь локальная база данных на порту 3306 будет доступна на удалённом сервере при обращении к порту 5555.

Выводы

Теперь вы знаете как пользоваться SSH. Как видите, технология SSH позволяет сделать намного больше чем можно предположить с первого взгляда, и это еще далеко не все. Какие интересные возможности SSH используете вы при повседневной работе? Поделитесь в комментариях!

Обнаружили ошибку в тексте? Сообщите мне об этом. Выделите текст с ошибкой и нажмите Ctrl+Enter.

Blog

Secure Shell (SSH) — это сетевой протокол, который используется для безопасного соединения между клиентом и сервером. Каждое взаимодействие шифруется. Это позволяет безопасно управлять хостом, передавать файлы и решать другие задачи.

Например, вы заказали сервер на cloud.timeweb.com и хотите управлять им в том числе со своего ноутбука. Для этого достаточно настроить доступ по SSH. Через защищенное соединение вы сможете выполнять все необходимые действия по администрированию.

Установка И Настройка Ssh На Сервере С Ubuntu (1)

Для успешной настройки вам необходимо:

  1. Разместить компоненты SSH-сервера на машине, которая действует как сервер. Это обеспечивается пакетом openssh-server.
  2. Иметь клиентский компонент SSH на компьютере, с которого вы хотите подключиться к удаленному хосту. Для этого обычно используют пакет openssh-client, который предустановлен в большинстве дистрибутивов Linux и BSD. На Windows для решения подобных задач требуется установка дополнительных утилит. Одно из самых популярных решений — PuTTY.

По умолчанию удаленный доступ через защищенный сетевой протокол запрещен. Однако установка SSH в Ubuntu выполняется очень просто.

Запустите консоль сервера, на котором требуется настройка SSH в Ubuntu. 

Обновите пакетный менеджер. 

sudo apt update

Установите необходимое ПО:

sudo apt install openssh-server

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

OpenSSH Ubuntu запускается автоматически после установки. Но вы можете проверить его статус, используя команду:

sudo systemctl status ssh

В выводе должно быть указано, что служба запущена и разрешена для запуска при загрузке системы:

ssh.service - OpenBSD Secure Shell server
    Loaded: loaded (/lib/systemd/system/ssh.service; enabled; vendor preset: enabled)
    Active: active (running) since Mon 2022-03-21 12:34:00 CEST; 1m ago
...

Это значит, что команда Install SSH Ubuntu выполнена успешно. Чтобы вернуться в командную строку, нажмите клавишу q.

Если служба не активна, запустите ее вручную с помощью команды:

sudo systemctl enable --now ssh

Ubuntu поставляется с инструментом настройки брандмауэра под названием UFW. Если в вашей системе включен брандмауэр, обязательно откройте порт SSH:

sudo ufw allow ssh

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

Создание пары ключей

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

Посмотрим, как создавать ключи в разных ОС. Начнем с Ubuntu.

Чтобы сгенерировать новую пару 2048-битных ключей RSA, откройте терминал и выполните приведенную ниже команду:

ssh-keygen -t rsa

Появится вопрос, куда сохранить ключи. Если вы нажмете Enter, по умолчанию пара ключей будет сохранена в подкаталоге .ssh папки home. Вы также можете указать альтернативный путь, где вы хотите сохранить пару ключей. Но рекомендуется использовать каталог по умолчанию. Это заметно упрощает дальнейшее управление.

Если вы уже создали пару ключей на клиентском компьютере, вам будет предложено перезаписать ее. Выбор полностью зависит от вас, но будьте осторожны. Если вы выберете перезапись, то не сможете использовать предыдущую пару ключей для входа на сервер. Она будет удалена. Исправить конфликт легко — достаточно указывать для каждой новой пары уникальное имя. Папка для хранения при этом может оставаться одной и той же.

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

Чтобы убедиться в том, что ключи созданы, выполните команду:

ls -l ~/.ssh/id_*.pub 

В терминале отобразится список ключей.

Аналогичным образом можно сгенерировать пару на macOS

Если вы пользуетесь Windows, то проще скачать набор утилит PuTTY. В нем есть приложение PuTTYgen. Чтобы создать с его помощью пару ключей, достаточно провести мышкой. В PuTTYgen тоже можно выбрать папку для хранения ключей и добавить парольную фразу для максимальной защиты.

Добавление ключа на сервер

Закрытый ключ хранится на компьютере. Его нельзя никому передавать. А вот открытую часть необходимо перенести на сервер.

Если у вас есть доступ к хосту по паролю, можно перенести открытый ключ с помощью ssh-copy-id. Пример команды:

ssh-copy-id timeweb@192.168.18.76 

Вместо ‘timeweb’ введите свое имя пользователя, вместо ‘192.168.18.76’ — IP-адрес сервера. В ответ появится запрос пароля. Введите его, после чего открытая часть отправится на хост.

Чтобы подключиться с помощью ключей, выполните команду:

ssh timeweb@192.168.18.76. 

Вместо ‘timeweb’ введите свое имя пользователя, вместо ‘192.168.18.76’ — IP-адрес сервера. Если вы не установили парольную фразу, вы можете войти в систему без дополнительной аутентификации. Система защиты проверит открытую и закрытую части ключа и при совпадении установит соединение.

Изменение конфигурации

Настройка Ubuntu Server выполняется через файл /etc/ssh/sshd_config. Но прежде чем вносить в него изменения, сделайте резервную копию. Это убережет вас от потери времени на переустановку, если вдруг совершите ошибку.

Чтобы сделать копию, выполните команду:

sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.factory-defaults

В /etc/ssh/sshd_config.factory-defaults сохранятся стандартные параметры. Вы же будете редактировать файл /etc/ssh/sshd_config.

Отключение аутентификации по паролю

Аутентификация по паролю на SSH Server Ubuntu — это неплохо. Но создание длинного и сложного пароля также может подтолкнуть вас к его незащищенному хранению. Использование ключей шифрования для аутентификации соединения является более безопасной альтернативой. В таком случае пароль может оказаться ненужным. В целях повышения безопасности рекомендуется его отключать.

Прежде чем продолжить, имейте в виду следующее:

  • Отключение аутентификации по паролю увеличивает вероятность того, что вы будете заблокированы на своем сервере.
  • Вы можете быть заблокированы, если потеряете свой закрытый ключ или сломаете файл ~/.authorized_keys .
  • Если вы заблокированы, вы больше не сможете получить доступ к файлам любых приложений.

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

Чтобы отключить аутентификацию по паролю, подключитесь к серверу с правами root и отредактируйте файл sshd_config. Откройте его и измените параметр PasswordAuthentication. Вместо ‘Yes’ установите значение ‘No’. 

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

sudo systemctl restart sshd

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

Отключение доступа для root

Чтобы улучшить безопасность в вашей удаленной системе Ubuntu, рассмотрите возможность отключения входа пользователя root по ssh.

В Ubuntu на удаленном хосте отредактируйте файл конфигурации и установите параметр, чтобы отключить root-доступ через SSH.

Откройте файл Ubuntu SSH config для редактирования:

sudo vi /etc/ssh/sshd_config

Измените значение PermitRootLogin на ‘No’.

Существует также возможность разрешить аутентификацию пользователя root с помощью любого другого разрешенного механизма, кроме пароля. Для этого установите параметру PermitRootLogin значение ‘prohibit-password’.

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

Чтобы применить обновленную конфигурацию sshd permitrootlogin, перезапустите службу:

sudo systemctl restart sshd

Изменение стандартного порта

По умолчанию Open Server Ubuntu использует 22 порт. Чтобы повысить безопасность, вы можете установить любое другое значение. Рекомендуется использовать порты из верхнего диапазона — от 50000 до 65000. Желательно подбирать номера, в которых все цифры отличаются, например 56713.

Откройте файл конфигурации:

sudo vi /etc/ssh/sshd_config

Раскомментируйте строку ‘Port 22’. Вместо 22 укажите другой номер — например, ‘Port 56713’. Сохраните изменения и закройте файл.

Чтобы применить конфигурацию, перезапустите службу:

sudo systemctl restart sshd

После успешного перезапуска убедитесь, что теперь подключение проходит по другому порту:

ssh -p 56713 user@ip_server

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

Настройка туннелирования

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

Есть три типа туннелирования (переадресации):

  • локальное,
  • удаленное,
  • динамическое.

Для настройки некоторых типов придется редактировать файл configure SSH.

Локальная переадресация

Это переадресация порта с клиентского компьютера на удаленный. Затем соединение перенаправляется на другой порт целевого компьютера.

SSH-клиент проверяет наличие соединения на заданном порту. Когда он получает запрос на подключение, то туннелирует его с заданным портом на удаленном хосте. Затем хост подключается к другому целевому компьютеру через настроенный порт.

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

Для локальной переадресации используется аргумент -L. Пример команды:

ssh timeweb@server.example -L 8080:server1.example:3000 

Теперь откройте браузер на локальном компьютере. Вы можете использовать localhost:8080 для доступа к удаленному приложению вместо доступа к нему с использованием адреса server.example:3000.

Удаленная переадресация

Удаленная переадресация позволяет подключаться к локальному компьютеру с удаленного. SSH по умолчанию не поддерживает перенаправление удаленных портов. Поэтому вам нужно включить его в файле конфигурации SSH. Для этого потребуется дополнительная настройка сервера Ubuntu. 

Откройте файл конфигурации:

sudo vi /etc/ssh/sshd_config 

Установите для параметра GatewayPorts значение ‘Yes’.

Сохраните изменения и перезапустите службу:

sudo systemctl restart sshd

Для настройки переадресации используйте аргумент -R. Пример команды:

ssh -R 8080:127.0.0.1:3000 -N -f user@remote.host 

После выполнения этой команды хост будет прослушивать порт 8080 и перенаправлять весь трафик на порт 3000, который открыт на локальном компьютере.

Удаленное перенаправление в основном используется для предоставления доступа кому-то извне ко внутренней службе.

Динамическая переадресация

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

Динамическое туннелирование создает сокет на локальном компьютере. Он работает как прокси-сервер SOCKS. Вы также можете сказать, что ваш локальный компьютер используется в качестве прокси-сервера SOCKS и по умолчанию прослушивает порт 1080. Когда хост подключается к этому порту, он перенаправляется на удаленную машину, затем — на динамическую машину через динамический порт.

Для настройки динамического туннелирования используется аргумент SSH -D. Пример команды:

ssh -D 9090 -N -f user@remote.host

Как только туннелирование установлено, вы можете настроить свое приложение для его использования — например, добавить прокси в браузер. Переадресация должна быть настроена отдельно для каждого приложения, для которого вы хотите туннелировать трафик.

Отключение SSH

Чтобы отключить openssh server, остановите службу SSH, выполнив команду:

sudo systemctl disable --now ssh

Запустить службу обратно можно командой:

sudo systemctl enable --now ssh

Команда Enable SSH в Ubuntu не переустанавливает ПО, так что ничего заново настраивать не придется. Она просто включает установленную и настроенную ранее службу.

Заключение

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

Подключение по SSH в Ubuntu — распространенная задача, так что эти знания точно вам пригодятся. Если не в разработке и администрировании, то в личных целях. Например, для установки безопасного соединения между разными устройствами в локальной сети.

SSH-протокол (англ. Secure Shell ) используется для безопасного удалённого управления операционной системой. По SSH можно подключиться к любому серверу с операционной системой семейства Linux.

Если на вашем сервере установлена ОС Windows Server — используйте подключение по RDP.

  • Где найти доступы к серверу
  • Как подключиться к серверу по SSH с компьютера на ОС Windows
  • Как подключиться к серверу по SSH с компьютера на Linux/MacOS

Где найти доступы к серверу

Для подключения по SSH потребуется указать IP-адрес, пароль и логин администратора сервера. Эти данные можно найти на почте, привязанной к аккаунту (после активации VDS приходит письмо с доступами).

Как подключиться по SSH с компьютера на ОС Windows

Если на вашем компьютере установлена ОС Windows, а на сервере — UNIX-подобная система (например, Ubuntu, Debian, CentOS и др.), то для установки SSH-соединения можно использовать PuTTY. Это бесплатная программа под Windows состоит из одного запускаемого файла и не требует установки.

Чтобы установить соединение при помощи PuTTY, необходимо проделать следующие действия:

0. Скачайте нужную версию PuTTY по ссылке.
1. Запустите файл putty.exe. Откроется окно программы:

По умолчанию никаких настроек программы менять не нужно. Достаточно убедиться, что указан порт Port 22 и тип соединения Connection type — SSH.

2. В поле Host Name (or IP address) введите IP-адрес сервера. Нажмите кнопку Open.

Может появиться предупреждение системы безопасности PuTTY — оно срабатывает при подключении к новому серверу.  Нажмите Да — и соединение продолжится.

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

4. В следующей строке введите пароль пользователя. При вводе пароля символы в командной строке не отображаются: можно набрать пароль вслепую или вставить кликом правой кнопки мыши, предварительно скопировав (Ctrl+C) его из письма с доступами. После ввода нажмите клавишу Enter. Если имя пользователя или пароль указаны неправильно, выведется ошибка «Access denied». В случае успешного подключения откроется командная строка виртуального сервера.

Как подключиться к серверу по SSH с компьютера на Linux/MacOS

Подключиться по SSH к виртуальному серверу можно через терминал — в обоих случаях это приложение предустановлено.

В операционных системах семейства Linux (Ubuntu и др.) его можно открыть сочетанием клавиш Ctrl+Alt+T.

В MacOS приложение Терминал можно найти через Spotlight (иконка поиска в правом верхнем углу экрана).

Подключиться к виртуальному серверу по SSH можно одной командой: 

ssh username@ip_adress

где вместо username нужно указать логин пользователя, вместо ip-adress — IP-адрес сервера, к которому вы подключаетесь. Если на сервере используется нестандартный порт SSH, команда изменится:

ssh username@ip_adress -p 22

где 22 — порт, по которому будет произведено подключение по SSH.

После ввода команды система запросит подтверждение подключения (необходимо ввести yes и нажать Enter) и пароль пользователя. После ввода нажмите клавишу Enter — откроется SSH-соединение:

Этот материал был полезен?

Понравилась статья? Поделить с друзьями:
  • Как найти название товара по фотографии
  • Как найти сторону треугодьника
  • Как найти парня привлечь внимание
  • Как найти работает человек или нет
  • Как найти потерянную зарядку от телефона