Як я можу знайти поточну версію протоколу ssh для поточного з'єднання?


35

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


Це може допомогти показати, які дослідження ви вже робили
Дрю Курі

@DrewKhoury Я лише намагався з google знайти відповідь на це, але жодного результату в цьому не знайшов. Ніхто не пояснює, як я можу побачити поточний протокол з'єднання (використовується) (ssh1 або ssh2).
кодіак

Відповіді:


46

Як тільки ви знаходитесь, ви кажете:

ssh -v localhost

він підкаже точну версію сервера.


4
Здається, це не показує поточний тип з'єднання.
кодіак

18

Я знаю, що це давнє питання, але оскільки я натрапив на нього, я не втримався від розміщення альтернативного способу.

Як запропонував cstamas, ви можете використовувати ssh -v localhostпросто ssh до себе 127.0.0.1 у режимі докладної роботи, який відображатиме повідомлення про налагодження прогресу. Так, за допомогою цього процесу ви можете переглянути верхній зв'язок, і ви зможете отримати версію SSH, яку ви зараз працюєте.

Але якщо ви прочитаєте ssh manсторінку, знайдете -Vваріант на ssh більш корисним. Витягнута сторінка ssh man :

-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 In Session, Logging, виберіть перемикач "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 ... Підключено до тесту1. Символ втечі - '^]'. 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 під час телнету до порту 22 віддаленого сервера, ви можете використовувати лише ssh Protocol Version 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там побачити .


4

Ви можете отримати це досить швидко, використовуючи netcat з вашої локальної машини, наприклад:

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

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-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

Цей запис у журналі повідомляє мені, що моє поточне з'єднання використовує протокол ssh2. Звичайно, якщо сеанс ssh був відкритий протягом декількох днів, запис у журнал може бути у файлі /var/log/auth.log.0чи іншому старішому auth.logфайлі.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.