Как узнать версию openssh на linux
Доступен ряд клиентов SSH, как бесплатных, так и коммерческих, причем OpenSSH является наиболее широко используемым клиентом. Он доступен на всех основных платформах, включая Linux, OpenBSD, Windows и macOS.
В этой статье объясняется, как использовать клиент командной строки OpenSSH ( ssh ) для входа на удаленный компьютер и выполнения команд или выполнения других операций.
Установка клиента OpenSSH
Клиентская программа OpenSSH называется ssh и может быть запущена с терминала. Клиентский пакет OpenSSH также предоставляет другие утилиты SSH, такие как scp и sftp , которые устанавливаются вместе с командой ssh .
Установка клиента OpenSSH в Linux
Клиент OpenSSH предустановлен в большинстве дистрибутивов Linux по умолчанию. Если в вашей системе не установлен клиент ssh, вы можете установить его с помощью диспетчера пакетов распространения.
Установка OpenSSH в Ubuntu и Debian
Установка OpenSSH на CentOS и Fedora
Установка клиента OpenSSH в Windows 10
Большинство пользователей Windows используют Putty для подключения к удаленному компьютеру через SSH. Однако последние версии Windows 10 включают клиент и сервер OpenSSH. Оба пакета можно установить через графический интерфейс или PowerShell.
Чтобы узнать точное имя пакета OpenSSH, введите следующую команду:
Команда должна вернуть что-то вроде этого:
Как только вы узнаете имя пакета, установите его, запустив:
В случае успеха результат будет выглядеть примерно так:
Установка клиента OpenSSH на macOS
macOS поставляется с установленным по умолчанию клиентом OpenSSH.
Как использовать команду ssh
Следующие требования должны быть выполнены, чтобы иметь возможность войти на удаленный компьютер через SSH:
- На удаленном компьютере должен быть запущен SSH-сервер.
- Порт SSH должен быть открыт в брандмауэре удаленного компьютера.
- Вы должны знать имя пользователя и пароль удаленной учетной записи. Учетная запись должна иметь соответствующие права для удаленного входа в систему.
Основной синтаксис команды ssh следующий:
Чтобы использовать команду ssh , откройте свой терминал или PowerShell и введите ssh а затем имя удаленного хоста:
У каждого хоста есть уникальный отпечаток, который хранится в файле
Введите yes чтобы сохранить удаленный отпечаток пальца, и вам будет предложено ввести пароль.
После ввода пароля вы войдете в удаленную машину.
Если имя пользователя не указано, команда ssh использует текущее имя для входа в систему.
Чтобы войти в систему как другой пользователь, укажите имя пользователя и хост в следующем формате:
Имя пользователя также можно указать с помощью опции -l :
По умолчанию, когда порт не указан, клиент SSH будет пытаться подключиться к удаленному серверу через порт 22. На некоторых серверах администраторы изменяют порт SSH по умолчанию, чтобы добавить дополнительный уровень безопасности к серверу, уменьшая риск автоматические атаки.
Чтобы подключиться к порту, -p от порта по умолчанию, используйте параметр -p чтобы указать порт:
Чтобы повысить уровень детализации, используйте -vv или -vvv .
Команда ssh принимает ряд параметров.
Для получения полного списка всех параметров прочтите страницу руководства по ssh , набрав в терминале man ssh .
Файл конфигурации SSH
Если вы подключаетесь к нескольким удаленным системам через SSH на ежедневной основе, вы обнаружите, что запоминание всех удаленных IP-адресов, различных имен пользователей, нестандартных портов и различных параметров командной строки является трудным, если не невозможным.
Клиент OpenSSH считывает параметры, заданные в файле конфигурации для каждого пользователя (
/.ssh/config ). В этом файле вы можете хранить различные параметры SSH для каждой удаленной машины, к которой вы подключаетесь.
Пример конфигурации SSH показан ниже:
Когда вы вызываете ssh-клиент, набирая ssh dev , команда считывает файл
/.ssh/config и использует данные соединения, указанные для хоста dev. В этом примере ssh dev эквивалентен следующему:
Дополнительные сведения см. В статье о файле конфигурации SSH .
Аутентификация открытого ключа
Протокол SSH поддерживает различные механизмы аутентификации.
Механизм аутентификации на основе открытого ключа позволяет вам войти на удаленный сервер, не вводя пароль .
Этот метод работает путем создания пары криптографических ключей, которые используются для аутентификации. Закрытый ключ хранится на клиентском устройстве, а открытый ключ передается на каждый удаленный сервер, на который вы хотите войти. Удаленный сервер должен быть настроен на прием аутентификации по ключу.
Если у вас еще нет пары ключей SSH на вашем локальном компьютере, вы можете создать ее, набрав:
Вам будет предложено ввести безопасную парольную фразу. Если вы хотите использовать кодовую фразу, решать вам.
Когда у вас есть пара ключей, скопируйте открытый ключ на удаленный сервер:
Введите пароль удаленного пользователя, и открытый ключ будет добавлен в файл authorized_keys удаленного пользователя.
После загрузки ключа вы можете войти на удаленный сервер без запроса пароля.
Установив аутентификацию на основе ключей, вы можете упростить процесс входа в систему и повысить общую безопасность сервера.
Перенаправление порта
Существует три типа переадресации портов SSH:
Перенаправление локального порта
Чтобы создать переадресацию локального порта, передайте параметр -L клиенту ssh :
Параметр -f указывает команде ssh работать в фоновом режиме, а -N не выполнять удаленную команду.
Перенаправление удаленного порта
Перенаправление удаленного порта противоположно перенаправлению локального порта. Он перенаправляет порт с хоста сервера на хост клиента, а затем на порт хоста назначения.
Параметр -L указывает ssh создать переадресацию удаленного порта:
Динамическая переадресация портов
Динамическая переадресация портов создает прокси-сервер SOCKS, который обеспечивает связь через диапазон портов.
Чтобы создать динамическую переадресацию портов (SOCKS), передайте параметр -D клиенту ssh:
Более подробную информацию и пошаговую инструкцию смотрите в статье Как настроить SSH-туннелирование (перенаправление портов) .
Выводы
Чтобы подключиться к удаленному серверу через SSH, используйте команду ssh за которой следует имя удаленного пользователя и имя хоста ( ssh username@hostname ).
Знание того, как использовать команду ssh необходимо для управления удаленными серверами.
Если выбрать yes то в файл
/.ssh/known_hosts добавится похожая строка:
|1| abcdef+abcdefghijklmnopqrst=|abcdefghijklmnopqrstuvwxyz1= ssh-rsa abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrst/abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz12345/abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzB1234567
Обычно файл known_hosts имеет следующий формат (записи идут через пробел)
Это хэш от имени сервера.
Здесь через пробел записаны три элемента: хэш от имени сервера, название используемого ассиметричного алгоритма и публичный ключ сервера. Разберём их по очереди.
Сгенерировать пару ключей
Первый шаг - это генерация пары ключей. Обычно это делается на клиентской машине. Например, на вашем ноутбуке.
ssh-keygen -b 4096
sudo ssh-keygen -b 4096
Нужно придумать имя ключа.
Я назову ключ andrei-key101 а сохранять буду в текущую директорию.
Нужно два раза ввести пароль. Если он вам нужен. Обычно нет.
Ключи готовы. Я сохранил их в текущую директорию поэтому увижу их сделав ls
Важно помнить, что если вы генерируете ключ для другого пользователя нужно позаботиться о правильных правах доступа к этому ключу.
.pub ключ отправляйте на удалённую машину
приватный ключ храните на своём клиенте
Передать ключ на удалённый хост
После того, как ключи созданы нужно передать .pub ключ на удалённый хост.
Сделать это можно несколькими способами начнём с утилиты ssh-copy-id
ssh-copy-id
Я предпочитаю использовать с флагом -i и задавать путь до нужного ключа
sudo ssh-copy-id -i
Введите yes
Теперь на хосте 192.168.0.2 в файле /home/andrei/.ssh/authorized_keys появилась новая запись вида
Знак … заменяет длинные последовательности случайных символов для экономии места.
Проверить ключ можно командой
Если вы не задавали пароль для ключа, то попадёте на удалённый хост без лишних движений
Last login: Sun Jan 10 16:48:27 2021 from 192.168.0.1
Узнать версию OpenSSH в Linux
Чтобы узнать версию OpenSSH в вашем дистрибутиве Linux выполните
OpenSSH_7.4p1, OpenSSL 1.0.2k-fips 26 Jan 2017
Выполнить команду из скрипта на удалённом компьютере
Если подключение по ssh происходим из bash-скрипта , и при этом нужно ещё выполнить ряд команд после подключения - достаточно перечислить эти команды через точку с запятой
Если нужно выполнить команду, требующую sudo попробуйте флаг -t
known_hosts
Список известных хостов находится в файле known_hosts
Обычно файл known_hosts имеет следующий формат (записи идут через пробел) ( подробнее )
Примеры алгоритмов: ssh-rsa, ssh-dss, ssh-ed25519, ecdsa-sha2-nistp256 …
|1| abcdef+abcdefghijklmnopqrst=|abcdefghijklmnopqrstuvwxyz1= ssh-rsa abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrst/abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz12345/abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzB1234567
Это хэш от имени сервера.
Это алгоритм шифрования
Это публичный ключ хоста
Создать SSH туннель
Туннели обычно создают для перенаправления траффика. SSH tunnel это то же самое что и SSH port forwarding.
На удалённом хосте у вас есть пользователь с именем andrei и вы знаете его пароль.
Сперва нужно определиться с портами на локальном хосте и на удалённом.
Предположим, вы выбрали 9119 для локального и 9200 для удаленного хостов.
То есть вы хотите, чтобы всё, что идёт на localhost:9119 было перенаправлено на 192.168.0.2 : 9200
ssh -L 9119: 192.168.0.2 : 9200 [email protected]
Проверьте ip выполнив
Если вам нужен туннель с поддержкой графического интерфейса X Window System используйте флаг -X
ssh -X -L 9119: 192.168.0.2 : 9200 [email protected]
Демонстрация
Туннель создан, не закрывайте терминал. Откройте два новых терминала или две новые вкладки в старом.
У вас два пустых терминала, оба на локальном хосте. Назовём их 1 и 2.
Из терминала 2 подключимся к удалённому хосту 192.168.0.2 по ssh и будем слушать на порту 9200 с помощью nmap
ssh [email protected]
nmap -l 9200
nmap localhost 9119
Введём любой текст
Откройте терминал 2 там дожен появиться тот же текст
Список всех открытых SSH туннелей
Чтобы получить список туннелей открытых именно ssh выполните
ssh 14695 andrei 3u IPv4 230080 0t0 TCP 192.168.0.1:46356->192.168.0.2:ssh (ESTABLISHED) ssh 14695 andrei 4u IPv6 230103 0t0 TCP [::1]:9119 (LISTEN) ssh 14695 andrei 5u IPv4 230104 0t0 TCP 127.0.0.1:9119 (LISTEN)
Вывод этой команды при практически идентичных условиях почему-то разный.
Ниже пример второго варианта. Если вы знаете почему так получается - напишите в комментариях.
ssh 15151 andrei 3u IPv4 239364 0t0 TCP 192.168.0.1:46464->192.168.0.2:ssh (ESTABLISHED) ssh 15151 andrei 4u IPv6 239380 0t0 TCP [::1]:mxit (LISTEN) ssh 15151 andrei 5u IPv4 239381 0t0 TCP 127.0.0.1:mxit (LISTEN) ssh 15151 andrei 9u IPv6 239428 0t0 TCP [::1]:mxit->[::1]:54306 (ESTABLISHED)
Закрыть все SSH туннели
Чтобы закрыть всё, что связано с ssh можно выполнить
sudo killall ssh sshd
Этот метод хорош только если вы работаете один, например на какой-то виртуальной машине.
Запустить SSH в фоновом режиме
Существует несколько способов запустить ssh соединение в фоновом режиме - то есть освободим текущий терминал.
-L, screen, tmux, nohup
Мне запустить ssh фоном из скрипта помог nohup, поэтому начнём с него
nohup ssh user@host "cd scripts;python3 my_script.py $ARG1 $ARG2; exit" &
Для чего это было нужно: Python скрипт сначала открывал одно ssh соединение из subprocess там выполнялась команда для запуска мониторинга потребления памяти и больше от этого соединения ничего было не нужно, зато необходимо было выполнять новые соединения с нагрузкой из другого скрипта.
Чтобы уйдя из первого подключения не оборвать мониторинг потребления памяти перед ssh нужно было добавить nohup, а в самом конце поставить &
SSH_MSG_USERAUTH_BANNER
Клиенту, подключившемуся к ssh серверу можно показать баннер SSH_MSG_USERAUTH_BANNER
И отредактируйте файл добавив свой баннер
Откройте sshd_config и укажите путь до баннера
Этот баннер будет показан ДО авторизации, то есть во время ввода пароля
Чтобы создать баннер, который будет показан после успешного входа выполните
После редактирования файлов перезапустите sshd
sudo systemctl restart sshd.service
Конвертация сертификатов
Рассмотрим простой пример: вы достали из базы данных сертификат MIIC4jCCAc … A7A6Rpt8V9Q== , но он не отформатирован и не проходит валидацию
Сертификат, конечно, длиннее, я поставил троеточие для экономии места и вашего времени.
Либо, если вам нужно работать с файлами - сохраните исходный сертифика в фай raw_cert
echo MIIC4jC … 7A6Rpt8V9Q== > raw_cert
cat raw_cert | base64 -d | openssl x509 -inform der > cert
cat cert
-----BEGIN CERTIFICATE-----
MIIC4jC … 7A6Rpt8V9Q==
-----END CERTIFICATE-----
Такого же результата можно было добиться аккуратно добавив -----BEGIN CERTIFICATE----- в начало и -----END CERTIFICATE----- в конец файла, но не всегда всё так просто.
В спецификации протокола SSH есть некоторые незначительные различия между версиями, но есть две основные основные версии:SSH1(Номер версии 1.XX) иSSH2(Номер версии 2.00).
Фактически, SSH1 и SSH2 - два совершенно разных и несовместимых протокола. SSH2 значительно улучшает многие аспекты SSH1. Прежде всего, SSH - это макроконструкция. Несколько различных функций (таких как аутентификация, передача и соединение) объединены в один протокол. SSH2 предоставляет более мощные функции безопасности, чем SSH1, такие как проверка целостности и гибкость на основе MAC. Обновление сеансового ключа, полностью согласованный алгоритм шифрования, сертификат открытого ключа и т. Д.
SSH2 стандартизирован IETF, и его реализация широко применяется и принимается в отрасли. Из-за популярности и преимуществ шифрования SSH2 перед SSH1 многие продукты отказываются от поддержки SSH1. На момент написания этой статьи OpenSSH все ещеожидатьSSH1 и SSH2. Однако во всех современных дистрибутивах Linux на сервере OpenSSH по умолчанию отключен SSH1.
Проверьте поддерживаемую версию протокола SSH
метод первый
Если вы хотите проверить версию протокола SSH, поддерживаемую локальным сервером OpenSSH, вы можете обратиться к/etc/ssh/sshd_configЭтот файл. Откройте / etc / ssh / sshd_config в текстовом редакторе и проверьте поле «Протокол».
Если отображается следующее, это означает, что сервер поддерживает только SSH2.
Если отображается следующее, это означает, что сервер поддерживает как SSH1, так и SSH2.
Метод второй
Если вы не можете получить доступ к / etc / ssh / sshd_config, потому что служба OpenSSH работает на удаленном сервере. Вы можете использовать SSH-клиент ssh для проверки поддерживаемых протоколов. В частности, он должен заставить ssh использовать определенный протокол SSH, а затем мы проверяем ответ SSH-сервера.
Следующая команда заставляет SSH использовать SSH1:
Следующая команда заставляет ssh использовать SSH2:
Если сервер SSH поддерживает как SSH1, так и SSH2, обе команды действительны.
Метод третий
Другой способ проверить версию - запустить инструмент сканирования SSH под названиемscanssh. Этот инструмент командной строки полезен, когда вы хотите проверить набор IP-адресов или всю локальную сеть для обновления SSH1-совместимого сервера SSH.
Ниже приводится базовый синтаксис сканирования версий SSH.
Параметр «-n» может указать порт SSH для сканирования. Вы можете сканировать несколько портов со всеми разделенными, без этой опции scanssh будет сканировать порт 22 по умолчанию.
Используйте следующую команду, чтобы обнаружить SSH-сервер в локальной сети 192.168.1.0/24 и проверить версию протокола SSH v:
Если scanssh сообщает «SSH-1.XX-XXXX» для определенного IP-адреса, это означает, что минимальная версия, поддерживаемая соответствующим SSH-сервером, - SSH1. Если удаленный сервер поддерживает только SSH2, scanssh отобразит «SSH-2.0-XXXX».
Для того, чтобы узнать версию установленного OpenSSH, воспользуйтесь командой ssh -v localhost или командой ssh-V (заглавная буква V): В ответе программы вы увидите версию OpenSSH.
Как узнать версию PHP через SSH?
Есть три способа узнать версию PHP, которая установлена на сервере:
- создать в корневом каталоге сайта текстовый файл info. php с небольшим фрагментом кода;
- ввести команду php – v в консоли;
- посмотреть версию в панели управления хостингом.
Как узнать какая версия Ubuntu установлена?
Вы можете открыть терминал с помощью сочетания клавиш ctrl + alt + t или с помощью поиска «Терминал» на экране приложений. Выполните команду lsb_release -a . Из терминала выполните lsb_release -a , чтобы показать номер версии вашего Ubuntu.
Как узнать версию дистрибутива Linux?
Как Это: Посмотреть версию Linux через командную строку
Вам, всего лишь, нужно набрать пару команд: [a] uname – Отображает информацию о ядре Linux и системную информацию. [b] lsb_release – Отображает информацию не посредственно о используемом дистрибутиве Linux. [c] /proc/version file – Показывает версию ядра системы.
Как узнать версию PHP из консоли?
Существует как минимум три варианта узнать версию PHP, которая установлена на вашем сервере: создать на сервере текстовый файл info. php с небольшим фрагментом кода; ввести в консоли команду php – v; проверить версию PHP в панели управления хостингом.
Как узнать версию PHP на Xampp?
Как узнать версию ядра?
Самый простой способ посмотреть информацию о ядре — вывод команды uname в консоли. uname — консольная утилита, выводящая информацию о системе. Аргумент «a» в данном случае говорит о том, что нам необходимо вывести всю возможную информацию. В этот раз команда с аргументом «r» показывает нам только версию ядра.
Как посмотреть версию Xubuntu?
Как узнать версию Ubuntu или Xubuntu и версию ядра
- Еще один способ для определения версии — это просмотреть содержимое файла /etc/issue.
- Определяем текущую версию ядра Для получения информации о версии ядра выполните команду: $ uname -r.
- Для предоставления всей информации введите следующую команду: $ uname -a.
Как узнать версию Ubuntu 32 или 64?
В окне «Системные настройки» дважды щелкните значок «Сведения» (Details) в разделе «Система» (System). В окне «Сведения» на вкладке «Обзор» (Overview) найдите запись «Тип ОС» (OS type). Вы увидите либо «64-bit», либо «32-bit», а также другие основные сведения о вашей системе Ubuntu.
Как узнать версию Linux Red Hat?
Из этого урока мы научимся определять версию используемой Red Hat.
Как узнать версию ядра Linux Mint?
Открыть ее можно из главного меню:
Как узнать свою версию Debian?
Проверка версии Debian из командной строки
Предпочтительный метод проверки вашей версии Debian – использовать утилиту lsb_release , которая отображает информацию LSB (Linux Standard Base) о дистрибутиве Linux. Этот метод будет работать независимо от того, какую среду рабочего стола или версию Debian вы используете.
Как изменить версию PHP в консоли?
Как сменить версию PHP
- Войдите в панель управления хостингом.
- В разделе «Программное обеспечение» нажмите Выбор PHP версии. Выберите домен, для которого хотите сменить версию PHP, и нажмите Изменить. Затем выберите нужную версию PHP и подтвердите изменения:
Как узнать запущен ли PHP?
Существует два способа определить, запущен ли PHP из командной строки: При запуске из командной строки функция «php_sapi_name» возвращает значение «cli», при запуске в качестве CGI-модуля «cgi» или «fast-cgi», и имя сервера — если как модуль apache.
Читайте также: