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í:
- Spustit plink z příkazového řádku
- Plink Interactive SSH Session
- Plink Non-Interactive SSH Session pro provedení vzdáleného příkazu
- Spouštět více příkazů Linuxu ze souboru Windows
- Zadejte protokol připojení
- Uveďte heslo SSH jako argument Plink
- Ladění problémů s plinkem
- Uveďte port SSH jako možnost Plink
- Soubory protokolu Plink pro připojení SSH
- Uveďte protokol SSH (SSH-1 nebo SSH-2)
- Uveďte protokol IP (IPv4 nebo IPv6)
- Pro ověření pomocí Plink použijte soubor soukromého klíče
- Další možnosti povolení a zakázání pro Plink SSH
- Otisk prstu a hostitelský klíč s Plink
- 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.