[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í:
- Ověření heslem
- 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 username@host.example.com
-p volba vypadá při použití ve skriptu shellu takto:
$ sshpass -p !4u2tryhack ssh -o StrictHostKeyChecking=no username@host.example.com
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 username@host.example.com
$ 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 username@host.example.com
C. Použijte -e (heslo by mělo být na prvním řádku názvu souboru):
$ SSHPASS='!4u2tryhack' sshpass -e ssh username@host.example.com
-e volba při použití ve skriptu shellu vypadá takto:
$ SSHPASS='!4u2tryhack' sshpass -e ssh -o StrictHostKeyChecking=no username@host.example.com 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 user@srv1.example.com 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. ]