Łą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)?
Łą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)?
Odpowiedzi:
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 :
-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 -V
i uzyskać coś podobnego do:
> ssh -V
OpenSSH_6.6.1p1, OpenSSL 1.0.1e-fips 11 Feb 2013
Mam nadzieję że to pomoże.
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_config
pliku 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
Chcesz się version 2.0
tam zobaczyć .
Możesz to szybko uzyskać za pomocą netcata z lokalnego komputera, na przykład:
$ nc [IP_ADDRESS] 22
SSH-2.0-OpenSSH_5.3
Lubię to bardziej:
$ echo ~ | nc localhost 22
SSH-1.99-OpenSSH_3.9p1
Protocol mismatch.
$
Zaletą jest to, że można to zrobić programowo, ponieważ połączenie nie jest otwarte. W przypadku Pythona spróbuj:
ssh_protocol = float(re.search(r"SSH-(\d.\d+)").group(1))
Jedyną znaną mi metodą jest posiadanie wystarczających uprawnień do przeglądania wpisów dziennika ssh /var/log/auth.log
.
$ echo $SSH_CONNECTION
127.0.0.1 12375 127.0.0.1 22
Pierwsze i drugie pole SSH_CONNECTION
zmiennej wskazują źródłowy adres IP i źródłowy port mojego połączenia. Korzystając grep
z 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.0
jakimś starszym auth.log
pliku.