2013-05-02 14 views
13

Poprosiłem użytkowników o ich publiczny klucz ssh "id_rsa.pub", który następnie umieszczam w "/home/theiraccount/.ssh/authorized_keys", aby mogli zalogować się do serwera przez SSH. Chciałbym zautomatyzować ten proces.Klucz bezpieczeństwa SSH do sprawdzania kondycji?

Czy mimo to do rozsądku sprawdzam ciąg, który mi dają (programowo lub w inny sposób)? Chcę sprawdzić, czy sshd potrafi odczytać tekst i czy rzeczywiście wygląda na poprawny klucz publiczny (i czy nie został uszkodzony)?

Innymi słowy, jaki jest format pliku id_rsa.pub? Jeśli ktoś wchodzi na pole, co mogę napisać w skrypcie obsługi formularza, aby sprawdzić, czy jest kompletny i poprawny?

+0

Oto link do funkcji napisanej w Pythonie, która sprawdza poprawność kluczy: https://github.com/jirutka/ssh-ldap-pubkey/blob/master/bin/ssh-ldap-pubkey#L264 Zakładając, że jesteś po prostu zainteresowany podstawową walidacją, algorytm jest w zasadzie: 1. podzielić zawartość, pierwszy element to 'kt' = typ klucza, drugi element to ciąg klucza. 2. klucz podstawowy 64 dekodowania klucza 3. pierwsze cztery bajty są liczbami całkowitymi 'ktl', odpowiadającymi długości ciągu znaków typu klucz_typu 4. otrzymują znaki od 4 do 4 +' ktl' od rozszyfrowanego łańcucha 5. Powinno to być zgodne z typem klucza 'kt'. –

Odpowiedz

28

ssh-keygen mogą być wykorzystane do obliczenia odcisku palca pliku klucza, który zakończy się niepowodzeniem, jeśli nie przejdzie on klucz:

ssh-keygen -l -f id_rsa.pub 

Inną możliwością byłoby ssh-vulnkey, które mają tę zaletę, sprawdzając klucze na czarną listę znanych zagrożonych kluczy w tym samym czasie.

+0

nie działa dla kluczy z hasłami – vidstige

+0

@vidstige A _public_ key chroniony hasłem? Czemu? Klucz publiczny nie musi być chroniony hasłem, klucz prywatny powinien, a ty nie dałbyś go nikomu. Jaki przebieg pracy wymagałby sprawdzenia kluczy prywatnych? – mata

Powiązane problemy