Jak większość sysadminów, których używam openssh przez cały czas. Mam około tuzina kluczy ssh, lubię mieć inny klucz ssh dla każdego hosta. Powoduje to jednak problem, gdy łączę się z hostem po raz pierwszy, a wszystko, co mam, to hasło. Chcę po prostu połączyć się z hostem za pomocą hasła, w tym przypadku nie ma klucza ssh. Jednak klient ssh zaoferuje wszystkie klucze publiczne w moim ~/.ssh/
(wiem o tym patrząc na wynik ssh -v
). Ponieważ mam ich tak wiele, rozłączę się z powodu zbyt wielu błędów uwierzytelnienia.
Czy jest jakiś sposób, aby powiedzieć mojemu klientowi ssh, aby nie oferował wszystkich kluczy ssh?
ssh
public-key
private-key
Rory
źródło
źródło
Odpowiedzi:
Jest to oczekiwane zachowanie według strony podręcznika
ssh_config
:Zasadniczo, określenie
IdentityFile
s tylko dodaje klucze do bieżącej listy, którą agent SSH już przedstawił klientowi.Spróbuj zastąpić to zachowanie poniższym opisem na dole
.ssh/config
pliku:Możesz również zastąpić to ustawienie na poziomie hosta, np .:
źródło
ssh -o "IdentitiesOnly true" -v -A user@host
tego, czego używam do zalogowania się na maszynie, która nie ma żadnego z moich kluczy, ale chcę zaoferować przekazywanie agentów dalej. (-v
do pełnego debugowania).yes
(i nietrue
)?IdentitiesOnly
może nie zawsze pomóc, może być konieczne wyłączenie hosta; patrz superuser.com/questions/859661/…Chociaż inni sugerowali to rozwiązaniami opartymi na konfiguracji, prawdopodobnie warto zauważyć, że można to łatwo zrobić jednorazowo w wierszu poleceń za pomocą:
źródło
Zgodnie z rozwiązaniem Jamesa Sneeringera, możesz po prostu ustawić ssh_config w następujący sposób:
Jeśli łączysz się z określonym kluczem z wieloma komputerami spoza wspólnej domeny, rozważ nadanie im wszystkich nazw CNAME we własnym DNS. Robię to ze wszystkimi systemami klientów.
źródło
Podobnie jak w rozwiązaniu user23413, możesz całkowicie wyłączyć uwierzytelnianie klucza publicznego dla określonego hosta (lub wzorca wieloznacznego):
źródło
Jeśli wskażesz konkretny plik klucza za pomocą ssh -i / path / to / key, użyje go tylko wtedy, gdy inne są załadowane do agenta i nie zostaniesz poproszony o podanie hasła. Możesz również edytować swoje ~ / .ssh / config i reklamować coś takiego ...
Host foo.example.com
IdentityFile .ssh / id_rsa_foo.example.com
możesz także zrobić ...
Host * .example.org
IdentityFile .ssh / id_rsa_example.org
źródło
IdentitiesOnly
tylko z taką wolą.