Как я могу найти текущую версию протокола ssh текущего соединения?
35
Я подключаюсь к машине linux (centos 6.4), используя шпатлевку. За исключением того факта, что я могу установить для putty только один тип протокола, как я могу найти текущую версию ssh-соединения (SSH1 или SSH2)?
Это может помочь показать, какое исследование вы уже провели
Drew Khoury
@DrewKhoury Я только пытался с помощью Google, чтобы найти ответ на этот вопрос, но ничего не нашел в этом отношении. Никто не объясняет, как я могу увидеть текущий протокол подключения (используется) (ssh1 или ssh2).
Не похоже, что это показывает текущий тип соединения.
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
Это версия программы , а не протокол, используемый для соединения. Как правильно объяснил ответ 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
Первое и второе поля 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файле.
Ответы:
Как только вы внутри, вы говорите:
он скажет вам точную версию сервера.
источник
Я знаю, что это старый вопрос, но так как я столкнулся с ним, я не мог удержаться от публикации альтернативного пути.
Как предложил cstamas, вы можете
ssh -v localhost
просто использовать ssh для себя 127.0.0.1 в подробном режиме, который будет отображать отладочное сообщение о прогрессе. Да, с помощью этого процесса вы можете посмотреть на верхушку сообщения и получить версию SSH, которую вы используете в данный момент.Но если вы прочитаете
ssh man
страницу, вы найдете-V
опцию ssh более полезной. Вытащил справочную страницу ssh :Поэтому я думаю, что было бы лучше просто сделать
ssh -V
и получить что-то похожее на:Надеюсь это поможет.
источник
Putty В сеансе, ведение журнала, установите переключатель «SSH пакеты и необработанные данные». Выберите файл журнала как putty.log в выбранном вами месте. Сделай связь. Тебе следует увидеть:
Смотрите ниже подробности о том, что означает SSH-2.0.
Другие методы Вы также можете попробовать использовать клиент telnet, но указать порт 22:
При подключении вы увидите:
Попытка 192.168.144.145 ... Подключен к test1. Escape-символ '^]'. SSH-2,0-OpenSSH_5.3
Последняя строка, которую нужно искать:
Если это говорит о
SSH-2.0
том, что это хорошо, то сервер ssh, к которому вы подключились, поддерживает только протокол SSH версии 2. Он не будет поддерживать подключения от клиентов протокола SSH V1.Однако, если вы видите:
SSH-1,99-OpenSSH_5.3
Тогда это означает, что серверная часть все еще поддерживает протокол SSL версии 1. В его
sshd_config
файле есть что-то вроде этого :Протокол 1 уязвим и не должен использоваться.
Таким образом, чтобы получить это прямо. Если вы видите SSH-2, когда вы подключаетесь по telnet к порту 22 удаленного сервера, то вы можете использовать только протокол ssh версии 2, поскольку сервер не поддерживает протокол 1.
Согласно ответу cstamas выше, флаг -v покажет строку:
или:
Вы хотите увидеть
version 2.0
там.источник
Вы можете получить это довольно быстро, используя netcat с вашего локального компьютера, например:
источник
Мне нравится это лучше:
Преимущество в том, что это можно сделать программно, поскольку соединение не поддерживается открытым. Для Python попробуйте:
источник
Единственный известный мне метод требует наличия достаточных прав для просмотра записей журнала ssh
/var/log/auth.log
.Первое и второе поля
SSH_CONNECTION
переменной указывают исходный IP-адрес и исходный порт моего соединения. Благодаряgrep
этим значениям/var/log/auth.log
я могу найти запись в журнале, когда мое SSH-соединение было аутентифицировано.Эта запись в журнале говорит мне, что мое текущее соединение использует протокол ssh2. Конечно, если сессия ssh была открыта в течение нескольких дней, запись в журнале может быть в
/var/log/auth.log.0
каком-либо старомauth.log
файле.источник