W ramach skryptu startowego muszę automatycznie otworzyć kilka okien terminali gnome, jeden z tych terminali automatycznie wysyła:
ssh [email protected]
Ograniczeniem jest to, że nadal muszę wpisać hasło, aby zakończyć połączenie SSH.
Chcę, aby mój skrypt zainicjował polecenie i dokończył połączenie. W tym zakresie starałem się postępować zgodnie z instrukcjami opisanymi w zaakceptowanej odpowiedzi tutaj .
Z systemu, z którego chcę się połączyć, uruchomiłem:
ssh-keygen
Enter file in which to save the key: /home/user/ssh/keys/server1key
Następnie skłonił mnie do wprowadzenia hasła. Zostawiłem to puste, ponieważ nie byłem pewien, po co to będzie, więc założyłem, że ustawienie jednego będzie wymagało odblokowania go za pomocą wspomnianego hasła za każdym razem, gdy go użyję.
Kontynuując powyższe instrukcje, uruchomiłem i otrzymałem następujące informacje:
ssh-copy-id user@IP
ERROR: No identities found
Szybkie wyszukiwanie ujawniło, że muszę określić lokalizację klucza, ponieważ nie było go w domyślnej lokalizacji zapisu, więc naprawiłem:
ssh-copy-id -i /home/user/ssh/keys/server1key.pub [email protected]
Po zapytaniu o hasło serwera pomyślnie dodał klucz. Jednak po próbie zalogowania się za pomocą „ssh użytkownik @ IP” nadal byłem monitowany o hasło.
O ile mi wiadomo, postępowałem zgodnie z instrukcjami, więc albo coś mi brakuje, a może istniejąca konfiguracja uniemożliwia mi to uruchomienie?
Oba systemy używają 18.04 i openssh.
źródło
Odpowiedzi:
Nie udaje się z tego samego powodu, który
ssh-copy-id
zawiódł za pierwszym razem - tj. Dlatego, że wybrałeś inną niż domyślna lokalizację pliku tożsamości.Możesz rozwiązać to w ten sam sposób, dodając
-i /home/user/ssh/keys/server1key
dossh
polecenia - zwróć uwagę, że po stronie klienta wymagana jest lokalizacja pliku klucza prywatnego .Od
man ssh
Alternatywnie, możesz chcieć utworzyć
~/.ssh/config
wpis pliku dla hosta wzdłuż liniiźródło
~/.ssh/config
, w przeciwnym razie OpenSSH korzysta z domyślnych ustawień systemowych/etc/ssh/ssh_config
. Na wypadek, gdyby ktokolwiek uznał to za pomocne, przesłałem jakiś czas wcześniej gotowy ssh_config do mojego GitHub jako punkt wyjścia dla użytkowników, którzy mogą nie mieć czasu na przeczytanie strony~/.ssh/config
globalnessh_config
, ale samo posiadanie pliku nie wyłączy konfiguracji całego systemu.Innym powodem
ssh-copy-id
niepowodzenia jest to, że klucz nie został dodany do agenta SSH.Najpierw sprawdź i uruchom, jeśli
ssh-agent
działa:Jeśli dostaniesz identyfikator procesu, możesz dodać swój klucz:
Wraz z
-k
dodaniem klucza do pęku kluczy.Sprawdź, czy klucze zostały dodane za pomocą:
ssh-copy-id
powinien już działać.źródło
Mam nadzieję, że to zadziała dla ciebie. „Sshpass -p twoje hasło” automatycznie zaloguje się na zdalnym hoście.
[root @ localhost .ssh] # sshpass -p hasło123 ssh -l root localhost
źródło
Wystarczy wykonać 2 polecenia:
Długa odpowiedź:
I wtedy:
źródło