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:

Ruby
:host_key => "+ssh-dss"

Następnie:

Ruby
append_all_supported_algorithm: true

Dzię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…

Wersja Markdown

Wszystkie treści na tej stronie są udostępniane na licencji Uznanie autorstwa – Użycie niekomercyjne – Bez utworów zależnych 4.0 Międzynarodowe (CC BY-NC-ND 4.0). Cytuj jako: Michał Sobczak, „Dostęp SSH z poziomu Ruby do przestarzałych serwerów”, 24 października 2022, https://michalasobczak.pl/pl/posts/ssh-access-using-ruby-to-outdated-servers.html