GNU/Linux >> Znalost Linux >  >> Linux

Automatizace hesel SSH v Linuxu pomocí sshpass

[Poznámka editora, 29. listopadu 2021:Všechny příklady zadání hesla na příkazovém řádku zahrnují riziko, že heslo bude zachyceno v historii shellu uživatele (pokud je podporováno) nebo viditelné pro všechny uživatele systému ve výpisu procesu. Bezpečnostní experti doporučují smazat všechny soubory a vymazat protokoly shellu.]

Připojování a přenos souborů do vzdálených systémů je něco, co správci systému dělají neustále. Jedním ze základních nástrojů, který používá mnoho systémových administrátorů na platformách Linux, je SSH. SSH podporuje dvě formy ověřování:

  1. Ověření heslem
  2. Ověření pomocí veřejného klíče

Ověření veřejným klíčem je považováno za nejbezpečnější formu z těchto dvou metod, ačkoli ověřování pomocí hesla je nejoblíbenější a nejjednodušší. Při ověřování heslem je však uživatel vždy požádán o zadání hesla. Toto opakování je zdlouhavé. Kromě toho SSH také vyžaduje ruční zásah při použití ve skriptu shellu. Pokud je při použití ověřování heslem SSH potřeba automatizace, pak jednoduchý nástroj nazvaný sshpass je nepostradatelný.

Co je to sshpass?

sshpass nástroj je navržen tak, aby spouštěl SSH pomocí interaktivní klávesnice režim ověřování hesla, ale neinteraktivním způsobem.

SSH používá přímý přístup TTY, aby bylo zajištěno, že heslo skutečně vydává uživatel interaktivní klávesnice. sshpass spouští SSH ve vyhrazeném TTY, čímž klame SSH, aby si myslel, že získává heslo od interaktivního uživatele.

Nainstalujte sshpass

Můžete nainstalovat sshpass pomocí tohoto jednoduchého příkazu:

# yum install sshpass

Použít sshpass

Zadejte příkaz, který chcete spustit po sshpass možnosti. Obvykle je příkaz ssh s argumenty, ale může to být i jakýkoli jiný příkaz. Výzva k zadání hesla SSH je však aktuálně pevně zakódována do sshpass .

Synopse pro sshpass příkaz je popsán níže:

sshpass [-ffilename|-dnum|-ppassword|-e] [options] command arguments

Kde:

-ppassword
    The password is given on the command line. 
-ffilename
    The password is the first line of the file filename. 
-dnumber
    number is a file descriptor inherited by sshpass from the runner. The password is read from the open file descriptor. 
-e
    The password is taken from the environment variable "SSHPASS".

Příklady

Pro lepší pochopení hodnoty a použití sshpass , podívejme se na několik příkladů s několika různými nástroji, včetně SSH, Rsync, Scp a GPG.

Příklad 1:SSH

Použijte sshpass pro přihlášení ke vzdálenému serveru pomocí SSH. Předpokládejme, že heslo je!4u2tryhack . Níže je několik způsobů použití možností sshpass.

A. Použijte -p (toto je považováno za nejméně bezpečnou volbu a nemělo by se používat):

$ sshpass -p !4u2tryhack ssh [email protected]

-p volba vypadá při použití ve skriptu shellu takto:

$ sshpass -p !4u2tryhack ssh -o StrictHostKeyChecking=no [email protected]

B. Použijte -f (heslo by mělo být na prvním řádku názvu souboru):

$ echo '!4u2tryhack' >pass_file
$ chmod 0400 pass_file
$ sshpass -f pass_file ssh [email protected]

 $ chmod 0400 pass_file je rozhodující pro zajištění bezpečnosti souboru s hesly. Výchozí umask na RHEL je 033, což umožňuje světovou čitelnost souboru.

Zde je -f volba při použití ve skriptu shellu:

$ sshpass -f pass_file ssh -o StrictHostKeyChecking=no [email protected]

C. Použijte -e (heslo by mělo být na prvním řádku názvu souboru):

$ SSHPASS='!4u2tryhack' sshpass -e ssh [email protected]

-e volba při použití ve skriptu shellu vypadá takto:

$ SSHPASS='!4u2tryhack' sshpass -e ssh -o StrictHostKeyChecking=no [email protected]

Příklad 2:Rsync

Použijte sshpass pomocí rsync :

$ SSHPASS='!4u2tryhack' rsync --rsh="sshpass -e ssh -l username" /custom/ host.example.com:/opt/custom/ 

Výše uvedené používá -e volba, která předá heslo proměnné prostředí SSHPASS

Můžeme použít -f přepněte takto:

$ rsync --rsh="sshpass -f pass_file ssh -l username" /custom/ host.example.com:/opt/custom/

Příklad 3:Scp

Použijte sshpass pomocí scp:

$ scp -r /var/www/html/example.com --rsh="sshpass -f pass_file ssh -l user" host.example.com:/var/www/html

Příklad 4:GPG

Můžete také použít sshpass se souborem zašifrovaným GPG. Když -f Pokud je použit přepínač, referenční soubor je v prostém textu. Podívejme se, jak můžeme zašifrovat soubor pomocí GPG a použít jej.

Nejprve vytvořte soubor následovně:

$ echo '!4u2tryhack' > .sshpasswd

Dále zašifrujte soubor pomocí gpg příkaz:

$ gpg -c .sshpasswd

Odeberte soubor, který obsahuje prostý text:

$ rm .sshpasswd

Nakonec jej použijte následovně:

$ gpg -d -q .sshpasswd.gpg | sshpass ssh [email protected]

Sbalit

sshpass je jednoduchý nástroj, který může systémovým administrátorům velmi pomoci. To v žádném případě nepřepisuje nejbezpečnější formu autentizace SSH, kterou je autentizace pomocí veřejného klíče. Nicméně sshpass lze také přidat do sady nástrojů správce systému.

[ Bezplatný online kurz:Technický přehled Red Hat Enterprise Linux. ]


Linux
  1. SSHPass:Jak SSH na server pomocí skriptu bez hesla (neinteraktivně)

  2. Ssh přihlášení s čistým textem heslo jako parametr?

  3. Začínáme s SSH v Linuxu

  1. Jak nastavit Rsync s SSH na UNIX / Linux (rsync bez hesla)

  2. Jak povolit ssh s prázdnými hesly v Linuxu

  3. Příkaz sshpass:Neinteraktivní ověřování hesla pomocí SSH

  1. Jak nastavit Rsync bez hesla s SSH na UNIX / Linux?

  2. Rsync s výzvou SSH pro vzdálené heslo

  3. Jak zkontrolovat heslo v Linuxu?