Mając bardzo dziwny problem. Stworzyłem mały skrypt bash, który uruchamia polecenie na zdalnym hoście za pośrednictwem ssh (przy użyciu uwierzytelniania za pomocą klucza publicznego).
Kiedy uruchamiam ten skrypt ręcznie z wiersza poleceń, działa dobrze, ale po umieszczeniu w /etc/cron.hourly kończy się niepowodzeniem z Permission denied, please try again.błędem.
- Wyraźnie ustawiam klucz w skrypcie za pomocą
ssh -i /root/.ssh/id_rsa user@remote "command"; - skrypt działa jako root (dodałem
echo `id` > /tmp/whoami.logpodwójną kontrolę); i - klucz ssh nie jest chroniony hasłem ...
System to serwer Ubuntu 12.04, nie mam dużego dostępu po stronie zdalnej do rozwiązywania problemów, ale jak powiedziałem, ręczne uruchamianie ssh lub tego samego skryptu bash z wiersza poleceń działa.
Każdy pomysł, dlaczego tak się dzieje lub jak to naprawić?
aktualizacja
okazuje się, że się pomyliłem, a klucz ssh był chroniony hasłem (z pękiem kluczy ładującym ssh-agenta), dlatego nie udało mu się to ze skryptu, ale nie podczas uruchamiania z sesji bash. Dodanie . ~/.keychain/$HOSTNAME-shdo mojego skryptu rozwiązało problem (dzięki @grawity, który wskazał mi właściwy kierunek i udzielił wyczerpującej odpowiedzi).
SSH_AUTH_SOCKjest on powiązany (chociaż chętnie próbuję cokolwiek). Uzyskuję bezpośredni dostęp do pliku klucza, a plik klucza nie jest chroniony hasłem. Co do KRB5CCNAMEszybkiego wyszukiwania pokazał to jest coś zrobić z Kerberos. Znowu - nie widzę związku z tym problemem, ale może coś mi tu brakuje ...
-vopcję do tego sshpolecenia ...
ssh -iW obu przypadkach jawnie używam klucza za pomocą polecenia ... Spróbuję usunąć te zmienne w skrypcie i zobaczę. Dobra sugestia do dodania -v- ja też to dodam.
SSH_AUTH_SOCKiKRB5CCNAMEzmiennych środowiskowych.