...

Ssh что это за программа

За что админы любят SSH

Представим ситуацию: ваш сайт перестал работать, панель управления хостингом не открывается, а вам нужно всё починить. Или такое: вы работаете в Брянске, ваш заказчик — в Сыктывкаре, и у него сломался интернет-магазин на собственном сервере.

Тут два варианта: можно физически приехать в нужный город, подключить клавиатуру к серверу и исправить всё на месте. А можно подключиться к серверу удалённо по SSH и поисправлять все ошибки, попивая сок у себя в квартале (в Брянске).

SSH — это защищённый протокол, по которому компьютеры могут отправлять друг другу команды и данные. В нашем случае с помощью SSH можно удалённо управлять каким-нибудь компьютером: давать ему команды, исполнять на нём программы и делать что угодно ещё, что позволит нам командная строка. Если удалось связаться с компьютером по SSH, то это как будто вы подключили к удалённому компьютеру свою клавиатуру.

Командная строка

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

Когда вы работаете за компьютером, вы обычно видите окна, кнопки, страницы и всё подобное. Это называется графическим интерфейсом.

Графический интерфейс — это не сами программы. Это лишь способ представления программы. Сама программа — это то, что исполняется внутри компьютера: то, что считает, копирует, обрабатывает и так далее. Есть огромное количество программ без графического интерфейса: например, веб-сервер Apache — это программа. Сервер работает на вашем компьютере, занимает память, выдаёт страницы куда нужно, ведёт свою серверную работу, но у него нет графического интерфейса — нет никакого окошка, на которое вы можете сказать «Это сервер».

Или, например, ваш браузер. Если у вас Chrome, то вы видите окно с веб-страницей. А есть версия Headless Chrome, которая может выплёвывать любые страницы в виде картинок прямо на ваш жёсткий диск. У этого «Хрома» нет графического интерфейса со страницей (но есть небольшой интерфейс для настройки).

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

Командная строка — это текстовый интерфейс программы. Вы вводите в эту строку команду, программа может в ответ что-то вас спросить текстом, вы ей текстом ответите, и программа сделает свою работу. Мы уже сталкивались с командной строкой, когда собирали своё приложение в электроне или объясняли, как устроен интернет:

Бывают и другие интерфейсы программ. Например, может быть голосовой интерфейс: компьютер вас слушает, интерпретирует команды, задаёт вам вопросы голосом.

Может быть интерфейс в виде чата. Вместо того чтобы давать текстовые команды в командной строке, вы пишете команды чат-боту.

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

SSH-соединение

Основной принцип работы такой: SSH-клиент на компьютере соединяется с SSH-сервером, они убеждаются, что каждый именно тот, за кого себя выдаёт, договариваются о шифровании и после этого устанавливают защищённый туннель для передачи команд. Важно понимать, что сервер — это просто такое название для удалённого компьютера. Сервером может быть и домашний ноутбук, и плата на Raspberry Pi.

Запуск SSH-клиента

Если у вас один из вариантов линукса, BSD, UNIX или Мак — поздравляем, SSH-клиент у вас уже есть. Для его запуска достаточно набрать в командной строке что-то подобное:

Здесь login — это имя пользователя, под которым вы хотите зайти на сервер, а 11.22.33.44 — IP-адрес этого сервера. Чаще всего используется 22 порт, но иногда эта настройка может меняться.

Порт — это что-то вроде номера маршрутки, которая идёт по городу. Все привыкли, что если нужно «доехать» до SSH, то садятся на маршрутку номер 22. Но иногда начальник городского транспорта (администратор) может поменять номер, тогда вместо 22-й маршрутки нужно будет садиться, например, на 320-ю.

У Виндоус нет встроенного SSH-клиента, поэтому нужно скачать его отдельно. Чаще всего выбирают PyTTY — SSH-клиент с графической оболочкой, в которой можно настраивать параметры соединения:

Обмен ключами шифрования

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

  • Сервер отправляет клиенту протоколы шифрования, с которыми он умеет работать. Если клиент тоже умеет работать с ними — всё отлично, идём дальше.
  • Сервер и клиент с помощью криптографической магии устанавливают защищённое соединение, которое невозможно взломать или изменить (как они сами думают).
  • Теперь у каждой стороны есть секретный ключ, которым зашифровывается и расшифровывается каждое сообщение.

Если всё прошло штатно, то при самом первом подключении сервер пришлёт в ответ что-то вроде этого:

The authenticity of host ‘11.22.33.44 (11.22.33.44)’ can’t be established.
ECDSA key fingerprint is fd: fd: d4:f9:77:fe: 73:84:e1:55:00:ad: d6:6d: 22:fe.
Are you sure you want to continue connecting (yes/no)?

Здесь сервер спрашивает, точно ли мы хотим установить это соединение. Если да — вводим в ответ yes. Это значит, что мы получили уникальный «отпечаток пальцев» для нашего соединения. Теперь, когда поменяются настройки SSH-сервера или его полностью переустановят, отпечаток уже не совпадёт и клиент будет бить тревогу. Всё для того, чтобы сделать соединения более безопасными в будущем.

Доступ по паролю или ключу

У нас уже есть защищённое соединение, и теперь мы можем вводить пароль. Для этого, после запуска нашей команды или клиента, SSH-сервер присылает в ответ такое:

Это значит, что нам нужно ввести пароль от пользователя с именем login. Пароль вводится каждый раз, когда мы устанавливаем SSH-соединение.

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

Теперь соединение установлено, можно управлять удалённым компьютером, сидя у себя дома. Именно за это SSH и любят админы: лаконичный и понятный (для них) интерфейс, простота работы и полная безопасность при грамотной настройке.

Что можно делать с помощью SSH

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

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

Вот несколько примеров из реальной жизни:

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

В офис вашей компании ворвались бойцы в масках. Пока они идут в серверную, вы набираете команду стереть все жёсткие диски. Команда по SSH долетает до сервера, и вуаля. Господа в масках останутся не при делах.

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

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

У вашей девушки (или парня) сегодня день рождения. Вы подключаетесь к её компьютеру дистанционно, загружаете приложение с поздравлением и удалённо запускаете. Это очень крипово, не делайте так никогда.

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

Получите ИТ-профессию

В «Яндекс Практикуме» можно стать разработчиком, тестировщиком, аналитиком и менеджером цифровых продуктов. Первая часть обучения всегда бесплатная, чтобы попробовать и найти то, что вам по душе. Дальше — программы трудоустройства.

Протокол SSH для чайников: что это и как работает простыми словами

Lorem ipsum dolor

Аббревиатуру SSH встречали многие, но не все понимают, что это такое, как им пользоваться и как он настраивается.

SSH — это Secure Shell (безопасная оболочка) ; это специальный протокол для передачи данных в безопасном режиме. Он очень часто применяется для удаленного управления компьютерами и устройствами по сети.

SSH — что это такое

Протокол SSH-1 начал свою историю в 1995 году. Изначально он имел достаточное количество брешей и проблем, поэтому уже в 1996 году была презентована его следующая версия. SSH-1 и SSH-2 — это два разных протокола, которые не являются совместимыми между собой. На сегодняшний день, когда речь идет о SSH, подразумевается SSH-2. Вторая версия протокола до сих пор работает и за это время претерпела небольшие изменения.

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

На что способен SSH

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

Что нужно, чтобы использовать протокол SSH

  1. SSH-сервер. Именно сервер отвечает за коммуникацию и аутентификацию удаленных компьютеров. Аутентификация на сервере может происходить тремя путями: по IP-адресу клиента, по публичному ключу, по паролю клиента. В качестве SSH-сервера могут выступать следующие программы: OpenSSH, freeSSHd, lsh-server, WinSSHD, MobaSSH и др.
  2. SSH-клиент. Это программное обеспечение , которое нужно для интеграции с SSH-сервером и для выполнения на нем различных действий. Например: взаимодействие с различными файлами, редактирование файлов, контроль процесса функционирования SSH, архивирование файлов, взаимодействие с базами данных. В качестве SSH-клиентов могут выступать: Vinagre, ZOC, lsh-client, SecureCRT, SSHWindows, OpenSSH, Xshell, i-SSH, PuTTY и мн . д р.

Как безопасно применять SSH

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

Что такое протокол SSH на практике

Не всем нужен протокол SSH — это точно. Если вы начинающий веб-мастер с одни м единственным сайтом , т о , скорее всего , применять SSH вам не имеет смысла. Этот протокол начинает служить верой и правдой, когда нужно много файлов передавать между устройствами. Например, вы очень часто обмениваете файлы с виртуальным хостингом по FTP, заливая туда проекты. В этом случае SSH-протокол подойдет как нельзя лучше.

Правда есть один н ю анс : SSH-протокол должен поддерживать хостинг-провайдер, которым вы пользуетесь. Большинство современных хостингов уже поддерживают этот протокол. Если ваш тоже поддерживает, то вы сможете оценить достоинства и скорость SS H п о сравнению с тем же FTP.

Заключение

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

Мы будем очень благодарны

если под понравившемся материалом Вы нажмёте одну из кнопок социальных сетей и поделитесь с друзьями.

SSH для новичков

Программистов, сисадминов, devops’ов, тестировщиков часто объединяет использование некоторых общих технологий. Например, возможность иметь удалённый доступ к серверу пригодилось бы любому из указанной выше анекдотичной компании. Поэтому в этой статье мы рассмотрим основы работы с протоколом SSH на базовом уровня (без генерации ключей, подписей, мам, пап и кредитов). «Продвинутое» использование посмотрим уже отдельно, в следующий раз. Материал подготовил Макс, автор YouTube-канала PyLounge. Поехали!

Введение

SSH (Secure SHell — защищенная оболочка) — сетевой протокол прикладного уровня, предназначенный для безопасного удаленного доступа к различным системам (Linux, Windows, Mac).

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

Эта служба была создана в качестве замены не зашифрованному Telnet и использует криптографические техники, чтобы обеспечить, что всё сообщение между сервером и пользователем было зашифровано.

Чтобы установить SSH-соединение, необходимы два компонента: SSH-сервер и SSH-клиент. Сервер прослушивает определенный порт (по умолчанию это порт 22) и при успешной аутентификации дает доступ пользователю. Все команды, которые используются на SSH-клиенте, отправляются через защищенный канал связи на SSH-сервер, на котором они выполняются и откуда отправляют результат работы обратно клиенту.

SSH-сервер

Устанавливается на управляемой операционной системе и принимает входящие подключения от клиентских машин, проверяя соединение одним из способов:

  • по IP-адресу клиента, что не слишком безопасно из-за риска подмены;
  • по публичному ключу клиента и имени пользователя. Нужно создать приватный (закрытый) и публичный (открытый) ключ. Зашифровав информацию одним ключом, можно расшифровать ее только другим;
  • по паролю клиента, который передается в зашифрованном виде. Это один из наиболее распространенных вариантов. Вводить его нужно при каждом подключении.

Платные и бесплатные SSH-серверы есть для всех распространенных ОС:

  • BSD — OpenSSH;
  • Linux — dropbear, lsh-server, openssh-server;
  • Windows — freeSSHd, copssh, WinSSHD, OpenSSH и т. д.

SSH-клиент

Используется для входа на удаленный сервер и выполнения команд. Через клиент выполняется управление удаленным компьютером.

SSH-клиенты разработаны для всех ОС. Имеют платные и бесплатные версии:

  • Linux/BSD — openssh-client, putty, ssh, Vinagre;
  • Windows — PuTTY, SecureCRT, ShellGuard;
  • Android — connectBot.

Встроенный SSH-клиент Windows, основанный на OpenSSH, предустановлен в ОС, начиная с Windows 10 1809.

Установка OpenSSH на Ubuntu

Установка с помощью менеджера пакетов apt-get:

sudo apt-get install openssh-server

Проверка SELinux

Security Enhanced Linux, или SELinux – это усовершенствованный механизм контроля доступа, встроенный в большинство современных дистрибутивов Linux. Первоначально он был разработан Агентством национальной безопасности США для защиты компьютерных систем от вторжения злоумышленников и взлома. SELinux также может помешать работе с ssh. Поэтому необходимо убедиться, что он отключен, либо отключить его.

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

sudo apt-get install policycoreutils sudo apt-get install net-tools

Проверяем статус SELinux. Состояние должно быть disable .

sestatus

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

Если виртуальная машина использует тип сетевого подключения NAT, то первоначально необходимо настроить проброс портов. Пробросим порт хоста 2222 (или любой свободный) на гостевой порт виртуальной машины номер 22 (порт ssh по умолчанию).

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

Подключение по ssh через PuTTY

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

После этого вводим имя пользователя (пользователь должен существовать в linux. ) и пароль от этого пользователя.

Подключение по ssh через Командную строку Windows (cmd)

Запускаем командную строку сочетанием клавиш Win + R . В открывшемся окне указываем cmd. Нажимаем OK.

В общем видео подключение по ssh имеет вид:

ssh имя_пользователя@ip_адрес_компьютера_к_которому_подключаемся -p порт

Если для подключения используется стандартный порт ssh — 22, то порт можно не указывать.

В открывшемся окне вводим команду:

ssh [email protected] -p 2222

Вводим пароль пользователя. Всё. Вы великолепны!

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

С типом подключения Сетевой мост необходимо выдать статический ip для Linux системы. Дальнейшее подключение будет уже по этому, выданному ip, а не через localhost.

Установка статического ip

Начиная с выпуска Ubuntu 17.10 NetPlan теперь это инструмент настройки сети по умолчанию для управления настройками сети, заменяющий файл конфигурации /etc/network/interfaces , который использовался в предыдущих версиях.

Файлы конфигурации для Netplan находятся в каталоге /etc/netplan и написаны на языке YAML. В этом каталоге вы найдете файлы конфигурации YAML.

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

sudo nano /etc/netplan/*.yaml

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

network: version: 2 renderer: NetworkManager ethernets: enp0s3: dhcp4: false addresses: [10.40.0.224/24] gateway4: 10.40.0.1 nameservers: addresses: [10.2.0.8, 10.2.0.3] 
  • ethernets — указывает на проводное Ethernet подключение;
  • enp0s3 — имя сетевого интерфейса (можно узнать командой ifconfig);
  • dhcp4 — автоматическая выдача ipv4-адреса с помощью службы dhcp (для ipv6 указывать dhcp6);
  • addresses — ip-адрес и маска сети, которые назначаются компьютеру;
  • gateway4 — шлюз по умолчанию;
  • nameservers — список dns-серверов.

Посмотреть настройки можно с хостовой машины на Windows с помощью команды ipconfig /all.

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

sudo netplan apply

Подключение по ssh

Запускаем командную строку сочетанием клавиш Win + R . В открывшемся окне указываем cmd. Нажимаем OK.

В открывшемся окне вводим команду:

ssh [email protected]

Вводим пароль пользователя. Всё. Вы великолепны (2)!

Заключение

Несмотря на высокую защиту протокола, использование стандартного порта значительно повышает риск взлома сервера. Например, это можно сделать при помощи brute-force (атака полным перебором). Порт 22 — открытый, поэтому злоумышленнику нужно только подобрать логин и пароль к серверу. Это сложно, но возможно. Чтобы максимально ограничить доступ к серверу для злоумышленников (настроить брандмауэр, iptables), можно сменить SSH-порты.

Ресурсы, которые использовал

  1. Как включить SSH в Ubuntu 20.04 (Routerus):https://routerus.com/how-to-enable-ssh-on-ubuntu-20-04/
  2. Коротко об SSH / Хабр: https://habr.com/ru/sandbox/166705/
  3. Что такое SSH (блог REG.RU): https://help.reg.ru/support/hosting/dostupy-i-podklyucheniye-panel-upravleniya-ftp-ssh/chto-takoye-ssh

При подготовке материала использовались источники:
https://thecode.media/sshhhh/
https://codernet.ru/articles/drugoe/protokol_ssh_dlya_chajnikov_chto_eto_i_kak_rabotaet_prostyimi_slovami/
https://habr.com/ru/articles/724762/

Оцените статью