Come posso trovare l'attuale versione del protocollo ssh della connessione corrente?


35

Mi collego a una macchina linux (centos 6.4) usando stucco. Tranne il fatto che posso impostare putty per usare solo un tipo di protocollo, come posso trovare la versione della connessione ssh corrente (SSH1 o SSH2)?


Può aiutare a mostrare quali ricerche hai già fatto
Drew Khoury,

@DrewKhoury Ho solo cercato con google di trovare una risposta a questo, ma nessun risultato trovato al riguardo. Nessuno spiega come posso vedere l'attuale protocollo di connessione (in uso) (ssh1 o ssh2).
codiac

Risposte:


46

Una volta che sei dentro dici:

ssh -v localhost

ti dirà la versione esatta del server.


4
Non sembra che questo mostri l'attuale tipo di connessione.
codiac

18

So che questa è una vecchia domanda, ma da quando mi sono imbattuto, non ho potuto resistere sulla pubblicazione di un modo alternativo.

Come suggerito da cstama,ssh -v localhost puoi semplicemente usare ssh per te stesso 127.0.0.1 in modalità dettagliata, che visualizzerà il messaggio di debug dell'avanzamento. Sì, attraverso questo processo è possibile visualizzare la parte superiore della comunicazione e ottenere la versione SSH attualmente in esecuzione.

Ma se leggi la ssh manpagina troverai -Vpiù utile l' opzione su ssh. Estratto la pagina man di ssh :

-V Visualizza il numero di versione ed esce.

-v Modalità dettagliata. Fa sì che ssh stampi i messaggi di debug sui suoi progressi. Ciò è utile per il debug di problemi di connessione, autenticazione e configurazione. Le opzioni multiple -v aumentano la verbosità. Il massimo è 3.

Quindi penso che sarebbe meglio semplicemente fare ssh -Ve ottenere qualcosa di simile a:

> ssh -V
OpenSSH_6.6.1p1, OpenSSL 1.0.1e-fips 11 Feb 2013

Spero che sia di aiuto.


2
Questa è la versione del programma , non il protocollo utilizzato per una connessione. Come ha spiegato correttamente una risposta di 3 anni prima, lo stesso programma può supportare sia i protettori SSH1 che SSH2, a seconda della configurazione.
dave_thompson_085

11

Putty In Session, Logging, seleziona il pulsante di opzione "Pacchetti SSH e dati non elaborati". Seleziona il file di registro come putty.log in una posizione a tua scelta. Effettua la connessione. Tu dovresti vedere:

Event Log: Server version: SSH-2.0-OpenSSH_5.3
Event Log: Using SSH protocol version 2

Vedi sotto per i dettagli sul significato di SSH-2.0.

Altri metodi Potresti anche provare a utilizzare il client Telnet ma puntare alla porta 22:

telnet test1 22

Quando ti connetti vedrai:

Prova 192.168.144.145 ... Connesso al test1. Il carattere di escape è '^]'. SSH-2.0-OpenSSH_5.3

L'ultima riga è quella da cercare:

SSH-2.0-OpenSSH_5.3

Se dice SSH-2.0che va bene, il server ssh a cui ti sei connesso supporta solo il protocollo SSH versione 2. Non supporterà le connessioni dai client del protocollo SSH V1.

Se comunque vedi:

SSH-1.99-OpenSSH_5.3

Quindi ciò significa che l'estremità del server supporta ancora il protocollo SSL versione 1. Ha qualcosa del genere nel suo sshd_configfile:

Protocol 1,2

Il protocollo 1 è vulnerabile e non deve essere utilizzato.

Quindi per capire bene. Se vedi SSH-2 quando telnet alla porta 22 del server remoto, puoi usare solo il protocollo ssh Versione 2 poiché il server non supporta il Protocollo 1.

Come da cstama risposta sopra, il flag -v mostrerà una linea:

debug1: Remote protocol version 1.99, remote software version OpenSSH_5.3

o:

debug1: Remote protocol version 2.0, remote software version OpenSSH_5.3

Vuoi vedere version 2.0lì.


4

Puoi ottenerlo abbastanza rapidamente usando netcat dal tuo computer locale, ad esempio:

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

3

Mi piace di più:

$ echo ~ | nc localhost 22
SSH-1.99-OpenSSH_3.9p1
Protocol mismatch.
$

Il vantaggio qui è che può essere fatto in modo programmatico poiché la connessione non viene mantenuta aperta. Per Python, prova:

ssh_protocol = float(re.search(r"SSH-(\d.\d+)").group(1))

0

L'unico metodo di cui sono a conoscenza richiede che si disponga di privilegi sufficienti per visualizzare le voci del registro ssh /var/log/auth.log.

$ echo $SSH_CONNECTION 
127.0.0.1 12375 127.0.0.1 22

Il primo e il secondo campo della SSH_CONNECTIONvariabile indicano l'IP sorgente e la porta sorgente della mia connessione. Accedendo grepa questi valori /var/log/auth.log, posso trovare la voce di registro da quando la mia connessione ssh è stata autenticata.

$ 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

Questa voce del registro mi dice che la mia connessione attuale sta usando il protocollo ssh2. Naturalmente, se la sessione ssh è stata aperta per diversi giorni, la voce di registro potrebbe essere in /var/log/auth.log.0un auth.logfile precedente .

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.