Plink signifie PuTTY Link.
Plink est un utilitaire de ligne de commande compagnon pour PuTTY.
À un niveau très élevé :
- Utilisez PuTTY pour une session SSH interactive de vos serveurs Windows vers Linux
- Utilisez Plink pour une session SSH non interactive afin d'exécuter des commandes Linux à distance à des fins d'automatisation à partir de votre Windows
Dans ce didacticiel, nous aborderons les points suivants :
- Lancer plink à partir de l'invite de commande
- Session SSH interactive Plink
- Session SSH non interactive Plink pour exécuter une commande à distance
- Exécuter plusieurs commandes Linux à partir d'un fichier Windows
- Spécifier le protocole de connexion
- Spécifiez le mot de passe SSH comme argument Plink
- Déboguer les problèmes de Plink
- Spécifiez le port SSH comme option Plink
- Fichiers journaux Plink pour les connexions SSH
- Spécifiez le protocole SSH (SSH-1 ou SSH-2)
- Spécifiez le protocole IP (IPv4 ou IPv6)
- Utiliser le fichier de clé privée pour l'authentification avec Plink
- Options d'activation et de désactivation supplémentaires pour Plink SSH
- Empreinte digitale et HostKey avec Plink
- Option Plink -batch pour les fichiers batch Windows
Tout d'abord, téléchargez l'exécutable plink à partir d'ici.
Si PuTTY n'est pas déjà installé sur votre ordinateur, assurez-vous de télécharger également l'exécutable de mastic avec plink.
Si vous avez un ordinateur portable Windows 32 bits, assurez-vous de télécharger la version 32 bits de plink. Sinon, téléchargez la version 64 bits.
1. Lancer plink à partir de l'invite de commande
Vous ne pouvez pas simplement double-cliquer sur plink.exe pour le lancer. Puisqu'il s'agit d'un utilitaire de ligne de commande uniquement (sans interface graphique), vous devez d'abord lancer votre invite de commande Windows.
Pour cela, cliquez sur le menu Démarrer de Windows, et tapez "cmd.exe" dans la zone de recherche et appuyez sur Entrée, cela lancera l'invite de commande Windows.
De plus, selon l'endroit où vous avez téléchargé plink.exe, vous devrez peut-être modifier la variable PATH de Windows en conséquence.
Accédez à vos fenêtres "Propriétés système", cliquez sur "Variables d'environnement", sélectionnez Variable de chemin et ajoutez le répertoire où se trouve le plink.exe ici.
Ou, vous pouvez simplement définir votre variable PATH comme indiqué ci-dessous. Dans l'exemple suivant, j'ai téléchargé le plink.exe dans le répertoire C:\Downloads.
set PATH=%PATH%;C:\Downloads
Ensuite, tapez plink dans l'invite de commande, cela affichera les différentes options disponibles.
2. Session SSH interactive Plink
Voici la syntaxe de base pour plink :
plink [options] connection [command]
Dans la syntaxe ci-dessus :
- options – Vous pouvez passer diverses options à plink. Ceci est facultatif.
- connexion - Cela contiendra les informations de connexion du serveur Linux auquel vous souhaitez vous connecter. Diverses méthodes de connexion sont expliquées dans les exemples ci-dessous.
- commande - Il s'agit de la commande qui doit être exécutée sur le serveur Linux distant. Ceci est facultatif.
Bien que la commande soit facultative, lorsque vous ne la donnez pas, elle affichera une session interactive brute, qui aura beaucoup de caractères non imprimables et non lisibles à l'écran. Comme expliqué précédemment, plink n'est pas destiné à être utilisé comme session interactive. Utilisez du mastic pour une session interactive.
Pour l'instant, voyons différentes méthodes pour utiliser la connexion.
Tout d'abord, vous pouvez simplement donner l'adresse IP du serveur distant. Cela demandera alors le nom d'utilisateur et le mot de passe pour se connecter.
C:\>plink 192.168.101.1 login as: root [email protected]'s password:
Ou, vous pouvez également utiliser le nom d'utilisateur en utilisant le symbole @ comme indiqué ci-dessous. Cela ne demandera que le mot de passe, car nous avons spécifié le nom d'utilisateur.
C:\>plink [email protected] Using username "root". [email protected]'s password:
Vous pouvez également transmettre le nom d'utilisateur à l'aide de l'option -l comme indiqué ci-dessous :
C:\>plink 192.168.101.1 -l mysql
Vous pouvez également utiliser le nom d'une session putty existante. Dans cet exemple, j'utilise la session putty enregistrée existante appelée "devdb". Il s'agit de la méthode d'utilisation recommandée, car vous pouvez apporter ici toutes les informations de configuration de PuTTY pour cette session "devdb" particulière.
C:\>plink devdb Using username "root". [email protected]'s password:
Le -load suivant est exactement le même que ci-dessus.
C:\>plink -load devdb Using username "root". [email protected]'s password:
Comme vous le voyez ci-dessous, une fois connecté, vous obtiendrez une invite de commande. Mais, faire quoi que ce soit ici affichera des caractères non conviviaux.
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 ~]#
Encore une fois, pour une session SSH interactive, veuillez utiliser PuTTY.
Sur une note connexe, même si vous utilisez PuTTY depuis un certain temps, vous trouverez peut-être quelques conseils utiles :10 trucs et astuces impressionnants de PuTTY que vous ne saviez probablement pas
3. Plink Session SSH non interactive pour exécuter une commande à distance
En utilisant plink, à partir de Windows, vous pouvez exécuter une commande sur le serveur Linux sans aucune interaction de l'utilisateur et afficher simplement la sortie.
Pour cela, passez la commande comme dernier argument au plink comme indiqué ci-dessous.
Dans l'exemple suivant, il exécutera la commande "crontab -l" sur le serveur distant et affichera la sortie.
C:\>plink [email protected] crontab -l no crontab for root
Si vous souhaitez exécuter plusieurs commandes, regroupez-les comme indiqué ci-dessous.
C:\>plink [email protected] (hostname;crontab -l) devdb.thegeekstuff.com no crontab for root
Ce qui suit exécutera le shellscript db-backup.sh sur le serveur Linux distant. Mais, vous lancez cela à partir de votre machine Windows.
plink [email protected] /root/bin/db-backup.sh
Quelques points à garder à l'esprit :
- Si la commande ci-dessus demande un mot de passe, et si vous ne voulez pas que cela se produise, vous devez configurer l'authentification par clé publique-privée de manière appropriée afin que le serveur Linux distant ne demande pas de mot de passe.
- Vous pouvez également transmettre le mot de passe en tant qu'option de ligne de commande à plink, comme illustré dans l'un des exemples ci-dessous.
- En outre, si ce qui précède affiche un message d'erreur concernant un protocole non valide, vous devez transmettre le protocole approprié, comme indiqué dans l'exemple suivant.
4. Exécuter plusieurs commandes Linux à partir d'un fichier Windows
Au lieu de spécifier toutes les commandes à exécuter sur le serveur Linux distant dans la ligne de commande plink, vous pouvez également les mettre dans un fichier texte et spécifier le fichier en tant que paramètre du plink.
Par exemple, créez le fichier suivant appelé commands.txt sur votre Windows.
C:\>type commands.txt hostname service mysql stop yum -y install httpd service mysql start service httpd start crontab -l
Maintenant, pour exécuter toutes les commandes ci-dessus sur le serveur Linux distant une par une dans l'ordre, exécutez la commande plink suivante sur votre ordinateur portable Windows.
C:\>plink [email protected] -m C:\commands.txt
5. Spécifiez le protocole de connexion
Plink autorise les protocoles suivants :SSH, Telnet, Remote Login (rlogin), Raw, Serial Connection
Le plus populaire et le défaut est SSH. Utilisez -ssh comme indiqué ci-dessous.
C:\>plink -ssh [email protected]
Pour Telnet :
C:\>plink -telnet [email protected]
Pour la connexion à distance à l'aide de rlogin :
C:\>plink -rlogin [email protected]
Pour brut :
C:\>plink -raw [email protected] SSH-2.0-OpenSSH_5.3
Si vous essayez de spécifier un protocole particulier et que vous obtenez l'erreur "ERREUR FATAL :Erreur réseau :Connexion refusée", cela signifie que le serveur distant ne prend pas en charge le protocole spécifié.
Si vous ne souhaitez pas spécifier le protocole sur la ligne de commande :
- Vous pouvez utiliser une session PuTTY enregistrée qui a déjà le protocole défini pour cette session particulière.
- Ou, vous pouvez utiliser la variable d'environnement Windows appelée PLINK_PROTOCOL et définir la valeur en conséquence, qui sera utilisée par plink.
6. Spécifiez le mot de passe SSH comme argument Plink
Si vous ne disposez pas de la configuration d'authentification basée sur une clé, vous pouvez transmettre le mot de passe en tant que paramètre dans la ligne de commande. Inutile de dire que cette méthode n'est pas recommandée.
Cela se connectera au serveur en tant que root en utilisant le mot de passe spécifié par l'option -pw, et exécutera toutes les commandes Linux données et affichera la sortie sur votre invite de commande Windows.
C:\>plink [email protected] -pw SecretRootPwd (date;hostname;ls -l)
Bien sûr, la méthode la plus simple consiste à utiliser une session putty enregistrée (par exemple, devdb) au lieu de spécifier le nom d'utilisateur et l'adresse IP comme indiqué ci-dessous.
C:\>plink devdb -pw SecretRootPwd (date;hostname;ls -l)
7. Déboguer les problèmes de Plink
Tout d'abord, assurez-vous d'avoir la dernière version de plink. Utilisez l'option -V (V majuscule) comme indiqué ci-dessous. La version stable actuelle est la 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
Ensuite, utilisez l'option -v (v minuscule) comme indiqué ci-dessous pour une sortie plus détaillée.
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. Spécifiez le port SSH comme option Plink
Par défaut pour SSH, il se connectera au port 22. Mais, sur votre serveur Linux, si SSH est configuré pour s'exécuter sur un port différent, utilisez l'option -P dans plink pour spécifier le port.
Dans l'exemple suivant, plink se connectera au serveur Linux distant sur le port 25.
C:\>plink [email protected] -P 25 crontab -l
Lorsque vous utilisez une session PuTTY enregistrée et l'option -P, au lieu d'utiliser le port de la session enregistrée, il utilisera le port donné.
C:\>plink devdb -P 25 crontab -l
9. Fichiers journaux Plink pour les connexions SSH
Pour le protocole SSH dans Plink, il existe quelques options de journalisation utiles.
L'option –sshlog suivante enregistrera les journaux dans le fichier donné (sshlog.txt).
C:\>plink devdb -sshlog sshlog.txt (date;hostname;ls -l)
Ceci est le contenu partiel de la sortie 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
Pour un journal plus détaillé, utilisez l'option -sshrawlog. Veuillez noter que la taille du fichier sera plus grande que celle ci-dessus, car cela stockera beaucoup plus d'informations dans le fichier journal.
De plus, cela prendra plus de temps à s'exécuter que la commande ci-dessus, car l'option sshrawlog collecte plus d'informations de journal que l'option sshlog normale.
C:\>plink devdb -sshrawlog sshrawlog.txt (date;hostname;ls -l)
10. Spécifiez le protocole SSH (SSH-1 ou SSH-2)
Par défaut, il utilisera le protocole SSH-2, qui peut également être spécifié à l'aide de l'option -2 comme indiqué ci-dessous.
C:\>plink devdb -2 (hostname;ls -l) devdb.thegeekstuff.com total 326380
Pour le protocole SSH-1, utilisez l'option -1 comme indiqué ci-dessous. Si votre serveur ne le prend pas en charge, vous obtiendrez l'erreur suivante.
C:\>plink devdb -pw -1 (hostname;ls -l) FATAL ERROR: SSH protocol version 1 required by our configuration but not provided by server
11. Spécifiez le protocole IP (IPv4 ou IPv6)
Par défaut, il utilisera IPv4, qui peut également être spécifié à l'aide de l'option -4 comme indiqué ci-dessous.
C:\>plink devdb -4 (hostname;ls -l)
Pour utiliser IPv6, utilisez l'option-6 comme indiqué ci-dessous.
C:\>plink devdb -6 (hostname;ls -l)
12. Utiliser le fichier de clé privée pour l'authentification avec Plink
Utilisez l'option -i pour spécifier l'emplacement du fichier de clé privée qui doit être utilisé pour l'authentification.
Dans l'exemple suivant, il utilisera le fichier devdb.ppk du répertoire C:\Downloads.
C:\>plink -i "C:\Downloads\devdb.ppk" [email protected] hostname
Remarque :Vous obtiendrez "Le serveur a refusé notre clé", si la clé donnée n'est pas correctement configurée pour être utilisée avec votre serveur Linux.
Si le fichier clé n'est pas trouvé (par exemple, lorsque vous donnez un mauvais nom de répertoire), vous obtiendrez l'erreur suivante :
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:
Si vous spécifiez une clé qui n'est pas au format approprié, vous obtiendrez le message d'erreur suivant.
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. Options d'activation et de désactivation supplémentaires pour Plink SSH
Vous pouvez également utiliser les options plink SSH suivantes :
- -X pour activer le transfert X11
- -X pour désactiver le transfert X11
- -A pour activer le transfert d'agent
- -a pour désactiver le transfert d'agent
- -t pour activer l'allocation pty
- -T pour désactiver l'allocation de pty
- -noagent pour désactiver l'utilisation de Pageant
- -agent pour activer l'utilisation de Pageant
- -C pour activer la compression
14. Empreinte digitale et HostKey avec Plink
Utilisez l'option -pgpfp qui affichera les détails de l'empreinte PGP pour PuTTY. En règle générale, vous pouvez l'utiliser pour établir la confiance entre l'exécutable plink.exe et un autre programme ou exécutable auquel vous essayez de vous connecter.
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
En outre, vous pouvez utiliser hostkey dans le plink pour vous connecter au serveur distant en utilisant l'option -hostkey.
C:\>plink devdb -hostkey aa:dd:b1:f1:f8:00:4c:36:63:ec:cf:92:16:e6:df:26 hostname
15. Option Plink -batch pour les fichiers batch Windows
Si vous exécutez plink dans un fichier de commandes Windows, il est recommandé d'utiliser l'option -batch.
C:>plink -batch devdb [complex-linux-command]
Dans l'exemple ci-dessus, si la commande complex-linux échoue, ou demande une entrée de l'utilisateur, ou se bloque, etc., votre script Windows Batch n'attendra pas. Au lieu de cela, plink abandonnera simplement la commande et le script batch échouera.
C'est probablement ce à quoi vous vous attendriez au lieu que votre travail de fichier batch Windows attende ou se bloque.
Utilisez donc l'option -batch dans plink lorsque vous écrivez des scripts batch Windows à l'aide de plink.