GNU/Linux >> Znalost Linux >  >> Linux

Jak spouštět příkazy Linuxu na vzdáleném systému přes SSH

Přehled

Mnohokrát potřebujeme pracovat se vzdálenými systémy Linux. Přihlásíme se ke vzdálenému hostiteli, provedeme práci a ukončíme relaci. Můžeme všechny tyto akce provádět z místního počítače? Ano, je to možné a tento tutoriál to demonstruje na vyčerpávajících příkladech.

Spuštění příkazu přes SSH

SSH nám umožňuje provádět příkazy na vzdáleném počítači bez přihlášení do tohoto počítače. V tomto tutoriálu probereme různé způsoby, jak toho dosáhnout.

Spustit jeden příkaz

Spusťte příkaz uname přes SSH.

$ ssh [email protected] uname

Pokud dodržujete výše uvedený příkaz, je podobný běžnému příkazu SSH s menším rozdílem. Přidali jsme příkaz k provedení (zvýrazněný červenou barvou).

Když provedeme tento příkaz. Vygeneruje níže uvedený výstup:

Linux
Provádět více příkazů

Pomocí této techniky můžeme provádět více příkazů pomocí jedné relace SSH. Potřebujeme pouze oddělit příkazy středníkem (;).

$ ssh [e-mail chráněný] "uname;hostname;date"

Podle očekávání tyto příkazy vygenerují následující výstup:

Linuxlinux-serverČt 1. března  15:47:59 IST 2018
Spustit příkaz se zvýšenými oprávněními

Někdy potřebujeme provést příkaz se zvýšenými oprávněními, v takovém případě jej můžeme použít se sudo.

$ ssh -t [e-mail chráněný] sudo touch /etc/banner.txt

Všimněte si, že jsme použili „-t ‘ možnost s SSH, která umožňuje alokaci pseudoterminálu. příkaz sudo vyžaduje interaktivní terminál, proto je tato volba nezbytná.

Spustit skript

Vzdálené provádění není omezeno pouze na příkazy; můžeme dokonce spustit skript přes SSH. Musíme pouze poskytnout absolutní cestu místního skriptu k příkazu SSH.

Vytvořme jednoduchý shell skript s následujícím obsahem a pojmenujeme jej jako system-info.sh

#!/bin/shunamehostname

Udělejte skript spustitelným a spusťte jej na vzdáleném serveru následovně:

$ chmod +x system-info.sh$ ssh [chráněno e-mailem] ./system-info.sh

Jak někteří z vás možná uhodli, vygeneruje následující výstup:

Linuxlinux-server
Problém s proměnnou expanzí

Pokud rozdělíme příkazy do více řádků, pak proměnná expanze nebude fungovat. Podívejme se na to na jednoduchém příkladu:

$ msg="Ahoj LinuxTechi"$ ssh [e-mail chráněn] 'echo $msg'

Když provedeme výše uvedený příkaz, můžeme pozorovat, že proměnná se nerozbaluje.

K vyřešení tohoto problému musíme použít -c možnost pláště. V našem případě jej použijeme s bash takto:

$ ssh [e-mail chráněný] bash -c "'echo $msg'"
Nakonfigurujte relaci SSH bez hesla

Ve výchozím nastavení SSH pokaždé požádá o ověření hesla. Toto je vynuceno z bezpečnostních důvodů. Někdy je to však nepříjemné. Abychom to překonali, můžeme použít mechanismus ověřování veřejného a soukromého klíče.

Lze jej nakonfigurovat pomocí následujících kroků:

1) Vygenerujte pár veřejného a soukromého klíče

SSH poskytuje nástroj ssh-keygen, který lze použít ke generování párů klíčů na místním počítači.

$ ssh-keygenGenerating public/private rsa key pair.Zadejte soubor, do kterého se má klíč uložit (/home/linuxtechi/.ssh/id_rsa):#stiskněte enterZadejte přístupové heslo (prázdné pro žádné heslo):                                 zadejte stejné heslo  znovu:                                        # stiskněte enterVaše identifikace byla uložena do /home/linuxtechi/.ssh/id_rsa.Váš veřejný klíč byl uložen do /home/linuxtechi/.ssh/id_rsa. 

Výše uvedený výstup ukazuje, že vygenerované páry klíčů jsou uloženy v adresáři ~/.ssh.

2)  Přidejte veřejný klíč do souboru ~/.ssh/authorized_keys na vzdáleném hostiteli

Jednoduchý způsob, jak to udělat, je použít příkaz ssh-copy-id.

$ ssh-copy-id -i ~/.ssh/id_rsa.pub [e-mail chráněný]

Ve výše uvedeném příkazu:

  • Volba -i označuje soubor identity
  • ~/.ssh/id_rsa.pub je soubor identity
  • zbývající text je IP vzdáleného uživatele a vzdáleného serveru

POZNÁMKA: Nikdy s nikým nesdílejte svůj soukromý klíč.

3) To je ono. není to tak jednoduché? Nyní můžeme provést příkaz přes SSH bez zadání hesla. Pojďme si to ověřit.

$ ssh [email protected] uname

Omezení ověřování pomocí veřejného a soukromého klíče

Myšlenka, že ověřování pomocí veřejného a soukromého klíče nám usnadňuje život, není dokonalé. Jeho hlavní nevýhodou je; nemůžeme to automatizovat, protože napoprvé je vyžadována interakce uživatele. Pamatovat !!! poskytli jsme heslo příkazu ssh-copy-id.

Není třeba propadat panice, tohle není konec světa. V další části probereme přístup, který toto omezení eliminuje.

nástroj sshpass

K překonání výše uvedeného omezení můžeme použít nástroj sshpass. Poskytuje neinteraktivní způsob ověřování relace SSH. Tato část pojednává o různých způsobech.

Instalace sshpass

Nástroj sshpass je součástí oficiálního úložiště Ubuntu. Můžeme jej nainstalovat pomocí následujících příkazů:

$ sudo apt-get update$ sudo apt-get install sshpass

Příklady

sshpass může přijmout heslo – jako argument, načíst ho ze souboru nebo pomocí proměnné prostředí. Pojďme diskutovat o všech těchto přístupech.

1) Heslo jako argument

Můžeme poskytnout heslo jako argument pomocí volby –p:

$ sshpass -p 'secret-password' ssh [email protected] uname

2) Heslo ze souboru

sshpass umí číst heslo z běžného souboru pomocí volby -f:

$ echo "secret-password"> password-file$ sshpass -f password-file ssh [email protected] uname

3) Heslo z proměnné prostředí

Kromě toho můžeme poskytnout heslo z proměnné prostředí pomocí volby -e:

$ export SSHPASS="secret-password"$ sshpass -e ssh [e-mail chráněný] uname

Závěr

Tento tutoriál ukazuje různé triky a tipy pro vzdálené provádění příkazů přes SSH. Jakmile tyto triky pochopíte, značně vám to usnadní život a rozhodně zvýší vaši produktivitu.

Přečtěte si také9 příkladů příkazů „diff“ v systému Linux


Linux
  1. Jak zkontrolovat otevřený port na vzdáleném systému Linux

  2. Jak používat příkazy strace a ltrace v Linuxu

  3. napište skript shellu pro ssh na vzdálený počítač a spusťte příkazy

  1. Jak používat SSHFS k připojení vzdálených adresářů přes SSH

  2. Jak zničit váš systém:Nebezpečné příkazy Linuxu

  3. Jak vzdáleně spustit příkaz ssh a příkaz sudo bez hesla

  1. Jak auditovat vzdálený systém Linux pomocí bezpečnostního nástroje Lynis

  2. Příkazy SSH v Linuxu s příklady použití

  3. Jak automaticky spouštět spouštěcí skripty a příkazy Linuxu