Mam serwer, do którego muszę często uzyskiwać dostęp przez ssh, ponieważ na nim obliczam. Teraz centrum komputerowe wyraźnie zabrania kluczy SSH, ponieważ są „niepewne”. Uważają, że wpisanie mojego hasła na klawiaturze za każdym razem, możliwe przed innymi ludźmi, jest znacznie bezpieczniejszym sposobem logowania.
Teraz; Nie mogę zmienić ich zdania (próbowałem).
Czy istnieje sposób na przynajmniej tymczasowe przechowywanie haseł SSH, tak jak GIT może przechowywać hasła w pamięci podręcznej przez określony czas?
the computing center explicitly forbids SSH-keys because they are "insecure"
- moja opinia w tej sprawie? Znajdź nowego hosta serwera, ponieważ twój jest oczywiście nieudolny.publickey
uwierzytelniania. Jeśli wyłączyszpassword
uwierzytelnianie na serwerze, uniemożliwisz wszystkim tym atakującym odgadnięcie haseł. A jeśli atakujący podejmie próbę ataku mitm na klienta, który wcześniej nie przechowywał klucza publicznego serwera, jesteś znacznie lepiej chronionypublickey
niż przy użyciupassword
uwierzytelniania.Odpowiedzi:
Ponowne użycie połączenia
SSHv2 pozwala temu samemu uwierzytelnionemu połączeniu na ustanowienie wielu „kanałów” - powłoki interaktywnej, polecenia wsadowego, SFTP, wraz z dodatkowymi, takimi jak przekazywanie agentów lub przekazywanie TCP. Twój serwer prawdopodobnie domyślnie obsługuje multipleksowanie połączeń. (Jeśli Twoi administratorzy narzekają, nigdzie nie buforuje Twojego hasła - buforuje całe połączenie).
Z OpenSSH masz
ControlMaster
iControlPath
opcje (-M i -S), aby skorzystać z tego:Uruchom „główne” połączenie SSH za pomocą
-M
. (Ponieważ nie masz jeszcze ścieżki ControlPath w konfiguracji, musisz ją określić w wierszu polecenia, używając-S
. Musi długo działać , więc dodam-fN
opcje, aby przejść do tła; w przeciwnym razie są one opcjonalne).Wróciłeś do lokalnej powłoki.
Rozpocznij nowe połączenie przez master:
Jesteś w.
Aby było to przydatne dla Git / rsync / SFTP, musisz skonfigurować
ControlPath
w swojej konfiguracji, ponieważ nie będziesz w stanie określić-S
cały czas:Możesz to zautomatyzować - najnowsze wersje OpenSSH mają również tę,
ControlPersist
która automatycznie ustanawia połączenie główne w tle, jeśli jeszcze go nie ma. Pozwala to pominąć krok 1 i po prostu użyć ssh, jak zwykle.Konfiguracja w
~/.ssh/config
:Pierwsze połączenie wymaga podania hasła:
Drugi nie:
Aby kontrolować multiplekser (zatrzymaj go lub skonfiguruj przekazywanie TCP), użyj
-O
opcji.Podobną metodę obsługują najnowsze wersje PuTTY .
źródło
Posługiwać się
sshpass
sshpass ( github , strona man ) to narzędzie, które automatycznie podaje hasło do ssh. Bezpiecznym sposobem korzystania z niego jest:
Spowoduje to odczytanie hasła
~/.ssh/compute_password
, podobnie jak pliku klucza prywatnego bez hasła. Możesz umieścićsshpass
polecenie w małym skrypcie powłoki lub w aliasie powłoki, aby uniknąć wpisywania pełnego polecenia. Niestety nie znalazłem sposobu, aby to zrobić~/.ssh/config
.(Możliwe jest również określenie hasła bezpośrednio w wierszu polecenia
sshpass
, ale należy tego unikać, ponieważ wycieka ono hasło każdemu, kto może to zrobićps
)Porównanie z innymi metodami
Takie podejście jest oczywiście mniej bezpieczne niż prawidłowe skonfigurowanie uwierzytelniania za pomocą klucza publicznego, ale prawdopodobnie już o tym wiesz.
Jest również mniej bezpieczny niż odpowiedź @ grawity na temat ponownego użycia połączenia, ale ma tę zaletę, że wcale nie musi wprowadzać hasła interaktywnie.
Można rozważyć odpowiedź @ grawity jako alternatywę dla uwierzytelniania klucza publicznego za pomocą hasła i buforowania klucza prywatnego (tj
ssh-agent
.). Wtedy moja odpowiedź byłaby alternatywą dla uwierzytelniania klucza publicznego bez hasła w pliku klucza prywatnego.źródło
head -c 16 /dev/urandom | base64
dla 128 bitów) i nie użyjesz go w innych systemach, to pod względem bezpieczeństwa jest podobny do klucza. Tak trudna do brutalnej siły i tak prosta w użyciu z pliku, jeśli nie jest zaszyfrowana. Dotyczy to również złego faceta, jeśli dostaną plik. Jedyną różnicą jest to, że hasło jest wysyłane do serwera w niezmienionej postaci, podczas gdy klucze mają lepszą matematykę, aby udowodnić, że posiadasz poprawny klucz prywatny bez ujawnienia go, a pod względem użyteczności trudniej jest zaszyfrować plik zawierający hasło (nie standardowe narzędzia).Użyj menedżera haseł.
Niektóre menedżery haseł (np. KeePassXC) mają funkcję „automatycznego wpisywania”. Przechowujesz hasło w menedżerze haseł, odblokowujesz bazę danych po uruchomieniu menedżera i za każdym razem, gdy
ssh
monitujesz o hasło, naciskasz kombinację klawiszy, która powoduje, że menedżer haseł zapisuje twoje długie hasło do konsoli.Nie musisz kopiować, zapamiętaj cokolwiek (oprócz hasła do odblokowania bazy danych) i możesz mieć silne hasło bez mashowania tych 30 znaków przy każdej próbie logowania.
Możesz wybrać swój ulubiony z tej listy: https://en.wikipedia.org/wiki/List_of_password_managers
źródło
gnome-terminal
zmienia tytuł nassh somehost
kiedy ssh prosi mnie o hasło, dzięki czemu możesz bez problemu dopasować okno tytułu do tego. Nie wiem nic o funkcjach „anti-keylogging” - codziennie używam KeePassXC w terminalu, a najgorsze, z czym miałem do czynienia, to wybranie odpowiedniego konta z listy.Inną alternatywą jest użycie klienta ssh z GUI. W systemie Windows oczywistym wyborem byłby PuTTY . Istnieje również wersja PuTTY na Linuksa, zwłaszcza większość dystrybucji opartych na Debianie, takich jak Ubuntu, zwykle zawierają PuTTY w swoich repozytoriach.
Kolejnym naprawdę dobrym klientem jest Termius . Obsługuje nie tylko Windows i Linux, ale także OSX, iOS i Android. Chociaż została zaprojektowana przede wszystkim na telefony, wersja komputerowa jest całkiem dobra.
Jeśli się nie mylę, czcigodny Hyperterminal w systemie Windows również ma / miał wbudowanego klienta ssh, ale nie używałem systemu Windows od bardzo dawna, więc nie jestem do końca pewien.
Wszyscy klienci GUI mają możliwość zapisywania ustawień połączenia, które obejmują nazwę użytkownika i hasło.
źródło