Onehdy jsem testoval, jak uchovat práva k souborům beze změny při kopírování souborů nebo adresářů na více míst a systémů. Když jsem chtěl zkontrolovat oprávnění k souborům na vzdáleném systému, musel jsem se do tohoto systému přihlásit přes SSH a zkontrolovat atributy. Proces opakovaného přihlašování a odhlašování ze vzdáleného systému mi byl trochu nepříjemný. Myslel jsem, že by bylo lepší, kdybych mohl spouštět příkazy na vzdálených systémech Linux přes SSH.
Naštěstí jsem našel řešení, jak to udělat, když jsem se podíval do manuálových stránek ssh
příkaz. Pokud jste někdy přemýšleli, jak spustit příkaz nebo skript na vzdáleném systému ze samotného místního systému, aniž byste se museli k tomuto vzdálenému systému přihlašovat, zde je návod, jak to udělat.
Spouštět příkazy na vzdálených systémech Linux přes SSH
Typický způsob, jak spustit příkaz nebo skript na vzdáleném systému přes SSH z místního systému, je:
$ ssh <[email protected]_Address-or-Doman_name> <Command-or-Script>
Dovolte mi, abych vám ukázal několik příkladů.
Spusťte jeden příkaz na vzdálených systémech přes SSH
Řekněme, že chcete najít podrobnosti o jádře vašeho vzdáleného systému Linux. Chcete-li to provést, jednoduše spusťte:
$ ssh [email protected] uname -a
Tady,
sk
je uživatelské jméno mého vzdáleného systému,192.168.225.22
je IP adresa vzdáleného systému,- A
"uname -a"
je příkaz, který chci spustit na vzdáleném systému z mého místního systému.
Ukázkový výstup:
Provádějte příkazy na vzdálených systémech Linux přes SSH
Vidět? Ve skutečnosti jsem se nepřihlásil do vzdáleného systému, ale provedl jsem uname
příkaz na vzdáleném systému přes SSH a zobrazil výstup v terminálu mého místního systému.
Můžete také zadat příkaz v uvozovkách, jak je uvedeno níže.
$ ssh [email protected] "uname -a"
Nebo,
$ ssh [email protected] 'uname -a'
Pokud jste změnili výchozí port protokolu SSH , stačí to zmínit pomocí -p
parametr jako níže.
$ ssh -p 2200 [email protected] uname -a
Spouštějte více příkazů na vzdálených systémech prostřednictvím SSH
Můžete také spouštět více příkazů na dálkovém ovládání tak, že je uvedete v uvozovkách, jak je uvedeno níže.
$ ssh [email protected] "uname -r && lsb_release -a"
Nebo,
$ ssh [email protected] "uname -r ; lsb_release -a"
Výše uvedené příkazy zobrazí verzi jádra a podrobnosti o distribuci mého serveru Ubuntu.
Ukázkový výstup:
Spusťte více příkazů na vzdálených systémech prostřednictvím SSH v systému Linux
Jako jeden z našich čtenářů zmíněný v sekci komentářů níže byste měli zadat více příkazů v uvozovkách. Pokud nepoužijete uvozovky, první příkaz se provede na vzdáleném systému a druhý příkaz bude vyhodnocen pouze na místním počítači. Celý příkaz v uvozovkách bude zpracován vzdáleně, jak bylo zamýšleno.
Poznámka: Poznejte rozdíl mezi “&&”
a “;”
operátory mezi příkazy:
“&&”
operátor provede druhý příkaz, pouze pokud byl první příkaz úspěšný.
Příklad:
sudo apt-get update && sudo apt-get upgrade
Ve výše uvedeném případě druhý příkaz (sudo apt-get upgrade
) se provede, pokud byl první příkaz úspěšný. Jinak se nespustí.
“;”
operátor provede druhý příkaz, i když byl první příkaz úspěšný nebo neúspěšný.
Příklad:
sudo apt-get update ; sudo apt-get upgrade
Ve výše uvedeném případě druhý příkaz (sudo apt-get upgrade
) se provede, i když selže první příkaz.
Spouštějte příkazy s právy "sudo" na vzdálených systémech přes SSH
Některé příkazy vyžadují "sudo"
oprávnění ke spuštění. Například následující příkaz nainstaluje Vim na mém vzdáleném systému.
$ ssh -t [email protected] sudo apt install apache2
Ukázkový výstup:
Spouštějte příkazy s právy "sudo" na vzdálených systémech přes SSH
Všiml sis? Použil jsem -t
příznak ve výše uvedeném příkazu. Musíme zmínit toto -t
příznak pro vynucení přidělení pseudoterminálu. Toho lze využít ke spouštění libovolných obrazovkových programů na vzdáleném počítači, což může být velmi užitečné, např. při implementaci služeb menu.
Také jsem zadal heslo dvakrát . Poprvé jsem zadal heslo vzdáleného uživatele pro přístup ke vzdálenému systému přes SSH z mého lokálního systému a druhé heslo je vyžadováno k udělení sudo oprávnění vzdálenému uživateli k instalaci aplikace (v tomto případě apache2) na vzdálený systém .
Zkontrolujeme, zda služba Apache běží pomocí příkazu:
$ ssh -t [email protected] sudo systemctl status apache2 [email protected]'s password: [sudo] password for sk: ● apache2.service - The Apache HTTP Server Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset: enabled) Drop-In: /lib/systemd/system/apache2.service.d └─apache2-systemd.conf Active: active (running) since Thu 2019-12-19 11:08:03 UTC; 52s ago Main PID: 5251 (apache2) Tasks: 55 (limit: 2318) CGroup: /system.slice/apache2.service ├─5251 /usr/sbin/apache2 -k start ├─5253 /usr/sbin/apache2 -k start └─5254 /usr/sbin/apache2 -k start Dec 19 11:08:03 ubuntuserver systemd[1]: Starting The Apache HTTP Server... Dec 19 11:08:03 ubuntuserver apachectl[5227]: AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 2409:4072:51f:a1b6:a00:27ff:f Dec 19 11:08:03 ubuntuserver systemd[1]: Started The Apache HTTP Server.
Podobně můžeme spustit jakýkoli příkaz nebo skript na vzdáleném systému přes SSH z místního systému.
Spouštějte místní skripty na vzdálených systémech prostřednictvím SSH
Dovolte nám vytvořit jednoduchý skript v našem lokálním systému, který zobrazí všechny dostupné informace o názvu distribuce vašeho vzdáleného systému, správě balíčků a základních podrobnostech atd.
$ vi system_information.sh
Přidejte následující řádky:
#!/bin/bash #Name: Display System Details #Owner: OSTechNIx #---------------------------- echo /etc/*_ver* /etc/*-rel*; cat /etc/*_ver* /etc/*-rel*
Stiskněte ESC
a zadejte :wq
pro uložení souboru a ukončení.
Nyní spusťte tento skript na vašem vzdáleném systému přes SSH pomocí příkazu:
$ ssh [email protected] 'bash -s' < system_information.sh
Ukázkový výstup:
[email protected]'s password: /etc/debian_version /etc/lsb-release /etc/os-release buster/sid DISTRIB_ID=Ubuntu DISTRIB_RELEASE=18.04 DISTRIB_CODENAME=bionic DISTRIB_DESCRIPTION="Ubuntu 18.04.2 LTS" NAME="Ubuntu" VERSION="18.04.2 LTS (Bionic Beaver)" ID=ubuntu ID_LIKE=debian PRETTY_NAME="Ubuntu 18.04.2 LTS" VERSION_ID="18.04" HOME_URL="https://www.ubuntu.com/" SUPPORT_URL="https://help.ubuntu.com/" BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/" PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy" VERSION_CODENAME=bionic UBUNTU_CODENAME=bionic
Pokud nezadáte 'bash -s'
ve výše uvedeném příkazu získáte podrobnosti o vzdáleném systému, ale Pseudoterminál nebude přidělen.
Uložení výstupu ze vzdáleného systému do místního systému
To může být užitečné, pokud chcete sdílet výstup příkazu, který spouštíte na vzdáleném systému přes SSH, se svým týmem podpory nebo kolegou.
Následující příkaz spustí "du -ah"
na vašem vzdáleném systému přes SSH a uložte výstup do diskusage.txt
soubor ve vašem místním systému.
$ ssh [email protected] du -ah > diskusage.txt
Poté můžete analyzovat podrobnosti o využití disku zobrazením diskusage.txt
soubor pomocí cat
příkazové nebo textové prohlížeče.
$ cat diskusage.txt 4.0K ./.profile 4.0K ./.gnupg/private-keys-v1.d 8.0K ./.gnupg 76K ./data/image.jpg 128K ./data/file.pdf 20K ./data/text.docx 5.9M ./data/audio.mp3 6.1M ./data 0 ./.sudo_as_admin_successful 4.0K ./pacman?inline=false 4.0K ./.bash_logout 4.0K ./.wget-hsts 4.0K ./.bash_history 0 ./.cache/motd.legal-displayed 4.0K ./.cache 4.0K ./deb-pacman_1.0-0.deb 4.0K ./.bashrc 6.2M .
Nakonfigurujte ověřování pomocí klíče SSH, abyste se vyhnuli zadávání hesla
Pokud často spouštíte příkazy na vzdálených systémech, možná budete chtít nakonfigurovat ověřování založené na klíči SSH tak, aby pokaždé vynechalo zadávání hesla. Více podrobností naleznete na následujícím odkazu.
- Jak nakonfigurovat ověřování pomocí klíče SSH v systému Linux
Doporučené čtení:
- Jak obnovit částečně přenesené soubory přes SSH pomocí Rsync
- Jak spustit jeden příkaz na více vzdálených systémech najednou
- DSH – Spusťte příkaz Linux na více hostitelích současně
- Jak vytvořit alias SSH v systému Linux
- SSLH – Sdílejte stejný port pro HTTPS a SSH
- ScanSSH – rychlý server SSH a otevřený skener proxy
- Jak SSH do konkrétního adresáře v systému Linux
- Povolení nebo odepření přístupu SSH konkrétnímu uživateli nebo skupině v systému Linux
- Jak zabránit odpojování relace SSH v systému Linux
- Jak povolit SSH na FreeBSD
- Tipy pro Vim – Upravujte vzdálené soubory pomocí Vim v systému Linux
Doufám, že to pomůže.