Logowanie bez hasła ssh

Podstawową naszą cechą jest lenistwo. Dlatego dzisiaj nauczymy się jak przeprowadzić logowanie bez hasła ssh. Wykorzystamy do tego tradycyjnie parę kluczy szyfrujących. Publiczny i prywatny. Dodatkowo zabezpieczymy je frazą szyfrującą. Pokażę metody ładne i brzydkie. Zapraszam!

Logowanie za pomocą ssh

Aby zalogować się do zdalnej maszyny musimy wpisać:

ssh login@nazwa-hosta-lub-ip

Co jeśli chcemy na zdalnej maszynie wykonać polecenie, np. sprawdzić ilość  zajętych pod-montowanych dysków/partycji?

ssh login@host "df -h"

Co jeśli chcemy wykonać więcej poleceń?

ssh login@host "df -h; ls -la"

Ok, ale my za każdym razem musimy podać hasło do zalogowania. Co zrobić aby go nie podawać? Bo jesteśmy leniwi, albo chcemy wykonać skrypt i nie możemy w nim podać jawnie hasła. Jest prosty sposób. Para kluczy prywatny-publiczny.

 

Logowanie bez hasła ssh

Jak tego dokonać? Tworzymy parę kluczy. Wpisujemy w konsoli

ssh-keygen

Następnie dostajemy kilka poleceń w konsoli:

  1. Wprowadzamy nazwę kluczy. Może to być nazwa np. grupy (studenci, albo nazwa serwera np. ~/.ssh/id_mojSerwer. W moim przypadku jest to ~/.ssh/hypnos
  2.  Następnie keygen prosi o wprowadzenie hasła szyfrującego plik. Tu zaczynają się schody.  Jeśli chcemy logować się bez hasła, zostawiamy tu puste pole i wciskamy ENTER. (JEST TO BRZYDKIE ROZWIĄZANIE*)
  3. Powtórz frazę, jeśli nie chcemy szyfrować – dajemy ENTER (bez uzupełnienia)
  4. Następnie zostaje już wygenerowany klucz prywatny i publiczny w folderze ~/.ssh

 

logowanie bez hasła

UWAGA(!) Zauważ, że w powyższym screenie, przy nazwie klucza nie podałem ścieżki. Przez co, hypnos i hypnos.pub zapisał się nie w katalogu .ssh tylko w domowym. Należy pamiętać aby przy podawaniu nazwy, podać ścieżkę ~/.ssh/TwojaNazwaKlucza

Czy to już działa? No nie.

Teraz należy na zdalny serwer wysłać klucz. Możemy to oczywiście zrobić dla wielu. Dzięki temu, jednym kluczem będziemy mogli logować się do wszystkich naszych zdalnych maszyn.

Czy to bezpieczne?
Jeśli ustawiliśmy hasło szyfrujące na plik prywatny to tak. Ponieważ tylko osoba która go zna może odszyfrować klucz prywatny który możne następnie zostać użyty do ‚automatycznego’ logowanie się bez hasła przez ssh. Zobacz niżej „ładną metodę”.

Przesłanie klucza

Mamy kilka możliwości. Wpierw zajrzyjmy do katalogu .ssh
W moim przypadku jest tam plik:

hypnos (klucz prywatny, który należy strzec jak oka w głowie, kto go posiądzie będzie mógł logować się na nasz serwer)

hypnos.pub (klucz publiczny, który należy przesłać do serwera)

Aby móc zalogować się na zdalny serwer(-y) należy przesłać klucz publiczny TwojaNazwa.pub na serwer do folderu .ssh (twojego użytkownika) oraz dodać go do listy kluczy autoryzowanych. Jak to zrobić?

Mamy co najmniej dwa i wiele innych sposób:

 

cat ~/.ssh/MY_PUBLIC_KEY.pub | ssh <user>@<hostname> 'cat >> ~/.ssh/authorized_keys'

Lub prosty ładniejszy sposób:

ssh-copy-id user@hostname.example.com
Przypadki wykorzystania:
  • Autoryzacja użytkownika na zdalnej maszynie bez konieczności podania hasła
  • Ułatwiony dostęp do zasobów udostępnionych za pomocą protokołu SSH
  • Wykonywanie wielu poleceń bez konieczności ciągłej autoryzacji
  • Dane autoryzacyjne mogą być przekazywane z każdym następnym połączeniem (Agent forwarding)

Autoryzacja kluczem

Teraz wystarczy już tylko zalogować się za pomocą ssh:

ssh login@host

Użytkownik powinien zostać automatycznie zalogowany.

 

Co robić jak żyć?

*Brzydkie rozwiązanie: Ok, w sytuacji – jeśli mamy gwarancje (prawie nigdy jej nie mamy) że nikt niepowołany nie będzie miał dostępu do naszego klucza prywatnego (naszego komputera/konta) to możemy to zastosować.

Przykład: Prywatny komputer w domu i klucz do serwera też lokalnego. Gdzie dostęp do komputera jest ściśle regulowany)

Rozwiązanie ładne: to wybranie frazy szyfrującej. – Tak ale teraz ktoś może powiedzieć… przecież będę musiał i tak wpisywać „hasło” w postaci tej frazy, aby odblokować dostęp. Tak to prawda, ale tylko raz podczas uruchomienia sesji w konsoli. Dzięki temu rozwiązaniu przy użyciu:

eval ssh-agent -s
ssh-add ~/.ssh/id_kluczPrywatny

Wówczas wpiszemy hasło i już mamy dostęp z pozycji naszej sesji konsoli bez hasła do naszego serwera.

Logowanie bez hasła ssh
5 (100%) 1 vote

Autor

Dominik

Zajmuje się tworzeniem stron internetowych i realizacją działań SEO na rzecz dużych i małych przedsiębiorstw. Pracowałem między innymi dla Semahead czy wydawnictwa HELION. Prowadzę szkolenia z zakresu HTML5 i SEO. Każdego dnia odkrywam nowe możliwości, tak by rozwijać Twój biznes w sieci.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *