Wiem, że są tu dziesiątki pytań na temat łączenia się z serwerem SSH bez wpisywania hasła za każdym razem , a odpowiedź brzmi zawsze: „użyj klucza publicznego”. Cóż, znajduję się w rzadkich okolicznościach, w których tak naprawdę nie ma takiej opcji. Z jakiegoś niewytłumaczalnego powodu demon OpenSSH na serwerze, z którym próbuję się połączyć, jest skonfigurowany
RSAAuthentication no
PubkeyAuthentication no
w /etc/ssh/sshd_config
. Nie mam dostępu administracyjnego do serwera, więc nie mogę zmienić tych ani innych opcji konfiguracji serwera. (Oczywiście mam pełną kontrolę nad konfiguracją klienta: OpenSSH 5.8 w systemie Linux).
Jakie są moje opcje, a w szczególności jaka jest najbezpieczniejsza opcja, aby uniknąć konieczności wpisywania hasła za każdym razem, gdy chcę SSH na tym serwerze? Dbam o to, aby moje komputery były dość dobrze zabezpieczone, więc załóżmy, że ryzyko związane z przechowywaniem hasła w pliku na kliencie jest akceptowalnie niskie, jeśli jest to rzeczywiście konieczne.
Inne metody uwierzytelniania, które serwer może zaakceptować, to oczywiście interfejs API GSS (o którym nic nie wiem), interaktywna klawiatura (o której też nic nie wiem) i hasło. Oto kilka odpowiednich opcji konfiguracji:
#ChallengeResponseAuthentication yes
#KerberosAuthentication no
GSSAPIAuthentication yes
GSSAPICleanupCredentials yes
#UsePAM no
a oto -vv
ślad debugowania ( ):
debug1: Authentications that can continue: gssapi-with-mic,password,keyboard-interactive
debug1: Next authentication method: gssapi-with-mic
debug1: Unspecified GSS failure. Minor code may provide more information
Credentials cache file '/tmp/krb5cc_1000' not found
debug1: Unspecified GSS failure. Minor code may provide more information
Credentials cache file '/tmp/krb5cc_1000' not found
debug1: Unspecified GSS failure. Minor code may provide more information
debug1: Unspecified GSS failure. Minor code may provide more information
debug2: we did not send a packet, disable method
debug1: Next authentication method: keyboard-interactive
debug2: userauth_kbdint
debug2: we sent a keyboard-interactive packet, wait for reply
debug1: Authentications that can continue: gssapi-with-mic,password,keyboard-interactive
debug2: we did not send a packet, disable method
debug1: Next authentication method: password
/etc/krb5.keytab
? GSSAPI (Kerberos) może być prosty w konfiguracji po stronie klienta; Musiałbym jednak poprosić o nazwę hosta serwera. (Również:keyboard-interactive
jest bardzo podobny dopassword
, z wyjątkiem jednego monitu „Hasło:”.)/etc/krb5.keytab
, ale tak jest/etc/krb5/krb5.keytab
. Nie mam dostępu do treści. Nazwa serwera tosftp.pass.psu.edu
(nie sądzę, aby było to szkodliwe), jeśli pomoże ci to wyjaśnić procedurę.Odpowiedzi:
W takim przypadku pisanie (lub lepsze nagrywanie) oczekiwanego skryptu byłoby jedną z twoich opcji.
Każdy system jest inny, więc nie będzie skryptu, ale dzięki autoexpect bardzo łatwo jest nagrać skrypt do tego celu.
źródło
Z informacji zebranych do tej pory serwer
sftp.pass.psu.edu
obsługuje uwierzytelnianie Kerberos 5 (GSSAPI) i znajduje się wdce.psu.edu
dziedzinie.Kerberos jest bardzo popularny w sieciach z wieloma serwerami i stacjami roboczymi; utworzyło to wiele dużych instytucji edukacyjnych. Jedną z jego zalet w porównaniu z uwierzytelnianiem za pomocą klucza publicznego jest to, że pojedynczy
kinit
automatycznie dostarcza poświadczenia dla wszystkich komputerów w dziedzinie Kerberos, bez konieczności kopiowania kluczy publicznych do każdego z nich. Inną jest obsługa protokołu - te same dane uwierzytelniające Kerberos mogą być używane z ponad 30 protokołami (poczta, systemy plików, bazy danych ...), nie tylko SSH.(W odniesieniu do „nieświadomych administratorów systemu Windows”:
dce.psu.edu
dziedzina wydaje się być oparta na usłudze Active Directory i hostowana przez serwery Windows).Spróbuj wykonać następujące kroki:
Zaloguj się do Kerberos. ( Narzędzia
kinit
iklist
mogą znajdować się w pakiecie „krb5-user” lub podobnym pakiecie, jeśli nie są jeszcze dołączone do systemu.)Jeśli nie zostaną wyświetlone żadne błędy, logowanie się powiodło.
klist
powinien pokazywać element „krbtgt/dce.psu.edu@...
”.Teraz połącz się z serwerem SSH, z
-vv
opcjami; jeśli uwierzytelnienie się powiedzie, dobrze.Jeśli tak się nie stanie, być może trzeba będzie edytować
/etc/krb5.conf
plik. W[domain_realm]
sekcji dodaj następujące informacje:Przy domyślnych ustawieniach Krb5 bilet uzyskany w punkcie 1 powinien być ważny przez 10 godzin i przedłużany na tydzień. Nie mogę jednak zweryfikować ustawień.
Jeśli chcesz zachować hasło w pliku, prosty
kinit your_principal < password.txt
powinien działać, chociaż nie jest całkowicie niezawodny.Dzięki
ktutil
niemu można utworzyć „keytab” zamiast hasła.i zaloguj się przy użyciu:
źródło
ssh -vv
są podobne do śladu, który opublikowałem, z tą różnicą, żedebug1: Unspecified GSS failure. Minor code may provide more information\n Server not found in Kerberos database
zamiast tego nie znaleziono pliku pamięci podręcznej referencji.host/sftp.pass.psu.edu
, ale jego prawdziwa nazwa powinna byćhost/lutz.cac.psu.edu
. Możesz obejść ten problem, dodając „128.118.2.85 sftp.pass.psu.edu
” do / etc / hosts, ale jest to trochę brzydkie - byłoby znacznie ładniej, gdyby administratorzy naprawili serwer ...host/lutz.cac.psu.edu
ihost/sftp.pass.psu.edu
) w jednym pliku klucza. (Poprzednie wersje używały tylko pierwszej.)/etc/hosts
zgodnie z sugestią dostajędebug1: Unspecified GSS failure. Minor code may provide more information Generic error (see e-text)
. Nic innego w danych wyjściowych nie ma związku z błędem.Zastanowiłbym się nad rozwiązaniem mieszanym, w którym hasło wprowadza się tylko raz, a komputer utrzymuje gniazdo dla zdalnego serwera SSH. Możesz wykonać następujące kroki, aby skonfigurować
ControlMaster
właśnie z tego powodu.źródło
screen
do ochrony powłok przed zakończeniem w przypadku zerwania połączenia lub zawieszenia.