Jak znaleźć aktualną wersję protokołu ssh bieżącego połączenia?
35
Łączę się z maszyną linuxową (centos 6.4) za pomocą szpachli. Poza faktem, że mogę ustawić kit tak, aby korzystał tylko z jednego rodzaju protokołu, jak mogę znaleźć wersję połączenia ssh prądu (SSH1 lub SSH2)?
Może pomóc pokazać badania, które już przeprowadziłeś
Drew Khoury,
@DrewKhoury Próbowałem tylko z Google, aby znaleźć odpowiedź na to pytanie, ale nie znaleziono żadnego wyniku w tym zakresie. Nikt nie wyjaśnia, w jaki sposób mogę zobaczyć bieżący protokół połączenia (w użyciu) (ssh1 lub ssh2).
Nie wydaje się, że pokazuje to obecny typ połączenia.
codiac
18
Wiem, że to stare pytanie, ale odkąd się z nim spotkałem, nie mogłem się powstrzymać przed opublikowaniem alternatywnego sposobu.
Jak sugeruje cstamas , ssh -v localhostmożesz po prostu użyć ssh do siebie 127.0.0.1 w trybie pełnym , który wyświetli komunikat debugowania postępu. Tak, dzięki temu procesowi możesz spojrzeć na górę komunikatu i uzyskać wersję SSH, którą aktualnie uruchomiłeś.
Ale jeśli przeczytasz ssh manstronę, -Vbardziej przydatna będzie opcja ssh. Wyjęto stronę podręcznika ssh :
-V Wyświetl numer wersji i wyjdź.
-v Tryb pełny. Powoduje, że ssh drukuje komunikaty debugujące dotyczące jego postępu. Jest to pomocne w debugowaniu problemów z połączeniem, uwierzytelnianiem i konfiguracją. Wiele opcji -v zwiększa gadatliwość. Maksymalna to 3.
Myślę więc, że lepiej byłoby po prostu zrobić ssh -Vi uzyskać coś podobnego do:
> ssh -V
OpenSSH_6.6.1p1, OpenSSL 1.0.1e-fips 11 Feb 2013
To jest wersja programu , a nie protokół używany do połączenia. Jak poprawnie wyjaśniono 3-letnią odpowiedź, ten sam program może obsługiwać zarówno protokoły SSH1, jak i SSH2, w zależności od konfiguracji.
dave_thompson_085
11
Putty
W sesji, logowanie, wybierz przycisk opcji „Pakiety SSH i nieprzetworzone dane”. Wybierz plik dziennika jako putty.log w wybranej lokalizacji. Nawiąż połączenie. Powinieneś zobaczyć:
Event Log: Server version: SSH-2.0-OpenSSH_5.3
Event Log: Using SSH protocol version 2
Zobacz poniżej, co oznacza SSH-2.0.
Inne metody
Możesz także spróbować użyć klienta Telnet, ale wskaż port 22:
telnet test1 22
Po połączeniu zobaczysz:
Próbuję 192.168.144.145 ... Połączono z test1. Znakiem ucieczki jest „^]”. SSH-2.0-OpenSSH_5.3
Ostatni wiersz to ten, którego należy szukać:
SSH-2.0-OpenSSH_5.3
Jeśli powie, SSH-2.0że to dobrze, serwer ssh, do którego się podłączono, obsługuje tylko protokół SSH w wersji 2. Nie będzie obsługiwał połączeń od klientów protokołu SSH V1.
Jeśli jednak widzisz:
SSH-1.99-OpenSSH_5.3
Oznacza to, że koniec serwera nadal obsługuje protokół SSL w wersji 1. W sshd_configpliku znajduje się coś takiego :
Protocol 1,2
Protokół 1 jest wrażliwy i nie należy go używać.
Żeby to wyjaśnić. Jeśli widzisz SSH-2 podczas telnet do portu 22 zdalnego serwera, możesz używać tylko protokołu ssh w wersji 2, ponieważ serwer nie obsługuje protokołu 1.
Zgodnie z odpowiedzią cstamas powyżej flaga -v pokaże linię:
debug1: Remote protocol version 1.99, remote software version OpenSSH_5.3
lub:
debug1: Remote protocol version 2.0, remote software version OpenSSH_5.3
Pierwsze i drugie pole SSH_CONNECTIONzmiennej wskazują źródłowy adres IP i źródłowy port mojego połączenia. Korzystając grepz tych wartości /var/log/auth.log, mogę znaleźć wpis dziennika od momentu uwierzytelnienia mojego połączenia 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
Ten wpis dziennika mówi mi, że moje bieżące połączenie korzysta z protokołu ssh2. Oczywiście, jeśli sesja ssh była otwarta przez kilka dni, wpis dziennika może znajdować się w /var/log/auth.log.0jakimś starszym auth.logpliku.
Odpowiedzi:
Kiedy już będziesz w środku, powiedz:
poda ci dokładną wersję serwera.
źródło
Wiem, że to stare pytanie, ale odkąd się z nim spotkałem, nie mogłem się powstrzymać przed opublikowaniem alternatywnego sposobu.
Jak sugeruje cstamas ,
ssh -v localhost
możesz po prostu użyć ssh do siebie 127.0.0.1 w trybie pełnym , który wyświetli komunikat debugowania postępu. Tak, dzięki temu procesowi możesz spojrzeć na górę komunikatu i uzyskać wersję SSH, którą aktualnie uruchomiłeś.Ale jeśli przeczytasz
ssh man
stronę,-V
bardziej przydatna będzie opcja ssh. Wyjęto stronę podręcznika ssh :Myślę więc, że lepiej byłoby po prostu zrobić
ssh -V
i uzyskać coś podobnego do:Mam nadzieję że to pomoże.
źródło
Putty W sesji, logowanie, wybierz przycisk opcji „Pakiety SSH i nieprzetworzone dane”. Wybierz plik dziennika jako putty.log w wybranej lokalizacji. Nawiąż połączenie. Powinieneś zobaczyć:
Zobacz poniżej, co oznacza SSH-2.0.
Inne metody Możesz także spróbować użyć klienta Telnet, ale wskaż port 22:
Po połączeniu zobaczysz:
Próbuję 192.168.144.145 ... Połączono z test1. Znakiem ucieczki jest „^]”. SSH-2.0-OpenSSH_5.3
Ostatni wiersz to ten, którego należy szukać:
Jeśli powie,
SSH-2.0
że to dobrze, serwer ssh, do którego się podłączono, obsługuje tylko protokół SSH w wersji 2. Nie będzie obsługiwał połączeń od klientów protokołu SSH V1.Jeśli jednak widzisz:
SSH-1.99-OpenSSH_5.3
Oznacza to, że koniec serwera nadal obsługuje protokół SSL w wersji 1. W
sshd_config
pliku znajduje się coś takiego :Protokół 1 jest wrażliwy i nie należy go używać.
Żeby to wyjaśnić. Jeśli widzisz SSH-2 podczas telnet do portu 22 zdalnego serwera, możesz używać tylko protokołu ssh w wersji 2, ponieważ serwer nie obsługuje protokołu 1.
Zgodnie z odpowiedzią cstamas powyżej flaga -v pokaże linię:
lub:
Chcesz się
version 2.0
tam zobaczyć .źródło
Możesz to szybko uzyskać za pomocą netcata z lokalnego komputera, na przykład:
źródło
Lubię to bardziej:
Zaletą jest to, że można to zrobić programowo, ponieważ połączenie nie jest otwarte. W przypadku Pythona spróbuj:
źródło
Jedyną znaną mi metodą jest posiadanie wystarczających uprawnień do przeglądania wpisów dziennika ssh
/var/log/auth.log
.Pierwsze i drugie pole
SSH_CONNECTION
zmiennej wskazują źródłowy adres IP i źródłowy port mojego połączenia. Korzystającgrep
z tych wartości/var/log/auth.log
, mogę znaleźć wpis dziennika od momentu uwierzytelnienia mojego połączenia ssh.Ten wpis dziennika mówi mi, że moje bieżące połączenie korzysta z protokołu ssh2. Oczywiście, jeśli sesja ssh była otwarta przez kilka dni, wpis dziennika może znajdować się w
/var/log/auth.log.0
jakimś starszymauth.log
pliku.źródło