Первое знакомство с SSH: понимание шифрования, портов и соединений
Первое знакомство с SSH: понимание шифрования, портов и соединений

Что такое СШХ

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

Пользователи Linux или macOS могут подключиться по SSH к удаленному серверу прямо из окна терминала. Пользователи Windows могут использовать SSH-клиенты, такие как Putty и XShell, для подключения к удаленным серверам. Как показано ниже, это типичное приглашение SSH.

Как работает SSH

Если вы используете Linux или Mac, использовать SSH легко. Если вы используете Windows, вам понадобится SSH-клиент для открытия SSH-соединения, например инструмент подключения SSH-клиента Tabby, который я использовал на рисунке выше.

Откройте терминал и выполните следующие действия:

Команды SSH состоят из трех разных частей:

Язык кода:javascript
копировать
ssh {user}@{host}

SSH Команда предписывает вашей системе включить зашифрованную безопасность. Shell соединять。{user} Представляет учетную запись, к которой осуществляется доступ. Например, мы можем захотеть получить доступ root пользователь,По сути, это синоним системного администратора.,Иметь полное право изменять что-либо в системе.。{host} Относится к компьютеру, к которому мы хотим получить доступ. Это может быть с удаленного компьютера IP адрес (напр. 192.168.0.103) или имя домена (например. www.abc.test)。

Введите приведенную выше команду,Помнить{user}и{host}Замените на свой,Вам будет предложено ввести пароль для запрошенной учетной записи. После ввода пароля,На экране ничего не появится,Но ваш пароль на самом деле передается. После ввода,Нажмите еще раз Enter ключ. Если ваш пароль верен, вы увидите окно подключения к удаленному терминалу.

Узнайте о различных технологиях шифрования

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

  1. Симметричное шифрование
  2. Асимметричное шифрование
  3. Хеширование

Симметричное шифрование

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

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

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

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

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

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

Существует множество симметричных шифров шифрования, включая, помимо прочего, AES (расширенный стандарт шифрования, расширенный стандарт шифрования), CAST128, Blowfish и т. д. Прежде чем установить безопасное соединение, клиент и хост решают, какой шифр использовать, публикуя список поддерживаемых шифров в порядке предпочтения. Из шифров, поддерживаемых клиентом, шифр с наивысшим приоритетом, который появляется в списке хоста, будет использоваться в качестве двустороннего шифра.

Например, если двое Ubuntu 14.04 LTS Машина проходит SSH общение, они будут использовать aes128-ctr в качестве пароля по умолчанию.

Асимметричное шифрование

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

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

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

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

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

Хеширование

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

Генерировать криптографический хеш на основе заданных входных данных легко, но генерировать входные данные на основе хеша невозможно. Это означает, что если клиент имеет правильные входные данные, он может сгенерировать криптографический хэш и проверить правильность введенных данных, сравнив его значение.

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

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

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

Как SSH работает с этими технологиями шифрования

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

По умолчанию SSH существовать TCP[1] порт 22 беги дальше(Хотя это можно попроситьИзменять SSH порт[2])。Хозяин(сервер)существоватьпорт 22 (или любой другой SSH Назначенный порт) для прослушивания входящих соединений. Он открывает правильный путем аутентификации для клиента и существует, когда аутентификация прошла успешно. shell среду для организации защищенных соединений.

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

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

Согласование шифрования сеанса

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

После установления обе стороны используют то, что называется Алгоритм обмена ключами Диффи-Хеллмана[3]создать симметричный ключ。Благодаря этому алгоритму,И клиент, и сервер могут получить общий ключ шифрования.,Этот ключ будет использоваться на протяжении всего сеанса связи.

Вот как алгоритм существования работает на самом базовом уровне:

  1. Клиент и сервер согласуют очень большое простое число.,Конечно, это простое число не имеет общих делителей. Это простое значение также называется начальным значением.
  2. Следующий,Обе стороны договариваются об общем механизме шифрования.,Генерирует другой набор значений, манипулируя начальным значением определенным алгоритмическим способом. Эти механизмы еще называют генераторами шифрования.,Выполняйте обширные операции над начальными значениями. АЕС (Расширенное стандартное шифрование) является примером такого генератора.
  3. Каждая сторона генерирует еще одно простое число. Это простое число используется в качестве секретного закрытого ключа для взаимодействия.
  4. Недавно сгенерированный закрытый ключиобщий номеришифрованиеалгоритм(нравиться AES) используются вместе для вычисления открытого ключа и его передачи на другой компьютер.
  5. Затем,Каждая сторона использует свой личный закрытый ключ, общий открытый ключ другой машины и исходное простое число для создания окончательного общего ключа. Ключ рассчитывается независимо двумя компьютерами,Но существующие обе стороны создадут один и тот же ключ шифрования.
  6. Поскольку обе стороны имеют общий ключ, весь SSH Разговор протекает симметрично шифрование. Один и тот же ключ можно использовать для шифрования и дешифрования информации (читай: симметричная часть шифрования).

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

Подтвердите личность пользователя

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

Хотя пароль был изменен,Но использовать пароли в условиях безопасности существования все же не рекомендуется. Это связано с тем, что многие боты могут просто перебрать простые пароли и пароли по умолчанию.,чтобы получить доступ к вашей учетной записи shell права доступа. Рекомендуется использовать Пара ключей SSH[4]

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

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

Ссылки

[1]

TCP: https://www.hostinger.com/tutorials/tcp-protocol

[2]

Изменять SSH порт: https://www.hostinger.com/tutorials/how-to-change-ssh-port-vps

[3]

Diffie-Hellman Алгоритм обмена ключами: https://en.wikipedia.org/wiki/Diffie%E2%80%93Hellman_key_exchange

[4]

SSH Ключевая пара: https://www.hostinger.com/tutorials/ssh/how-to-set-up-ssh-keys

boy illustration
Неразрушающее увеличение изображений одним щелчком мыши, чтобы сделать их более четкими артефактами искусственного интеллекта, включая руководства по установке и использованию.
boy illustration
Копикодер: этот инструмент отлично работает с Cursor, Bolt и V0! Предоставьте более качественные подсказки для разработки интерфейса (создание навигационного веб-сайта с использованием искусственного интеллекта).
boy illustration
Новый бесплатный RooCline превосходит Cline v3.1? ! Быстрее, умнее и лучше вилка Cline! (Независимое программирование AI, порог 0)
boy illustration
Разработав более 10 проектов с помощью Cursor, я собрал 10 примеров и 60 подсказок.
boy illustration
Я потратил 72 часа на изучение курсорных агентов, и вот неоспоримые факты, которыми я должен поделиться!
boy illustration
Идеальная интеграция Cursor и DeepSeek API
boy illustration
DeepSeek V3 снижает затраты на обучение больших моделей
boy illustration
Артефакт, увеличивающий количество очков: на основе улучшения характеристик препятствия малым целям Yolov8 (SEAM, MultiSEAM).
boy illustration
DeepSeek V3 раскручивался уже три дня. Сегодня я попробовал самопровозглашенную модель «ChatGPT».
boy illustration
Open Devin — инженер-программист искусственного интеллекта с открытым исходным кодом, который меньше программирует и больше создает.
boy illustration
Эксклюзивное оригинальное улучшение YOLOv8: собственная разработка SPPF | SPPF сочетается с воспринимаемой большой сверткой ядра UniRepLK, а свертка с большим ядром + без расширения улучшает восприимчивое поле
boy illustration
Популярное и подробное объяснение DeepSeek-V3: от его появления до преимуществ и сравнения с GPT-4o.
boy illustration
9 основных словесных инструкций по доработке академических работ с помощью ChatGPT, эффективных и практичных, которые стоит собрать
boy illustration
Вызовите deepseek в vscode для реализации программирования с помощью искусственного интеллекта.
boy illustration
Познакомьтесь с принципами сверточных нейронных сетей (CNN) в одной статье (суперподробно)
boy illustration
50,3 тыс. звезд! Immich: автономное решение для резервного копирования фотографий и видео, которое экономит деньги и избавляет от беспокойства.
boy illustration
Cloud Native|Практика: установка Dashbaord для K8s, графика неплохая
boy illustration
Краткий обзор статьи — использование синтетических данных при обучении больших моделей и оптимизации производительности
boy illustration
MiniPerplx: новая поисковая система искусственного интеллекта с открытым исходным кодом, спонсируемая xAI и Vercel.
boy illustration
Конструкция сервиса Synology Drive сочетает проникновение в интрасеть и синхронизацию папок заметок Obsidian в облаке.
boy illustration
Центр конфигурации————Накос
boy illustration
Начинаем с нуля при разработке в облаке Copilot: начать разработку с минимальным использованием кода стало проще
boy illustration
[Серия Docker] Docker создает мультиплатформенные образы: практика архитектуры Arm64
boy illustration
Обновление новых возможностей coze | Я использовал coze для создания апплета помощника по исправлению домашних заданий по математике
boy illustration
Советы по развертыванию Nginx: практическое создание статических веб-сайтов на облачных серверах
boy illustration
Feiniu fnos использует Docker для развертывания личного блокнота Notepad
boy illustration
Сверточная нейронная сеть VGG реализует классификацию изображений Cifar10 — практический опыт Pytorch
boy illustration
Начало работы с EdgeonePages — новым недорогим решением для хостинга веб-сайтов
boy illustration
[Зона легкого облачного игрового сервера] Управление игровыми архивами
boy illustration
Развертывание SpringCloud-проекта на базе Docker и Docker-Compose