GNU/Linux >> Znalost Linux >  >> Linux

10 PuTTY PLINK Příklady pro automatizaci vzdálených příkazů Linuxu z dávkových souborů Windows

Plink znamená PuTTY Link.

Plink je doprovodný nástroj příkazového řádku pro PuTTY.

Na velmi vysoké úrovni:

  • Použijte PuTTY pro interaktivní relaci SSH ze serverů Windows na Linux
  • Použijte Plink pro neinteraktivní relaci SSH ke spouštění vzdálených linuxových příkazů pro účely automatizace z vašeho Windows


V tomto tutoriálu probereme následující:

  1. Spustit plink z příkazového řádku
  2. Plink Interactive SSH Session
  3. Plink Non-Interactive SSH Session pro provedení vzdáleného příkazu
  4. Spouštět více příkazů Linuxu ze souboru Windows
  5. Zadejte protokol připojení
  6. Uveďte heslo SSH jako argument Plink
  7. Ladění problémů s plinkem
  8. Uveďte port SSH jako možnost Plink
  9. Soubory protokolu Plink pro připojení SSH
  10. Uveďte protokol SSH (SSH-1 nebo SSH-2)
  11. Uveďte protokol IP (IPv4 nebo IPv6)
  12. Pro ověření pomocí Plink použijte soubor soukromého klíče
  13. Další možnosti povolení a zakázání pro Plink SSH
  14. Otisk prstu a hostitelský klíč s Plink
  15. Plink -batch možnost pro dávkové soubory Windows

Nejprve si odtud stáhněte spustitelný soubor plink.

Pokud ještě nemáte na svém počítači nainstalovaný PuTTY, ujistěte se, že jste si spolu s plink stáhli také spustitelný soubor putty.

Pokud máte notebook s 32bitovým systémem Windows, stáhněte si 32bitovou verzi plink. Pokud ne, stáhněte si 64bitovou verzi.

1. Spusťte plink z příkazového řádku

Nemůžete jej spustit pouze dvojitým kliknutím na plink.exe. Protože se jedná pouze o nástroj příkazového řádku (bez GUI), měli byste nejprve spustit příkazový řádek Windows.

Chcete-li to provést, klikněte v systému Windows na nabídku Start a do vyhledávacího pole zadejte „cmd.exe“ a stiskněte klávesu Enter. Tím se spustí příkazový řádek systému Windows.

V závislosti na tom, kde jste si stáhli plink.exe, možná budete muset odpovídajícím způsobem upravit proměnnou PATH systému Windows.

Přejděte do okna „Vlastnosti systému“, klikněte na „Proměnné prostředí“, vyberte proměnnou Path a připojte sem adresář, ve kterém se nachází soubor plink.exe.

Nebo můžete jednoduše nastavit proměnnou PATH, jak je uvedeno níže. V následujícím příkladu jsem stáhl soubor plink.exe do adresáře C:\Downloads.

set PATH=%PATH%;C:\Downloads

Dále do příkazového řádku napište plink, zobrazí se různé dostupné možnosti.

2. Plink Interactive SSH Session

Níže je uvedena základní syntaxe pro plink:

plink [options] connection [command]

Ve výše uvedené syntaxi:

  • možnosti – Plinku můžete předat různé možnosti. Toto je volitelné.
  • připojení – Zde budou uvedeny informace o připojení serveru Linux, ke kterému se chcete připojit. V níže uvedených příkladech jsou vysvětleny různé způsoby připojení.
  • příkaz – Toto je příkaz, který by měl být proveden na vzdáleném serveru Linux. Toto je volitelné.

I když je příkaz volitelný, když jej nezadáte, zobrazí nezpracovanou interaktivní relaci, která bude mít na obrazovce spoustu netisknutelných nečitelných znaků. Jak bylo vysvětleno dříve, plink není určen k použití jako interaktivní relace. Použijte putty pro interaktivní relaci.

Nyní se podívejme na různé způsoby použití připojení.

Nejprve stačí zadat IP adresu vzdáleného serveru. Poté budete požádáni o uživatelské jméno a heslo pro přihlášení.

C:\>plink 192.168.101.1
login as: root
[email protected]'s password:

Nebo můžete také použít uživatelské jméno pomocí symbolu @, jak je uvedeno níže. Toto bude vyžadovat pouze heslo, protože jsme zadali uživatelské jméno.

C:\>plink [email protected]
Using username "root".
[email protected]'s password:

Uživatelské jméno můžete také předat pomocí volby -l, jak je uvedeno níže:

C:\>plink 192.168.101.1 -l mysql

Můžete také použít název existující relace putty. V tomto příkladu používám existující uloženou relaci putty s názvem „devdb“. Toto je doporučený způsob použití, protože sem můžete přenést všechny konfigurační informace z PuTTY pro tuto konkrétní relaci „devdb“.

C:\>plink devdb
Using username "root".
[email protected]'s password:

Následující -load je přesně stejný jako výše.

C:\>plink -load devdb
Using username "root".
[email protected]'s password:

Jak vidíte níže, jakmile se přihlásíte, dostanete příkazový řádek. Ale když zde uděláte cokoli, zobrazí se některé uživatelsky nepřívětivé znaky.

C:\>plink devdb
Using username "root".
[email protected]'s password:
?]0;root@devdb:~[root@devdb ~]#
?]0;root@devdb:~[root@devdb ~]#
?]0;root@devdb:~[root@devdb ~]# ?[Kls -altr
total 326432
drwx------.  2 root root      4096 Jan 23  2016 ?[01;34m.ssh?[0m
drwxr-xr-x.  2 root root      4096 May  9  2016 ?[01;3Documents?[0m
drwxr-xr-x.  2 root root      4096 May  8 12:41 ?[01;3Downloads?[0m
?[m?]0;root@devdb:~[root@devdb ~]#

Pro interaktivní relaci SSH opět použijte PuTTY.

V souvislosti s tím, i když už nějakou dobu používáte PuTTY, může se vám zde hodit několik tipů:10 úžasných tipů a triků PuTTY, které jste pravděpodobně nevěděli

3. Plink Non-Interactive SSH Session pro provedení vzdáleného příkazu

Pomocí plink z Windows můžete spustit příkaz na linuxovém serveru bez zásahu uživatele a pouze zobrazit výstup.

Za tímto účelem předejte příkaz jako poslední argument plinku, jak je znázorněno níže.

V následujícím příkladu provede příkaz „crontab -l“ na vzdáleném serveru a zobrazí výstup.

C:\>plink [email protected] crontab -l
no crontab for root

Pokud chcete provést více příkazů, seskupte je dohromady, jak je uvedeno níže.

C:\>plink [email protected] (hostname;crontab -l)
devdb.thegeekstuff.com
no crontab for root

Následující spustí skript shellu db-backup.sh na vzdáleném serveru Linux. Tuto akci však spouštíte ze svého počítače se systémem Windows.

plink [email protected] /root/bin/db-backup.sh

Je třeba mít na paměti několik bodů:

  • Pokud výše uvedený příkaz vyžaduje heslo a nechcete, aby se tak stalo, měli byste správně nastavit ověřování pomocí veřejného a soukromého klíče, aby vzdálený server Linux nepožadoval heslo.
  • Heslo můžete také předat jako volbu příkazového řádku pro plink, jak je znázorněno v jednom z níže uvedených příkladů.
  • Pokud výše uvedené zobrazuje chybovou zprávu o neplatném protokolu, měli byste předat příslušný protokol, jak je znázorněno v následujícím příkladu.

4. Spusťte více příkazů Linuxu ze souboru Windows

Namísto zadání všech příkazů, které mají být provedeny na vzdáleném linuxovém serveru v příkazovém řádku plink, můžete je také vložit do textového souboru a zadat soubor jako parametr pro plink.

V systému Windows vytvořte například následující soubor s názvem commands.txt.

C:\>type commands.txt
hostname
service mysql stop
yum -y install httpd
service mysql start
service httpd start
crontab -l

Chcete-li nyní provést všechny výše uvedené příkazy na vzdáleném linuxovém serveru jeden po druhém, spusťte na svém notebooku se systémem Windows následující příkaz plink.

C:\>plink [email protected] -m C:\commands.txt

5. Zadejte protokol připojení

Plink umožňuje následující protokoly:SSH, Telnet, Remote Login (rlogin), Raw, Serial Connection

Nejoblíbenější a výchozí je SSH. Použijte -ssh, jak je uvedeno níže.

C:\>plink -ssh [email protected]

Pro Telnet:

C:\>plink -telnet [email protected]

Pro vzdálené přihlášení pomocí rlogin:

C:\>plink -rlogin [email protected]

Pro Raw:

C:\>plink -raw [email protected]
SSH-2.0-OpenSSH_5.3

Pokud se pokoušíte zadat konkrétní protokol a zobrazí se chyba „FATAL ERROR:Network error:Connection odmítnuto“, znamená to, že vzdálený server nepodporuje zadaný protokol.

Pokud nechcete zadat protokol na příkazovém řádku:

  • Můžete použít uloženou relaci PuTTY, která již má pro danou relaci definovaný protokol.
  • Nebo můžete použít proměnnou env systému Windows s názvem PLINK_PROTOCOL a podle toho nastavit hodnotu, kterou použije plink.

6. Zadejte heslo SSH jako argument Plink

Pokud nemáte nastavení ověřování na základě klíče, můžete heslo předat jako parametr na příkazovém řádku. Netřeba dodávat, že tato metoda se nedoporučuje.

Tím se připojí k serveru jako root pomocí hesla určeného volbou -pw a provede všechny dané příkazy Linuxu a zobrazí výstup na příkazovém řádku Windows.

C:\>plink [email protected] -pw SecretRootPwd (date;hostname;ls -l)

Samozřejmě, že nejjednodušší metodou je použít uloženou relaci putty (například devdb) namísto zadávání uživatelského jména a ip-adresy, jak je uvedeno níže.

C:\>plink devdb -pw SecretRootPwd (date;hostname;ls -l)

7. Problémy s laděním Plink

Nejprve se ujistěte, že máte nejnovější verzi plink. Použijte volbu -V (velká písmena V), jak je uvedeno níže. Aktuální stabilní verze je 0.69

C:\>plink -V
plink: Release 0.69
Build platform: 64-bit Windows
Compiler: Visual Studio 2015 / MSVC++ 14.0 (_MSC_VER=1900)
Source commit: b1829b81b5c0d12dcc91f6b50b0b4d83c3df6a8e

Dále použijte volbu -v (malá písmena v), jak je uvedeno níže, pro podrobnější výstup.

C:\>plink -v devdb service httpd restart
Connecting to 192.168.101.1 port 22
We claim version: SSH-2.0-PuTTY_Release_0.69
Server version: SSH-2.0-OpenSSH_5.3
We believe remote version has SSH-2 channel request bug
Using SSH protocol version 2
Doing Diffie-Hellman group exchange
Doing Diffie-Hellman key exchange with hash SHA-256
Server also has ssh-dss host key, but we don't know it
Host key fingerprint is:
ssh-rsa 2048 2f:d2:c1:7f:db:a1:16:21:d2:f4:31:f9:ae:96:be:89
Initialised AES-256 SDCTR client->server encryption
Initialised HMAC-SHA1 client->server MAC algorithm
Initialised AES-256 SDCTR server->client encryption
Initialised HMAC-SHA1 server->client MAC algorithm
Using username "root".
Using SSPI from SECUR32.DLL
Attempting GSSAPI authentication
GSSAPI authentication request refused
Sent password
Access granted
Opening session as main channel
Opened main channel
Started a shell/command
..

Server sent command exit status 0
Disconnected: All channels closed

8. Zadejte port SSH jako možnost Plink

Ve výchozím nastavení se pro SSH připojí k portu 22. Pokud je však na vašem linuxovém serveru SSH nakonfigurováno pro spuštění na jiném portu, zadejte port pomocí volby -P v plink.

V následujícím příkladu se plink připojí ke vzdálenému linuxovému serveru na portu 25.

C:\>plink [email protected] -P 25 crontab -l

Když použijete uloženou relaci PuTTY a volbu -P, místo použití portu z uložené relace použije daný port.

C:\>plink devdb -P 25 crontab -l

9. Soubory protokolu Plink pro připojení SSH

Pro protokol SSH v Plinku existuje několik užitečných možností protokolování.

Následující volba –sshlog uloží protokoly do daného souboru (sshlog.txt).

C:\>plink devdb -sshlog sshlog.txt (date;hostname;ls -l)

Toto je částečný obsah výstupu sshlog.txt

=~=~=~=~=~=~=~=~=~=~=~= PuTTY log 2017.05.11 11:40:57 =~=~=~=~=~=~=~=~=~=~=~=
Event Log: Writing new session log (SSH packets mode) to file: sshlog.txt
Event Log: Connecting to 192.168.101.1 port 22
Event Log: We claim version: SSH-2.0-PuTTY_Release_0.69
Event Log: Server version: SSH-2.0-OpenSSH_5.3
Event Log: We believe remote version has SSH-2 channel request bug
Event Log: Using SSH protocol version 2
Outgoing packet #0x0, type 20 / 0x14 (SSH2_MSG_KEXINIT)
  00000000  ed 8e ff c9 d3 67 cf 95 0e 8f 1a 4d 6d 65 6f 25  .....g.....Mmeo%
  00000010  00 00 00 f0 63 75 72 76 65 32 35 35 31 39 2d 73  ....curve25519-s
......

Outgoing packet #0xc, type 96 / 0x60 (SSH2_MSG_CHANNEL_EOF)
  00000000  00 00 00 00                                      ....
Outgoing packet #0xd, type 97 / 0x61 (SSH2_MSG_CHANNEL_CLOSE)
  00000000  00 00 00 00                                      ....
Event Log: Disconnected: All channels closed

Pro podrobnější protokol použijte volbu -sshrawlog. Vezměte prosím na vědomí, že velikost tohoto souboru bude větší než výše, protože to uloží mnohem více informací do souboru protokolu.

Tento příkaz bude také trvat déle než výše uvedený příkaz, protože volba sshrawlog shromažďuje více informací protokolu než běžná volba sshlog.

C:\>plink devdb -sshrawlog sshrawlog.txt (date;hostname;ls -l)

10. Zadejte protokol SSH (SSH-1 nebo SSH-2)

Ve výchozím nastavení bude používat protokol SSH-2, který lze také zadat pomocí volby -2, jak je uvedeno níže.

C:\>plink devdb -2 (hostname;ls -l)
devdb.thegeekstuff.com
total 326380

Pro protokol SSH-1 použijte volbu -1, jak je uvedeno níže. Pokud to váš server nepodporuje, zobrazí se následující chyba.

C:\>plink devdb -pw -1 (hostname;ls -l)
FATAL ERROR: SSH protocol version 1 required by our configuration but not provided by server

11. Zadejte protokol IP (IPv4 nebo IPv6)

Ve výchozím nastavení bude používat IPv4, které lze také zadat pomocí volby -4, jak je uvedeno níže.

C:\>plink devdb -4 (hostname;ls -l)

Chcete-li použít IPv6, použijte volbu-6, jak je uvedeno níže.

C:\>plink devdb -6 (hostname;ls -l)

12. Použijte soubor soukromého klíče pro ověření pomocí Plink

Použijte volbu -i k určení umístění souboru soukromého klíče, který by měl být použit pro autentizaci.

V následujícím příkladu použije soubor devdb.ppk z adresáře C:\Downloads.

C:\>plink -i "C:\Downloads\devdb.ppk" [email protected] hostname

Poznámka:Pokud daný klíč není správně nakonfigurován pro použití s ​​vaším Linux serverem, zobrazí se „Server odmítl náš klíč“.

Pokud soubor klíče není nalezen (například když zadáte nesprávný název adresáře), zobrazí se následující chyba:

C:\>plink -i "D:\Data\devdb.ppk" [email protected] hostname
Unable to use key file "C:\Users\ramesh\Downloads\devdb.ppk" (unable to open file)
[email protected]'s password: 

Pokud zadáte klíč, který nemá správný formát, zobrazí se následující chybová zpráva.

C:\>plink -i "C:\Downloads\devdb.key" [email protected] hostname
Unable to use key file "C:\Downloads\devdb.key" (OpenSSH SSH-2 private key (old PEM format))

13. Další možnosti povolení a zakázání pro Plink SSH

Můžete také použít následující možnosti plink SSH:

  • -X pro povolení přesměrování X11
  • -X pro deaktivaci předávání X11
  • -A pro povolení přeposílání agentů
  • -a pro deaktivaci přeposílání agentů
  • -t pro povolení alokace pty
  • -T pro zakázání přidělování pty
  • -noagent pro zakázání používání Pageant
  • -agent pro povolení použití Pageant
  • -C pro povolení komprese

14. Otisk prstu a HostKey s Plink

Použijte volbu -pgpfp, která zobrazí podrobnosti o otisku PGP pro PuTTY. Obvykle to můžete použít k vytvoření důvěryhodnosti ze spustitelného souboru plink.exe do jiného programu nebo spustitelného souboru, ke kterému se pokoušíte připojit.

C:\>plink -pgpfp
PuTTY Master Key as of 2015 (RSA, 4096-bit):
  440D E3B5 B7A1 CA85 B3CC  1718 AB58 5DC6 0467 6F7C

Original PuTTY Master Key (RSA, 1024-bit):
  8F 15 97 DA 25 30 AB 0D  88 D1 92 54 11 CF 0C 4C
Original PuTTY Master Key (DSA, 1024-bit):
  313C 3E76 4B74 C2C5 F2AE  83A8 4F5E 6DF5 6A93 B34E

Také můžete použít klíč hostitele v plinku pro připojení ke vzdálenému serveru pomocí volby -hostkey.

C:\>plink devdb -hostkey aa:dd:b1:f1:f8:00:4c:36:63:ec:cf:92:16:e6:df:26 hostname

15. Možnost Plink -batch pro dávkové soubory Windows

Pokud spouštíte plink v dávkovém souboru Windows, pak se doporučuje použít volbu -batch.

C:>plink -batch devdb [complex-linux-command]

Pokud ve výše uvedeném příkladu selže příkaz complex-linux nebo požádá o vstup od uživatele, zasekne se atd., pak váš skript Windows Batch nebude čekat. Místo toho plink jednoduše opustí příkaz a dávkový skript selže.

To je pravděpodobně to, co byste očekávali, že se stane místo toho, aby vaše úloha dávkového souboru Windows jen čekala nebo visela.

Když tedy píšete dávkové skripty Windows pomocí plink, použijte volbu -batch v plink.


Linux
  1. Jak vzdálenou plochu z Windows na plochu Linuxu pomocí XRDP

  2. Přístup ke vzdálenému systému Osx z OSX, Linuxu, Windows?

  3. Příkazy hledání pro Linux

  1. Automatizace spouštění příkazů na Linuxu z Windows pomocí PuTTY

  2. Použití putty pro scp z Windows do Linuxu

  3. Nejlepší způsob, jak skriptovat vzdálené příkazy SSH v dávce (Windows)

  1. Příkaz SCP Linux – Jak přenášet soubory SSH ze vzdáleného do místního

  2. Připojte se k Linuxu z Windows pomocí PuTTY

  3. Přesná kopie souborů z NTFS do jiného NTFS pomocí Linuxu