Я подключаюсь к машине linux (centos 6.4), используя шпатлевку. За исключением того факта, что я могу установить для putty только один тип протокола, как я могу найти текущую версию ssh-соединения (SSH1 или SSH2)?
Я подключаюсь к машине linux (centos 6.4), используя шпатлевку. За исключением того факта, что я могу установить для putty только один тип протокола, как я могу найти текущую версию ssh-соединения (SSH1 или SSH2)?
Ответы:
Я знаю, что это старый вопрос, но так как я столкнулся с ним, я не мог удержаться от публикации альтернативного пути.
Как предложил 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. 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
там.
Вы можете получить это довольно быстро, используя 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))
Единственный известный мне метод требует наличия достаточных прав для просмотра записей журнала 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
файле.