Jak zautomatyzować logowanie SSH za pomocą hasła? Konfiguruję moją testową maszynę wirtualną, więc nie jest rozważane wysokie bezpieczeństwo. SSH wybrany dla akceptowalnego bezpieczeństwa przy minimalnej konfiguracji.
dawny)
echo password | ssh id@server
To nie działa
Pamiętam, że zrobiłem to z kilkoma sztuczkami, którymi ktoś mnie prowadził, ale nie pamiętam teraz sztuczki, której użyłem ...
ssh
password
automation
Eonil
źródło
źródło
Odpowiedzi:
Nie używaj hasła. Wygeneruj klucz SSH bez hasła i prześlij go na maszynę wirtualną.
Jeśli masz już klucz SSH, możesz pominąć ten krok… Po prostu naciśnij Enterklawisz i oba hasła:
Skopiuj klucze na serwer docelowy:
Teraz spróbuj zalogować się do komputera za pomocą
ssh 'id@server'
i zalogować się :aby upewnić się, że nie dodaliśmy dodatkowych kluczy, których się nie spodziewałeś.
Na koniec sprawdź logowanie…
Możesz także rozważyć użycie,
ssh-agent
jeśli chcesz spróbować zabezpieczyć klucze hasłem.źródło
źródło
ssh
przed użyciemsshpass
należy raz uruchomić zwykły , aby potwierdzić odcisk palca RSA.bash_history
w postaci zwykłego tekstu na twoim komputerze.history -r
po poleceniu, aby usunąć swoją historię. Dobra racja jednak.Chociaż poprawną odpowiedzią na twoje pytanie jest sshkey , istnieje bezpieczniejszy sposób - klucze SSH. Tylko trzy kroki dzieli Cię od rozwiązania:
Wygeneruj parę kluczy rsa :
następnie skopiuj go na serwer za pomocą jednego prostego polecenia :
możesz teraz zalogować się bez hasła :
źródło
ssh-copy-id
.ssh-copy-id -i ~/.ssh/tatu-key-ecdsa user@host
Użyj spodziewać:
Przykład:
źródło
-oStrictHostKeyChecking=no -oUserKnownHostsFile=/dev/null
komendę ssh, aby uniknąć przyjęcia maszyny do znanychMoże ci się to nie przydać, ale możesz to zrobić za pomocą Perla:
źródło
Dziwi mnie, że nikt nie wspomniał
plink
zputty-tools
pakietu w Ubuntu:Jest również dostępny w systemie Windows, a jego składnia jest w większości zgodna z klientem openssh.
źródło
putty-tools
pakiecieJednokrotne logowanie SSH jest zwykle realizowane przy użyciu uwierzytelniania za pomocą klucza publicznego i agenta uwierzytelniania. Możesz łatwo dodać testowy klucz maszyny wirtualnej do istniejącego agenta uwierzytelniania (patrz przykład poniżej). Istnieją inne metody, takie jak gssapi / kerberos, ale są one bardziej złożone.
sshpass
W sytuacjach, w których
password
jest dostępna jedyna dostępna metoda uwierzytelniania, do automatycznego wprowadzenia hasła można użyć sshpass . Proszę zwrócić szczególną uwagę na sekcję UWAGI DOTYCZĄCE BEZPIECZEŃSTWA na stronie podręcznika . We wszystkich trzech opcjach hasło jest widoczne lub przechowywane w postaci zwykłego tekstu :Anonimowy potok (zalecany przez sshpass)
Jest to dość kłopotliwe w bash, prawdopodobnie łatwiejsze w językach programowania. Inny proces może dołączyć się do twojego potoku / fd przed zapisaniem hasła. Okno możliwości jest dość krótkie i ograniczone do twoich procesów lub rootowania.
Zmienna środowiskowa
Ty i root możecie czytać zmienne środowiskowe procesu (tj. Hasło), gdy sshpass jest uruchomiony (
cat /proc/<pid>/environ | tr '\0' '\n' | grep ^SSHPASS=
). Okno możliwości jest znacznie dłuższe, ale wciąż ogranicza się do własnych procesów lub rootowania, a nie innych użytkowników.Argument wiersza polecenia (najmniej bezpieczny)
Jest to wygodne, ale mniej bezpieczne, jak opisano na stronie podręcznika. Argumenty wiersza poleceń są widoczne dla wszystkich użytkowników (np
ps -ef | grep sshpass
.). sshpass próbuje ukryć argument, ale nadal jest okno, w którym wszyscy użytkownicy mogą zobaczyć twoje hasło przekazywane przez argument.Dygresja
Ustaw zmienną HISTCONTROL bash na
ignorespace
lubignoreboth
i poprzedzaj wrażliwe polecenia spacją. Nie zostaną zapisane w historii.Uwierzytelnianie klucza publicznego SSH
Hasło jest bardzo ważne. Każdy, kto w jakiś sposób uzyska plik klucza prywatnego, nie będzie mógł go użyć bez hasła.
Skonfiguruj agenta uwierzytelniania SSH
Połącz jak zwykle
Zaletą jest to, że twój klucz prywatny jest szyfrowany i wystarczy, że wprowadzisz jego hasło tylko raz (za pomocą bezpieczniejszej metody wprowadzania).
źródło
Na pewno nie chcesz używać kluczy SSH zamiast haseł? W ten sposób jest zarówno bezpieczny, jak i automatyczny.
źródło
W zależności od potrzeb automatyzacji, być może Ansible będzie dla ciebie dobrym rozwiązaniem. Może ładnie zarządzać takimi rzeczami, jak monitowanie o hasło, monitowanie o hasło sudo, różne sposoby zmiany użycia, bezpieczne używanie zaszyfrowanych tajemnic (skarbca).
Jeśli to nie jest odpowiednie, sugerowałbym oczekiwać, jak sugerowano w innej odpowiedzi.
źródło