Назад | Перейти на главную страницу

Как я могу найти текущую версию протокола SSH для текущего соединения?

Я подключаюсь к машине Linux (CentOS 6.4), используя PuTTY. Кроме того факта, что я могу настроить PuTTY на использование только одного типа протокола, как я могу найти текущую версию SSH-соединения (SSH1 или SSH2)?

Оказавшись внутри, вы говорите:

ssh -v localhost

он сообщит вам точную версию сервера.

Альтернативный способ.

Так как cstamas предложено, вы можете использовать ssh -v localhost. Вы просто ssh себе 127.0.0.1 в подробном режиме, который будет отображать отладочные сообщения о ходе выполнения. Да, с помощью этого процесса вы можете просмотреть верхнюю часть сообщения и получить версию SSH, которую вы используете в настоящее время.

Но если вы читаете ssh man страницу, вы найдете -V вариант на ssh полезнее. Вынул ssh страница руководства:

-V Вывести номер версии и выйти.

-v Подробный режим. Заставляет ssh печатать отладочные сообщения о его ходе. Это полезно при отладке проблем с подключением, аутентификацией и конфигурацией. Использование нескольких параметров -v увеличивает степень детализации. Максимум 3.

Поэтому я думаю, что было бы лучше просто сделать ssh -V и получите что-то похожее на:

> ssh -V
OpenSSH_6.6.1p1, OpenSSL 1.0.1e-fips 11 Feb 2013

PuTTY

В Сессия, логирование, выберите «Пакеты SSH и необработанные данные» переключатель. Выберите файл журнала как putty.log в выбранном вами месте. Сделайте связь. Тебе следует увидеть:

Event Log: Server version: SSH-2.0-OpenSSH_5.3
Event Log: Using SSH protocol version 2

См. Ниже подробные сведения о том, что означает SSH-2.0.

Другие методы

Вы также можете попробовать использовать клиент telnet, но укажите порт 22:

telnet test1 22

При подключении вы увидите:

Пробуем 192.168.144.145 ...
Подключен к test1.
Экранирующий символ - '^]'.
SSH-2.0-OpenSSH_5.3

Последняя строка - это та, которую нужно искать:

SSH-2.0-OpenSSH_5.3

Если это говорит SSH-2.0 Тогда это хорошо, сервер SSH, к которому вы подключились, поддерживает только протокол SSH версии 2. Он не будет поддерживать подключения от клиентов протокола SSH V1.

Однако если вы видите:

SSH-1.99-OpenSSH_5.3

Тогда это означает, что серверная часть все еще поддерживает протокол SSH версии 1. В нем есть что-то вроде этого. sshd_config файл:

Protocol 1,2

Протокол 1 уязвим и не должен использоваться.

Итак, чтобы понять это прямо. Если вы видите SSH-2 при подключении к порту 22 удаленного сервера, вы можете использовать только протокол SSH версии 2, поскольку сервер не поддерживает протокол 1.

Согласно ответу cstamas выше, -v flag покажет строку:

debug1: Remote protocol version 1.99, remote software version OpenSSH_5.3

или:

debug1: Remote protocol version 2.0, remote software version OpenSSH_5.3

Ты хочешь увидеть version 2.0 там.

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

$ nc [IP_ADDRESS] 22
SSH-2.0-OpenSSH_5.3

Мне это больше нравится:

$ echo ~ | nc localhost 22
SSH-1.99-OpenSSH_3.9p1
Protocol mismatch.
$

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

ssh_protocol = float(re.search(r"SSH-(\d.\d+)").group(1))

Чтобы получить более подробную информацию, вы можете использовать это:

    rpm -qi openssh
Name        : openssh
Version     : 7.4p1
Release     : 21.el7
Architecture: x86_64
Install Date: Пт 17 янв 2020 12:21:57
Group       : Applications/Internet
Size        : 1991172
License     : BSD
Signature   : RSA/SHA256, Пт 23 авг 2019 00:37:23, Key ID 24c6a8a7f4a80eb5
Source RPM  : openssh-7.4p1-21.el7.src.rpm
Build Date  : Пт 09 авг 2019 04:40:49
Build Host  : x86-01.bsys.centos.org
Relocations : (not relocatable)
Packager    : CentOS BuildSystem <http://bugs.centos.org>
Vendor      : CentOS
URL         : http://www.openssh.com/portable.html
Summary     : An open source implementation of SSH protocol versions 1 and 2

Единственный известный мне метод требует наличия достаточных прав для просмотра ssh записи в журнале /var/log/auth.log.

$ echo $SSH_CONNECTION 
127.0.0.1 12375 127.0.0.1 22

Первое и второе поля SSH_CONNECTION переменная указывает исходный IP-адрес и исходный порт моего подключения. По grep-ing для этих значений в /var/log/auth.log, Я могу найти запись в журнале, когда мое SSH-соединение было аутентифицировано.

$ sudo grep -F ' from 127.0.0.1 port 12375 ' /var/log/auth.log | grep ssh
Jun 26 16:29:52 morton sshd[20895]: Accepted keyboard-interactive/pam for jim from 127.0.0.1 port 12375 ssh2

Эта запись в журнале сообщает мне, что мое текущее соединение использует протокол SSH 2. Конечно, если ssh сессия была открыта несколько дней, запись в журнале может быть в /var/log/auth.log.0 или немного старше auth.log файл.