Problem: Mam około 20-30 ssh-agent
tożsamości. Większość serwerów odmawia uwierzytelnienia Too many failed authentications
, ponieważ SSH zwykle nie pozwala mi wypróbować 20 różnych kluczy, aby się zalogować.
W tej chwili jestem ręcznie określając plik tożsamości dla każdego hosta, przy użyciu IdentityFile
, a IdentitiesOnly
dyrektywy, tak że SSH będzie próbował jeden plik klucza, który działa tylko.
Niestety przestaje to działać, gdy oryginalne klucze nie będą już dostępne. ssh-add -l
pokazuje mi poprawne ścieżki dla każdego pliku klucza i pasują do ścieżek w .ssh/config
, ale to nie działa. Najwyraźniej SSH wybiera wcięcie według podpisu klucza publicznego, a nie według nazwy pliku, co oznacza, że oryginalne pliki muszą być dostępne, aby SSH mógł wyodrębnić klucz publiczny.
Są z tym dwa problemy:
- przestaje działać, gdy tylko odłączę dysk flash przytrzymujący klawisze
- sprawia, że przekazywanie agentów jest bezużyteczne, ponieważ pliki kluczy nie są dostępne na zdalnym hoście
Oczywiście mogę wyodrębnić klucze publiczne z moich plików tożsamości i zapisać je na moim komputerze oraz na każdym komputerze zdalnym, na którym zwykle się loguję. Nie wydaje się to jednak pożądanym rozwiązaniem.
Potrzebuję możliwości wybrania tożsamości z ssh-agent według nazwy pliku, dzięki czemu mogę łatwo wybrać odpowiedni klucz za pomocą .ssh/config
lub przekazując -i /path/to/original/key
, nawet na zdalnym hoście, do którego SSH wybrałem. Byłoby jeszcze lepiej, gdybym mógł „nadać pseudonim” kluczom, aby nawet nie musiałem określać pełnej ścieżki.
authorized_keys
plik, który w zależności od użytego klucza wykonuje różne polecenia, nigdy nie zezwalając na bezpośredni dostęp do powłoki.