sshpass Narzędzie służy do wdrażania zautomatyzowanego uwierzytelniania opartego na hasłach. Uruchamia SSH w dedykowanym tty (teletypewriter), aby potwierdzić, że hasło jest dostarczane przez interaktywnego użytkownika klawiatury do uwierzytelniania nieinteraktywnego. Jak sshpass może być używane do uwierzytelnienia, pokazano w tym samouczku.
Wymagania wstępne
Przed rozpoczęciem kroków w tym samouczku konieczne będą następujące kroki do ukończenia.
Włącz usługę SSH na Ubuntu, jeśli nie jest ona wcześniej włączona.
Wygeneruj pary kluczy SSH, aby wykonać polecenia na zdalnym serwerze. Uruchom następujące polecenie, aby utworzyć klucz publiczny i klucz prywatny. Klucz prywatny będzie przechowywany na zdalnym serwerze, a klucze publiczne będą bezpiecznie przechowywane w kliencie.
$ ssh -keygen -t rsaUruchom następujące polecenie, aby otworzyć sshd_config Plik za pomocą nano edytora, aby dodać niezbędne konfiguracje.
$ sudo nano/etc/ssh/sshd_configDodaj następujące wiersze w pliku, aby włączyć logowanie root i uwierzytelnianie oparte na hasłach.
HasłoAuthentication TakUruchom następujące polecenie, aby ponownie uruchomić usługę SSH.
$ sudo service ssh restartSkładnia
Składnia tego polecenia jest podana poniżej. Obsługuje różne opcje, które zostały opisane później.
$ sshpass [-f nazwa pliku | -d Numer | -p hasło | -e] [opcje] argumenty poleceńRóżne opcje polecenia sshPass
Cel różnych sshpass Opcje zostały tutaj opisane. sshpass odczytuje hasło ze standardowego wejścia, jeśli nie podano żadnej opcji.
Opcja | Zamiar |
---|---|
-P Hasło | Służy do podania hasła w wierszu poleceń. |
-f nazwa pliku | Służy do podania alternatywnego źródła hasła. |
-D liczba | Służy do zapewnienia deskryptora pliku odziedziczonego przez sshpass. |
-mi | Służy do przyjmowania hasła ze zmiennej środowiskowej „sshpass”. |
Zainstaluj sshpass
sshpass nie jest domyślnie instalowany na Ubuntu. Uruchom następujące polecenie, aby zainstalować sshpass na Ubuntu.
$ sudo apt-get instaluj sshpassNastępujące wyjście pojawią się, jeśli sshpass zostanie poprawnie zainstalowany.
Połącz się z serwerem, podając hasło
Sposób połączenia z zdalnym maszyną za pomocą sshpass z opcją -p jest pokazany w tej części samouczka. Tutaj nazwa użytkownika to „Fahmida”, a hasło to „12345” maszyny do surowca. Adres IP komputera serwerowego wynosi 10.0.2.15. Nazwa użytkownika komputera klienta jest „tak. Uruchom następujące polecenie, aby połączyć się z serwerem, podając hasło.
$ sshpass -p '12345' ssh [email protected]Następujące dane wyjściowe pojawi się, jeśli połączenie zostanie poprawnie ustalone z komputerem serwerowym. Dane wyjściowe pokazuje, że nazwa użytkownika jest zmieniana na „Fahmida” z „Takmin” w wierszu polecenia po ustaleniu połączenia. Teraz, jeśli użytkownik uruchomi dowolne polecenie, zostanie ono wykonane z komputera serwerowego.
Połącz się z serwerem bez podawania hasła
Podanie hasła w wierszu poleceń nie jest bezpieczne. Ten problem można rozwiązać na dwa sposoby. Jednym ze sposobów jest zapisanie hasła w zmiennej środowiskowej za pomocą eksport Polecenie i innym sposobem jest zapisanie hasła w pliku.
Uruchom następujące polecenie, aby zapisać hasło w zmiennej środowiskowej SshPass za pomocą polecenia Eksportuj.
$ export sshpass = "12345"Teraz możesz uruchomić polecenie sshPass z opcją -e, aby nawiązać połączenie z komputerem serwerowym bez podawania hasła w wierszu poleceń. Uruchom następujące polecenie, aby połączyć się z serwerem bez podawania hasła.
$ sshpass -e ssh [email protected]Następujące dane wyjściowe pojawi się, jeśli połączenie zostanie poprawnie ustalone z komputerem serwerowym. Dane wyjściowe pokazuje, że nazwa użytkownika jest zmieniana na „Fahmida” z „Takmin” w wierszu polecenia po ustaleniu połączenia jak poprzednie polecenie.
Sposób połączenia z serwerem za pomocą sshpass Zapisywanie hasła w pliku zostało pokazane w tej części samouczka. Uruchom następujące polecenie, aby utworzyć sshfile Złóż i przechowuj hasło, aby połączyć się z komputerem serwerowym.
$ echo '12345'> sshfileUruchom następujące polecenie, aby ustawić bity uprawnień dla sshfile plik, który zapewni bezpieczny plik.
$ chmod 0400 sshfileTeraz uruchom następujące polecenie, aby połączyć się z serwerem bez podania hasła w wierszu poleceń. Tutaj opcja -f została użyta z sshpass polecenie do odczytania hasła z pliku.
$ sshpass -f sshfile ssh [email protected]Następujące dane wyjściowe pojawi się, jeśli połączenie zostanie poprawnie ustalone z komputerem serwerowym. Dane wyjściowe pokazuje, że nazwa użytkownika jest zmieniana na „Fahmida” z „Takmin” w wierszu polecenia po ustaleniu połączenia jak poprzednie polecenie.
Korzystanie z polecenia sshPass w skrypcie
Komenda SSHPass służy do nawiązania połączenia z serwerem z terminalu w poprzedniej części tego samouczka. Ale możesz wykonać dowolne polecenie na komputerze serwerowym bez logowania na serwerze, pisząc skrypt bash z poleceniem sshpass. Utwórz plik bash o nazwie ssh.cii w komputerze klienckim z następującą zawartością. Skrypt wykonuje „PWD” polecenie w komputerze serwerowym i przechowuj wyjście w zmiennej. Wartość zmiennej zostanie wydrukowana później.
ssh.ciiUruchom następujące polecenie z terminala.
$ bash ssh.ciiNastępujące dane wyjściowe pojawią się, jeśli PWD Polecenie jest wykonywane prawidłowo na komputerze serwerowym. Nazwa użytkownika komputera serwerowego to „Fahmida”. Tak więc wyjście pokazuje, że „/home/fahmida/” jest wyjściem PWD Komenda.
Wniosek
Zastosowania polecenia sshPass do nieinteraktywnego logowania zostały pokazane w tym samouczku przez dwa różne konta użytkowników Localhost. Możesz wykonać to samo zadanie dla zdalnego hosta, wykonując kroki pokazane w tym samouczku.