Powiedzmy, że mam klucz do Github wraz z innymi kluczami. Dodałem wiele kluczy do mojego agenta ssh ( ssh-add -L
zwraca wiele wierszy) na moim komputerze domowym A. W moim .ssh/config
ustawiłem, który klucz ma być używany z którym hostem, więc np.
ssh -T -vvv [email protected] 2>&1 | grep Offering
daje
debug1: Offering RSA public key: /Users/doxna/.ssh/id_rsa.github
Zgodnie z oczekiwaniami oferowany jest tylko jeden klucz. Ale potem przesyłam wiadomość do hosta B ForwardAgent yes
i powtarzam to samo polecenie
debug1: Offering RSA public key: /Users/doxna/.ssh/id_rsa.linode2
debug1: Offering RSA public key: /Users/doxna/.ssh/id_rsa.helium
debug1: Offering RSA public key: /Users/doxna/.ssh/id_rsa.github
co oznacza, że próbuje wszystkich moich kluczy. Jest to problematyczne, ponieważ tylko ograniczona liczba kluczy może zostać wypróbowana przed powrotem serwerów Too many authentication failures
. Próbowałem więc edytować .ssh/config
na hoście B, aby uwzględnić
Host github.com
IdentityFile /Users/doxna/.ssh/id_rsa.github
IdentitiesOnly yes
ale wtedy nie otrzymuję żadnych kluczowych ofert, ale raczej
debug2: key: /Users/doxna/.ssh/id_rsa.github ((nil))
co, jak sądzę, oznacza, że klucz nie został znaleziony (?) A w końcu klucz znajduje się na moim komputerze domowym A, a nie na hoście B, więc pytanie brzmi, jak się do niego odnosić na hoście B? Mam nadzieję, że udało mi się wyjaśnić pytanie.
ssh
wskażesz plik klucza publicznego bez powiązanego pliku klucza prywatnego, powinien on po prostu odczytać klucz publiczny z pliku i pozwolić agentowi na użycie odpowiedniego klucza prywatnego do wygenerowania podpisu.Dobra odpowiedź od @Kasperd, ale pamiętaj również, że jeśli komputer B zostanie przejęty lub jeśli nie ufasz wszystkim osobom z uprawnieniami roota, nadal narażasz wszystkie swoje klucze na nadużycia, dopóki jesteś zalogowany na tym hoście.
Lepszym rozwiązaniem może być więc przekazywanie dostępu tylko do potrzebnych kluczy. Może spróbuj,
ssh-agent-filter
który jest w repozytoriach debian / Ubuntu lub z github .EDYCJA: Postanowiłem
ssh-ident
raczej niżssh-agent-filter
selektywne przekazywanie kluczy, choć nie jest to tak płynne doświadczenie, jak można by oczekiwać.źródło
SSH_*
zmienne środowiskowe i zaloguj się do dowolnego miejsca, w którym chcesz się udać, używając klucza, mimo że nigdy nie masz rzeczywistej kopii.