Làm thế nào tôi có thể tìm thấy phiên bản giao thức ssh hiện tại của kết nối hiện tại?


35

Tôi kết nối với một máy linux (centos 6.4) sử dụng putty. Ngoại trừ thực tế là tôi có thể thiết lập putty chỉ sử dụng một loại giao thức, làm cách nào tôi có thể tìm thấy phiên bản kết nối ssh hiện tại (SSH1 hoặc SSH2)?


Nó có thể giúp hiển thị những nghiên cứu bạn đã thực hiện
Drew Khoury

@DrewKhoury Tôi chỉ thử với google để tìm câu trả lời cho vấn đề này nhưng không có kết quả nào liên quan đến việc này. Không ai giải thích làm thế nào tôi có thể thấy giao thức kết nối (đang sử dụng) hiện tại (ssh1 hoặc ssh2).
codiac

Câu trả lời:


46

Khi bạn ở trong bạn nói:

ssh -v localhost

Nó sẽ cho bạn biết phiên bản chính xác của máy chủ.


4
Dường như điều này không hiển thị loại kết nối hiện tại.
codiac

18

Tôi biết đây là một câu hỏi cũ nhưng vì tôi đã gặp nó, tôi không thể cưỡng lại việc đăng một cách khác.

Như cstamas đã đề xuất, bạn có thể sử dụng ssh -v localhostbạn chỉ đơn giản là ssh cho chính mình 127.0.0.1 trên chế độ dài dòng, sẽ hiển thị thông báo gỡ lỗi của tiến trình. Có thông qua quá trình này, bạn có thể nhìn vào đầu giao tiếp và bạn có thể nhận phiên bản SSH mà bạn hiện đang chạy.

Nhưng nếu bạn đọc ssh mantrang bạn sẽ thấy -Vtùy chọn trên ssh hữu ích hơn. Lấy ra trang ssh man :

-V Hiển thị số phiên bản và thoát.

-v Chế độ dài dòng. Nguyên nhân ssh in thông báo gỡ lỗi về tiến trình của nó. Điều này rất hữu ích trong việc gỡ lỗi các vấn đề về kết nối, xác thực và cấu hình. Nhiều tùy chọn -v làm tăng tính dài dòng. Tối đa là 3.

Vì vậy, tôi nghĩ sẽ tốt hơn nếu chỉ đơn giản là làm ssh -Vvà nhận được một cái gì đó tương tự như:

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

Hi vọng điêu nay co ich.


2
Đó là phiên bản của chương trình , không phải giao thức được sử dụng cho kết nối. Như một câu trả lời trước đó 3 năm đã giải thích chính xác, cùng một chương trình có thể hỗ trợ cả protcols SSH1 và SSH2, hoặc không, tùy thuộc vào cấu hình.
dave_thndry_085

11

Putty Trong phiên, Ghi nhật ký, chọn nút radio "Gói dữ liệu SSH và dữ liệu thô". Chọn tệp nhật ký là putty.log ở vị trí bạn chọn. Tạo kết nối. Bạn nên thấy:

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

Xem bên dưới để biết chi tiết về ý nghĩa của SSH-2.0.

Các phương pháp khác Bạn cũng có thể thử sử dụng máy khách telnet nhưng trỏ đến cổng 22:

telnet test1 22

Khi bạn kết nối, bạn sẽ thấy:

Đang thử 192.168.144.145 ... Đã kết nối với test1. Nhân vật thoát là '^]'. SSH-2.0-OpenSSH_5.3

Dòng cuối cùng là dòng để tìm:

SSH-2.0-OpenSSH_5.3

Nếu nó SSH-2.0báo là tốt, thì máy chủ ssh mà bạn đã kết nối chỉ hỗ trợ Giao thức SSH Phiên bản 2. Nó sẽ không hỗ trợ các kết nối từ Máy khách Giao thức SSH V1.

Tuy nhiên, nếu bạn thấy:

SSH-1.99-OpenSSH_5.3

Sau đó, điều đó có nghĩa là phần cuối máy chủ vẫn hỗ trợ Giao thức SSL Phiên bản 1. Nó có một cái gì đó như thế này trong sshd_configtệp của nó :

Protocol 1,2

Giao thức 1 dễ bị tổn thương và không nên được sử dụng.

Vì vậy, để có được rằng thẳng. Nếu bạn thấy SSH-2 khi bạn telnet đến cổng 22 của máy chủ từ xa thì bạn chỉ có thể sử dụng ssh Protocol Phiên bản 2 vì máy chủ không hỗ trợ Giao thức 1.

Theo câu trả lời của cstamas ở trên, cờ -v sẽ hiển thị một dòng:

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

hoặc là:

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

Bạn muốn thấy version 2.0ở đó.


4

Bạn có thể nhận được điều này khá nhanh bằng cách sử dụng netcat từ máy cục bộ của mình, ví dụ:

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

3

Tôi thích điều này hơn:

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

Lợi ích ở đây là nó có thể được thực hiện theo chương trình vì kết nối không được mở. Đối với Python, hãy thử:

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

0

Phương pháp duy nhất tôi biết đòi hỏi người ta phải có đủ đặc quyền để xem các mục nhật ký ssh /var/log/auth.log.

$ echo $SSH_CONNECTION 
127.0.0.1 12375 127.0.0.1 22

Các trường đầu tiên và thứ hai của SSH_CONNECTIONbiến chỉ ra IP nguồn và cổng nguồn của kết nối của tôi. Bằng cách grepcho các giá trị đó vào /var/log/auth.log, tôi có thể tìm thấy mục nhật ký từ khi kết nối ssh của tôi được xác thực.

$ 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

Mục nhật ký này cho tôi biết rằng kết nối hiện tại của tôi đang sử dụng giao thức ssh2. Tất nhiên, nếu phiên ssh đã được mở trong vài ngày, mục nhật ký có thể nằm trong /var/log/auth.log.0hoặc một số auth.logtệp cũ hơn .

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.