Я подключаюсь к машине 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
В Сессия, логирование, выберите «Пакеты 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
файл.