Bagaimana saya bisa menemukan versi protokol ssh saat ini dari koneksi saat ini?

35

Saya terhubung ke mesin linux (centos 6.4) menggunakan dempul. Kecuali dari fakta bahwa saya dapat mengatur dempul hanya menggunakan satu jenis protokol, bagaimana saya bisa menemukan versi koneksi ssh saat ini (SSH1 atau SSH2)?

codiac
sumber
Dapat membantu menunjukkan penelitian apa yang telah Anda lakukan
Drew Khoury
@DrewKhoury Saya hanya mencoba dengan google untuk menemukan jawaban untuk ini tetapi tidak ada hasil yang ditemukan mengenai hal ini. Tidak ada yang menjelaskan bagaimana saya bisa melihat protokol koneksi saat ini (sedang digunakan) (ssh1 atau ssh2).
codiac

Jawaban:

46

Setelah Anda berada di Anda berkata:

ssh -v localhost

itu akan memberi tahu Anda versi server yang tepat.

cstamas
sumber
4
Sepertinya ini tidak menunjukkan jenis koneksi saat ini.
codiac
18

Saya tahu ini adalah pertanyaan lama, tetapi karena saya menemukan itu, saya tidak bisa menolak memposting cara alternatif.

Seperti yang disarankan cstamas, Anda dapat menggunakan ssh -v localhostAnda cukup ssh ke self 127.0.0.1 Anda pada mode verbose, yang akan menampilkan pesan debug dari progres. Ya, melalui proses ini, Anda dapat melihat bagian atas komunikasi dan Anda bisa mendapatkan versi SSH yang sedang Anda jalankan.

Tetapi jika Anda membaca ssh manhalaman ini, Anda akan menemukan -Vopsi di ssh lebih berguna. Diambil halaman manual ssh :

-V Menampilkan nomor versi dan keluar.

-V Mode Verbose. Menyebabkan ssh untuk mencetak pesan debug tentang kemajuannya. Ini membantu dalam men-debug koneksi, otentikasi, dan masalah konfigurasi. Opsi -v ganda meningkatkan verbositas. Maksimal 3.

Jadi saya pikir akan lebih baik untuk hanya melakukan ssh -Vdan mendapatkan sesuatu yang mirip dengan:

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

Semoga ini membantu.

Terima kasih
sumber
2
Itu versi program , bukan protokol yang digunakan untuk koneksi. Sebagai jawaban 3 tahun sebelumnya dijelaskan dengan benar, program yang sama dapat mendukung protcols SSH1 dan SSH2, atau tidak, tergantung pada konfigurasi.
dave_thompson_085
11

Putty In Session, Logging, pilih tombol radio "Paket SSH dan data mentah". Pilih file log sebagai putty.log di lokasi pilihan Anda. Buat koneksi. Anda harus melihat:

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

Lihat di bawah untuk detail tentang apa arti SSH-2.0.

Metode Lain Anda juga dapat mencoba menggunakan klien telnet tetapi arahkan ke port 22:

telnet test1 22

Ketika Anda terhubung, Anda akan melihat:

Mencoba 192.168.144.145 ... Terhubung ke test1. Karakter melarikan diri adalah '^]'. SSH-2.0-OpenSSH_5.3

Baris terakhir adalah yang harus dicari:

SSH-2.0-OpenSSH_5.3

Jika dikatakan SSH-2.0maka itu bagus, server ssh yang Anda sambungkan hanya mendukung SSH Protocol Version 2. Tidak akan mendukung koneksi dari SSH V1 Protocol Clients.

Namun jika Anda melihat:

SSH-1.99-OpenSSH_5.3

Maka itu berarti bahwa server end masih mendukung SSL Protocol Version 1. Ada sesuatu seperti ini di sshd_configfile itu:

Protocol 1,2

Protokol 1 rentan dan tidak boleh digunakan.

Jadi untuk meluruskannya. Jika Anda melihat SSH-2 ketika Anda telnet ke port 22 dari server jauh maka Anda hanya dapat menggunakan ssh Protokol Versi 2 karena server tidak mendukung Protokol 1.

Sesuai jawaban cstamas di atas, flag -v akan menampilkan garis:

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

atau:

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

Anda ingin melihat di version 2.0sana.

davey
sumber
4

Anda bisa mendapatkan ini dengan cukup cepat menggunakan netcat dari mesin lokal Anda, misalnya:

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

Saya suka ini lebih baik:

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

Manfaatnya di sini adalah dapat dilakukan secara terprogram karena koneksi tidak terbuka. Untuk Python, coba:

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

Satu-satunya metode yang saya ketahui mengharuskan seseorang memiliki hak yang cukup untuk melihat entri ssh log /var/log/auth.log.

$ echo $SSH_CONNECTION 
127.0.0.1 12375 127.0.0.1 22

Bidang pertama dan kedua dari SSH_CONNECTIONvariabel menunjukkan IP sumber dan port sumber koneksi saya. Dengan grep-ing untuk nilai-nilai di /var/log/auth.log, saya dapat menemukan entri log dari ketika koneksi ssh saya dikonfirmasi.

$ 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

Entri log ini memberi tahu saya bahwa koneksi saya saat ini menggunakan protokol ssh2. Tentu saja, jika sesi ssh telah dibuka selama beberapa hari, entri log mungkin ada di /var/log/auth.log.0atau beberapa auth.logfile yang lebih lama .

Jim L.
sumber