Dostęp SSH z poziomu Ruby do przestarzałych serwerów
Przetłumaczone automatycznie z angielskiego. Przeczytaj oryginał
Jeśli z jakichś nieznanych powodów musisz połączyć się przez SSH z przestarzałym serwerem z poziomu kodu Ruby, to jesteś we właściwym miejscu. Ale najpierw odrobina teorii. W OpenSSH są 4 konfigurowalne elementy dotyczące bezpieczeństwa:
- KexAlgorithms: klucze per połączenie (wymiana kluczy)
- HostkeyAlgorithms: klucz publiczny identyfikujący serwer wobec klientów
- Ciphers: szyfrowanie połączenia
- MACs: kody uwierzytelniania wiadomości
Z czasem różne algorytmy stają się przestarzałe i znane są ich podatności. Jednak w internecie i w sieciach prywatnych jest mnóstwo serwerów, które wciąż używają tych starych rozwiązań. Zwykłym klientem SSH, podobnie jak kodem klienta net-ssh w Ruby, nie połączysz się z takimi serwerami – zamiast tego dostaniesz komunikaty błędów, że nie można nawiązać połączenia.
Jest na to rozwiązanie.
Po pierwsze:
:host_key => "+ssh-dss"Następnie:
append_all_supported_algorithm: trueDzięki tym dwóm dodatkowym opcjom przekazywanym do metody Net::SSH.start połączysz się z większością działających serwerów. Wciąż istnieje pewna szansa, że trzeba będzie coś dostosować, np. w przypadku starego sprzętu Cisco, ale pokryjesz 99,99%. Mam nadzieję, że okaże się to przydatne – niezależnie od tego, czy próbujesz administrować swoim starym sprzętem sieciowym, czy po prostu bawisz się różnymi rzeczami…