Jak używać sshpass do nieinteraktywnego logowania SSH

Jak używać sshpass do nieinteraktywnego logowania SSH
Użytkownik Linux może używać uwierzytelniania opartego na hasłach lub bez hasła, aby zalogować się do zdalnego serwera za pomocą SSH. Uwierzytelnianie bez hasła jest bezpieczniejsze, ale najłatwiejszym i najpopularniejszym sposobem uwierzytelniania jest uwierzytelnianie oparte na hasłach. Użytkownik musi podać hasło w dowolnym momencie do uwierzytelnienia, a SSH wymaga również ręcznego dostępu do skryptu powłoki.

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 rsa

Uruchom następujące polecenie, aby otworzyć sshd_config Plik za pomocą nano edytora, aby dodać niezbędne konfiguracje.

$ sudo nano/etc/ssh/sshd_config

Dodaj następujące wiersze w pliku, aby włączyć logowanie root i uwierzytelnianie oparte na hasłach.

HasłoAuthentication Tak
Pertrootlogin Tak

Uruchom następujące polecenie, aby ponownie uruchomić usługę SSH.

$ sudo service ssh restart

Skł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 sshpass

Nastę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'> sshfile

Uruchom następujące polecenie, aby ustawić bity uprawnień dla sshfile plik, który zapewni bezpieczny plik.

$ chmod 0400 sshfile

Teraz 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.cii
#!/bin/bash
wartość = $ (sshpass -f sshfile ssh [email protected] „PWD”)
echo $ wartość

Uruchom następujące polecenie z terminala.

$ bash ssh.cii

Nastę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.