To pytanie ma już tutaj odpowiedzi :
Komentarze
Odpowiedź
W systemie Ubuntu zainstaluj sshpass
, a następnie użyj go w ten sposób:
sshpass -p "YourPassword" ssh user@host
sshpass
obsługuje również przekazywanie hasła interaktywnego klawiatury z pliku lub zmiennej środowiskowej, co może być bardziej odpowiednią opcją w każdej sytuacji, w której istotne jest bezpieczeństwo. Zobacz man sshpass
, aby uzyskać szczegółowe informacje.
Komentarze
- Chociaż nie jest to zalecane i nie jest dobrą praktyką, to jest właśnie odpowiedź na pytanie. Rozważ użycie kluczy, jak opisano powyżej. Ale jeśli ' jest poważny problem techniczny, to jest to rozwiązanie, o które pytano.
- Głosuję tylko za odpowiedzią. Nie " racjonalnie dlaczego nie ' – zamiast tego robisz to w ten sposób " odpowiedzi. Tylko odpowiedź. w związku z tym zagłosowałem za Ciebie 🙂
- Nie ' całkowicie nienawidzę sshpass, w rzeczywistości ' używam to tymczasowo. Jednak użycie ' -p ' jest niepotrzebne i niepożądane. Najpierw ustaw zmienną SSHPASS, a następnie sshpass -e ssh < ssh-args >.
- @Brad If masz roota na skrzynce, możesz zainstalować
sshpass
używając yum --enablerepo=epel install sshpass
.
- Ta odpowiedź działa również w Manjaro ( Arch-based).
Odpowiedz
Jeśli alternatywą jest umieszczenie hasła w skrypcie lub ssh
wiersz poleceń lub zwykły plik tekstowy, a następnie „re DUŻO lepiej zamiast tego użyć klucza ssh
. Tak czy inaczej, każdy, kto ma dostęp do konta, na którym jest przechowywany ssh
skrypt klienta byłby w stanie użyć tego, aby dostać się do serwera, ale przynajmniej w przypadku klucza ssh
, OpenSSH obsługuje go poprawnie, nie udzielasz dostępu w inny sposób niż ssh
, w razie potrzeby można go łatwiej odwołać, itp …
Będziesz musiał wyjaśnić, dlaczego musisz nie używać klucza ssh.
Rozważ także użycie wymuszonego polecenia (command="..."
w .ssh/authorized_keys
), tak aby klient miał dostęp tylko do uruchomienia potrzebnego polecenia na serwerze zamiast pełnej powłoki.
Komentarze
Odpowiedź
Po pierwsze, podobnie jak inni respondenci, zalecam używanie po prostu kluczy ssh. Zakładam jednak, że osoba kontrolująca serwer po prostu nie pozwoli ci na użycie uwierzytelniania za pomocą klucza ssh i musisz użyć uwierzytelniania hasłem.
Możesz użyć ControlMaster i ControlPath.
Niech A będzie serwerem, do którego nie będziesz mieć dostępu (pomyśl o serwerze ciągłej integracji, takim jak Bamboo), a C będzie zdalnym hostem z systemem Ubuntu.
Teraz niech B będzie jakimś komputerem, nad którym masz kontrolę. Jeśli możesz nie zapewni odpowiedniego komputera B, ta odpowiedź nie zadziała.
- Utwórz parę kluczy i dodaj część publiczną do pliku Authorized_keys B. Podaj A klucz prywatny. Teraz możesz zalogować się do B z A bez hasła.
- Na B ręcznie
ssh -M -S /tmp/controlpath C
i wprowadź hasło po monicie. Po tym powinieneś być w stanie zalogować się do C z A bez hasła ssh -S /tmp/controlpath C
.
W skrypcie na A możesz wpisać ssh B ssh C dostuff
.
Za każdym razem, gdy restartujesz B, będziesz musiał ponownie ustanowić połączenie ssh -M -S /tmp/controlpath C
.