Plink sta per PuTTY Link.
Plink è un'utilità della riga di comando complementare per PuTTY.
Ad altissimo livello:
- Usa PuTTY per sessioni SSH interattive dai tuoi server Windows a Linux
- Usa Plink per sessioni SSH non interattive per eseguire comandi Linux remoti a scopo di automazione dal tuo Windows
In questo tutorial parleremo di quanto segue:
- Avvia plink dal prompt dei comandi
- Sessione SSH interattiva Plink
- Sessione SSH non interattiva Plink per eseguire un comando remoto
- Esegui più comandi Linux da un file Windows
- Specifica protocollo di connessione
- Specifica la password SSH come argomento Plink
- Debug dei problemi di Plink
- Specifica la porta SSH come opzione Plink
- File di registro Plink per connessioni SSH
- Specificare il protocollo SSH (SSH-1 o SSH-2)
- Specifica il protocollo IP (IPv4 o IPv6)
- Utilizza il file della chiave privata per l'autenticazione con Plink
- Opzioni di abilitazione e disabilitazione aggiuntive per Plink SSH
- Impronta digitale e HostKey con Plink
- Opzione Plink -batch per i file batch di Windows
Innanzitutto, scarica l'eseguibile plink da qui.
Se non hai già installato PuTTY sul tuo computer, assicurati di scaricare anche l'eseguibile putty insieme a plink.
Se hai un laptop Windows a 32 bit, assicurati di scaricare la versione a 32 bit di plink. In caso contrario, scarica la versione a 64 bit.
1. Avvia plink dal prompt dei comandi
Non puoi semplicemente fare doppio clic su plink.exe per avviarlo. Poiché si tratta di un'utilità solo da riga di comando (senza GUI), dovresti prima avviare il prompt dei comandi di Windows.
Per questo, fai clic sul menu Start di Windows e digita "cmd.exe" nella casella di ricerca e premi invio, questo avvierà il prompt dei comandi di Windows.
Inoltre, a seconda di dove hai scaricato plink.exe, potresti dover modificare di conseguenza la variabile PATH di Windows.
Vai alle finestre "Proprietà del sistema", fai clic su "Variabili d'ambiente", seleziona Variabile di percorso e aggiungi qui la directory in cui si trova plink.exe.
Oppure puoi semplicemente impostare la tua variabile PATH come mostrato di seguito. Nell'esempio seguente, ho scaricato plink.exe nella directory C:\Downloads.
set PATH=%PATH%;C:\Downloads
Quindi, digita plink nel prompt dei comandi, questo mostrerà le varie opzioni disponibili.
2. Sessione SSH interattiva Plink
Quella che segue è la sintassi di base per plink:
plink [options] connection [command]
Nella sintassi sopra:
- opzioni:puoi passare varie opzioni a plink. Questo è facoltativo.
- connessione – Questo avrà le informazioni di connessione del server Linux a cui vuoi connetterti. I vari metodi di connessione sono spiegati negli esempi seguenti.
- comando – Questo è il comando che dovrebbe essere eseguito sul server Linux remoto. Questo è facoltativo.
Sebbene il comando sia facoltativo, quando non lo dai, visualizzerà una sessione interattiva grezza, che avrà molti caratteri non leggibili non stampabili sullo schermo. Come spiegato in precedenza, plink non è pensato per essere utilizzato come sessione interattiva. Usa lo stucco per la sessione interattiva.
Per ora, vediamo vari metodi per utilizzare la connessione.
Innanzitutto, puoi semplicemente fornire l'indirizzo IP del server remoto. Questo richiederà quindi il nome utente e la password per accedere.
C:\>plink 192.168.101.1 login as: root [email protected]'s password:
Oppure puoi anche usare il nome utente usando il simbolo @ come mostrato di seguito. Questo richiederà solo la password, poiché abbiamo specificato il nome utente.
C:\>plink [email protected] Using username "root". [email protected]'s password:
Puoi anche passare il nome utente usando l'opzione -l come mostrato di seguito:
C:\>plink 192.168.101.1 -l mysql
Puoi anche usare il nome di una sessione di stucco esistente. In questo esempio, sto usando la sessione di stucco salvata esistente chiamata "devdb". Questo è il modo di utilizzo consigliato, poiché puoi portare tutte le informazioni di configurazione da PuTTY a qui per questa particolare sessione "devdb".
C:\>plink devdb Using username "root". [email protected]'s password:
Il seguente -load è esattamente lo stesso di sopra.
C:\>plink -load devdb Using username "root". [email protected]'s password:
Come vedi di seguito, una volta effettuato l'accesso, riceverai un prompt dei comandi. Tuttavia, facendo qualsiasi cosa qui verranno visualizzati alcuni caratteri non intuitivi.
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 ~]#
Ancora una volta, per la sessione SSH interattiva, usa PuTTY.
In una nota correlata, anche se usi PuTTY da un po', potresti trovare utili alcuni suggerimenti da qui:10 fantastici suggerimenti e trucchi PuTTY che probabilmente non sapevi
3. Plink Sessione SSH non interattiva per eseguire un comando remoto
Usando plink, da Windows, puoi eseguire un comando sul server Linux senza alcuna interazione da parte dell'utente e solo visualizzare l'output.
Per questo, passa il comando come ultimo argomento al plink come mostrato di seguito.
Nell'esempio seguente, eseguirà il comando "crontab -l" sul server remoto e visualizzerà l'output.
C:\>plink [email protected] crontab -l no crontab for root
Se desideri eseguire più comandi, raggruppali insieme come mostrato di seguito.
C:\>plink [email protected] (hostname;crontab -l) devdb.thegeekstuff.com no crontab for root
Quanto segue eseguirà lo script di shell db-backup.sh sul server Linux remoto. Ma lo stai avviando dal tuo computer Windows.
plink [email protected] /root/bin/db-backup.sh
Alcuni punti da tenere a mente:
- Se il comando precedente richiede la password e se non vuoi che ciò accada, dovresti impostare l'autenticazione della chiave pubblica-privata in modo appropriato in modo che il server Linux remoto non chieda la password.
- Puoi anche passare la password come opzione della riga di comando per plink, come mostrato in uno degli esempi seguenti.
- Inoltre, se sopra viene visualizzato un messaggio di errore relativo al protocollo non valido, dovresti passare il protocollo appropriato come mostrato nell'esempio successivo.
4. Esegui più comandi Linux da un file Windows
Invece di specificare tutti i comandi da eseguire sul server Linux remoto nella riga di comando di plink, puoi anche inserirli in un file di testo e specificare il file come parametro per il plink.
Ad esempio, crea il seguente file chiamato commands.txt su Windows.
C:\>type commands.txt hostname service mysql stop yum -y install httpd service mysql start service httpd start crontab -l
Ora per eseguire tutti i comandi precedenti sul server Linux remoto uno per uno in sequenza, esegui il seguente comando plink sul tuo laptop Windows.
C:\>plink [email protected] -m C:\commands.txt
5. Specificare il protocollo di connessione
Plink consente i seguenti protocolli:SSH, Telnet, Accesso remoto (rlogin), Raw, Connessione seriale
Il più popolare e l'impostazione predefinita è SSH. Usa -ssh come mostrato di seguito.
C:\>plink -ssh [email protected]
Per Telnet:
C:\>plink -telnet [email protected]
Per l'accesso remoto tramite rlogin:
C:\>plink -rlogin [email protected]
Per Raw:
C:\>plink -raw [email protected] SSH-2.0-OpenSSH_5.3
Se stai cercando di specificare un protocollo particolare e ricevi l'errore "ERRORE FATAL:Errore di rete:Connessione rifiutata", significa che il server remoto non supporta il protocollo specificato.
Se non vuoi specificare il protocollo sulla riga di comando:
- Puoi utilizzare una sessione PuTTY salvata che ha già il protocollo definito per quella particolare sessione.
- Oppure puoi utilizzare la variabile ambiente di Windows denominata PLINK_PROTOCOL e impostare il valore di conseguenza, che verrà utilizzato da plink.
6. Specificare la password SSH come argomento Plink
Se non si dispone della configurazione dell'autenticazione basata su chiave, è possibile passare la password come parametro nella riga di comando. Inutile dire che questo metodo non è consigliato.
Questo si connetterà al server come root usando la password specificata dall'opzione -pw, eseguirà tutti i comandi Linux forniti e visualizzerà l'output sul prompt dei comandi di Windows.
C:\>plink [email protected] -pw SecretRootPwd (date;hostname;ls -l)
Naturalmente, il metodo più semplice consiste nell'utilizzare una sessione di stucco salvata (ad esempio, devdb) invece di specificare il nome utente e l'indirizzo IP come mostrato di seguito.
C:\>plink devdb -pw SecretRootPwd (date;hostname;ls -l)
7. Debug dei problemi di Plink
Innanzitutto, assicurati di avere l'ultima versione di plink. Utilizzare l'opzione -V (V maiuscola) come mostrato di seguito. L'attuale versione stabile è 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
Quindi, usa l'opzione -v (v minuscola) come mostrato di seguito per un output più dettagliato.
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. Specifica la porta SSH come opzione Plink
Per impostazione predefinita per SSH, si connetterà alla porta 22. Ma, sul tuo server Linux, se SSH è configurato per funzionare su una porta diversa, usa l'opzione -P in plink per specificare la porta.
Nell'esempio seguente, plink si connetterà al server Linux remoto sulla porta 25.
C:\>plink [email protected] -P 25 crontab -l
Quando utilizzi una sessione PuTTY salvata e un'opzione -P, invece di utilizzare la porta dalla sessione salvata, utilizzerà la porta specificata.
C:\>plink devdb -P 25 crontab -l
9. File di registro Plink per connessioni SSH
Per il protocollo SSH in Plink, ci sono un paio di utili opzioni di registrazione.
La seguente opzione –sshlog salverà i log nel file specificato (sshlog.txt).
C:\>plink devdb -sshlog sshlog.txt (date;hostname;ls -l)
Questo è il contenuto parziale dell'output di 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
Per un registro più dettagliato, usa l'opzione -sshrawlog. Si noti che la dimensione del file di questo sarà maggiore di quella sopra, poiché ciò memorizzerà molte più informazioni nel file di registro.
Inoltre, l'esecuzione dell'operazione richiederà più tempo rispetto al comando precedente, poiché l'opzione sshrawlog raccoglie più informazioni di registro rispetto alla normale opzione sshlog.
C:\>plink devdb -sshrawlog sshrawlog.txt (date;hostname;ls -l)
10. Specificare il protocollo SSH (SSH-1 o SSH-2)
Per impostazione predefinita, utilizzerà il protocollo SSH-2, che può anche essere specificato utilizzando l'opzione -2 come mostrato di seguito.
C:\>plink devdb -2 (hostname;ls -l) devdb.thegeekstuff.com total 326380
Per il protocollo SSH-1, utilizzare l'opzione -1 come mostrato di seguito. Se il tuo server non lo supporta, riceverai il seguente errore.
C:\>plink devdb -pw -1 (hostname;ls -l) FATAL ERROR: SSH protocol version 1 required by our configuration but not provided by server
11. Specifica il protocollo IP (IPv4 o IPv6)
Per impostazione predefinita, utilizzerà IPv4, che può anche essere specificato utilizzando l'opzione -4 come mostrato di seguito.
C:\>plink devdb -4 (hostname;ls -l)
Per utilizzare IPv6, utilizzare l'opzione-6 come mostrato di seguito.
C:\>plink devdb -6 (hostname;ls -l)
12. Usa il file della chiave privata per l'autenticazione con Plink
Utilizzare l'opzione -i per specificare la posizione del file della chiave privata da utilizzare per l'autenticazione.
Nell'esempio seguente, utilizzerà il file devdb.ppk dalla directory C:\Downloads.
C:\>plink -i "C:\Downloads\devdb.ppk" [email protected] hostname
Nota:riceverai "Server rifiutato la nostra chiave", se la chiave fornita non è configurata correttamente per essere utilizzata con il tuo server Linux.
Se il file della chiave non viene trovato (ad esempio, quando si fornisce un nome di directory errato), verrà visualizzato il seguente errore:
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:
Se specifichi una chiave che non è di formato corretto, riceverai il seguente messaggio di errore.
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. Ulteriori opzioni di abilitazione e disabilitazione per Plink SSH
Puoi anche utilizzare le seguenti opzioni SSH plink:
- -X per abilitare l'inoltro X11
- -X per disabilitare l'inoltro X11
- -A per abilitare l'inoltro dell'agente
- -a per disabilitare l'inoltro dell'agente
- -t per abilitare l'allocazione pty
- -T per disabilitare l'allocazione pty
- -noagent per disabilitare l'uso di Pageant
- -agente per abilitare l'uso di Pageant
- -C per abilitare la compressione
14. Impronta digitale e HostKey con Plink
Utilizzare l'opzione -pgpfp che visualizzerà i dettagli dell'impronta digitale PGP per PuTTY. In genere puoi usarlo per stabilire l'attendibilità dall'eseguibile plink.exe a un altro programma o eseguibile a cui stai tentando di connetterti.
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
Inoltre, puoi usare hostkey nel plink per connetterti al server remoto di conseguenza usando l'opzione -hostkey.
C:\>plink devdb -hostkey aa:dd:b1:f1:f8:00:4c:36:63:ec:cf:92:16:e6:df:26 hostname
15. Opzione Plink -batch per i file batch di Windows
Se stai eseguendo plink all'interno di un file batch di Windows, ti consigliamo di utilizzare l'opzione -batch.
C:>plink -batch devdb [complex-linux-command]
Nell'esempio sopra, se il comando complex-linux-fallisce, o richiede un input dall'utente, o si blocca, ecc., lo script batch di Windows non sarà in attesa. Invece, plink abbandonerà semplicemente il comando e lo script batch avrà esito negativo.
Questo è probabilmente ciò che ti aspetteresti che accada invece del tuo lavoro con il file batch di Windows che è solo in attesa o sospeso.
Quindi, usa l'opzione -batch in plink quando scrivi script batch di Windows usando plink.