[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 [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. ]