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

35

Я подключаюсь к машине linux (centos 6.4), используя шпатлевку. За исключением того факта, что я могу установить для putty только один тип протокола, как я могу найти текущую версию ssh-соединения (SSH1 или SSH2)?

codiac
источник
Это может помочь показать, какое исследование вы уже провели
Drew Khoury
@DrewKhoury Я только пытался с помощью Google, чтобы найти ответ на этот вопрос, но ничего не нашел в этом отношении. Никто не объясняет, как я могу увидеть текущий протокол подключения (используется) (ssh1 или ssh2).
Codiac

Ответы:

46

Как только вы внутри, вы говорите:

ssh -v localhost

он скажет вам точную версию сервера.

cstamas
источник
4
Не похоже, что это показывает текущий тип соединения.
Codiac
18

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

Как предложил 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

Надеюсь это поможет.

Танос
источник
2
Это версия программы , а не протокол, используемый для соединения. Как правильно объяснил ответ 3 года назад, одна и та же программа может поддерживать протоколы SSH1 и SSH2 или нет, в зависимости от конфигурации.
dave_thompson_085
11

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. Escape-символ '^]'. 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

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

Protocol 1,2

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

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

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

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там.

Davey
источник
4

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

$ nc [IP_ADDRESS] 22
SSH-2.0-OpenSSH_5.3
Awesominator
источник
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))
Джошуа Детвилер
источник
0

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

$ echo $SSH_CONNECTION 
127.0.0.1 12375 127.0.0.1 22

Первое и второе поля SSH_CONNECTIONпеременной указывают исходный IP-адрес и исходный порт моего соединения. Благодаря grepэтим значениям /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

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

Джим Л.
источник