Je me trouve souvent en train d'ouvrir une session SSH pour exécuter la même commande unique. J'ai tout configuré pour me connecter sans entrer de mot de passe (via SSH Key-Based Auth). Je me suis donc demandé s'il existait un moyen de créer un raccourci ou un fichier de commandes dans Windows pour charger PuTTY ou un programme similaire, puis le désactiver. commande (et probable si le résultat est bon).
Utilisez la ligne de commande PuTTY version plink.exe
pour établir une connexion SSH vers un hôte de votre choix. Utilisez le commutateur -ssh
pour vous connecter à SSH. Avec le commutateur -m
, vous pouvez inclure un fichier de commande:
plink.exe -ssh Host1 -m C:\path\to\commands.txt
Vous pouvez télécharger plink.exe
de ici.
La dernière étape serait de créer un raccourci incluant plink.exe
avec les paramètres souhaités.
Consultez la documentation de Plink pour d’autres paramètres: Documentation de Plink.exe
Pour automatiser l'exécution d'une commande, utilisez Plink (du paquetage PuTTY) , pas PuTTY lui-même.
Plink accepte une commande sur sa ligne de commande:
plink.exe user@Host command
Si vous souhaitez continuer à utiliser PuTTY, vous pouvez utiliser _ COMMUTATEUR -m
pour spécifier un fichier de commande (Plink prend également en charge le commutateur -m
).
Vous pouvez utiliser les configurations PuTTY pour y parvenir.
Chargez PuTTY et configurez votre session.
Entrez la commande à distance que vous souhaitez exécuter ici:
Ensuite, avant de cliquer sur " Ouvrir ", revenez à l'onglet " Session " (en haut) et enregistrez votre configuration. .
Créez maintenant un raccourci vers PuTTY.exe
, en ajoutant le drapeau -load
, par exemple:
%PATH_TO_PuTTY%\PuTTY.exe -load my_config
Maintenant, vous pouvez simplement cliquer sur le raccourci et cela chargera votre session, exécutant votre commande.
Je pensais que j'insérerais le script que j'ai créé pour économiser, espérons-le, des heures de recherche syntaxique et de pages de manuel.
a) fichier SingleIP, IP Range ou IPList
b) nom du script à exécuter sur l’IP/plage (script de type unix sh/ksh actuel)
c) le cas échéant, effectuez une analyse nmap du port 22 ouvert (c’est-à-dire un sous-réseau avec des machines autres que Linux)
-vouloir éviter les adresses IP sur lesquelles PuTTY ne peut pas se connecter, évitant ainsi que le script puisse continuer correctement
d) éventuellement exécuter la commande pscp pour mettre en cache automatiquement la clé de l'hôte (PuTTY ne le fait pas automatiquement)
Ce lot suppose:
1. le paquet complet PuTTY et la clé SSH sont installés dans C:\Program Files\PuTTY\
2. Les fichiers batch/scripts/IPlist installés dans C:\Program Files\PuTTY\scripts\
3. Les répertoires de travail NMAP et PuTTY sont dans votre chemin de commande
https://www.harmonyhit.com/PuttyBatch.bat
Ceci est surtout utile pour avoir un seul script (comme la mise à jour d'un certificat SSL) sur une gamme de machines.
Voici le fichier batch complet:
@ECHO OFF Rem Vous devez modifier les sections CACHEKEY et SCRIPT afin de refléter l'emplacement de votre clé SSH Set IPFILE = IPList_temp.txt Set runagain = n définir OPTION = 1 définir GAMME = définir IP = définir SCAN = n définir KEYCACHE = n : OPTION CLS ECHO (le répertoire de travail est défini sur C:\Program Files\PuTTY\scripts \) ECHO. ECHO 1. IP unique ECHO 2. Fichier de liste IP ECHO 3. Plage d'adresses IP ECHO. Type d'IP: " IF% OPTION% == 3 GOTO IPRANGE IF% OPTION% == 2 GOTO IPLIST IF%% OPTION == 1 GOTO SINGLEIP echo Veuillez sélectionner une option valide OPTION GOTO : IPRANGE ECHO Entrez la ou les plages d'adresses IP comme dans l'exemple suivant. Utilisez un espace entre plusieurs plages: ECHO, par exemple "10.21.0.15-99 10.21.1.15-100" Set/p RANGE = Enter Plage: Echo% RANGE%>% IPFILE% GOTO SCRIPTNAME : SINGLEIP Set/p IP = Entrer IP: Echo% IP%>% IPFILE% GOTO SCRIPTNAME : IPLIST Set/p IP = Entrer le nom du fichier IPList: Copier/Y% IP%% IPFILE% GOTO. SCRIPTNAME : SCRIPTNAME Set/p SCRIPT = Entrez le nom du script: S'il n'existe pas% SCRIPT% ( Echo nom_fichier n'existe pas! GOTO SCRIPTNAME) ECHO. Set/p SCAN = Est-ce que Nmap balaye d'abord? (recommandé): si% SCAN% == n GOTO: RUNCACHE rem Vérifiez si le type IP est "range" car nmap ne peut pas lire une plage IP du fichier et doit être tapez directement dans la commande nmap IF% OPTION% == 3 GOTO NMAPRANGE : NMAP echo Analyse d'adresses IP pour le port 22 ouvert ... nmap --open -n -p22 -iL% IPFILE% -oG - | findstr/E Up> nmap_temp.txt GOTO AFTERNMAP : NMAPRANGE echo Analyse des adresses IP du port 22 ouvert ... nmap - open -n -p22% RANGE% -oG - | findstr/E Up> nmap_temp.txt : AFTERNMAP echo DONE La mise en forme de nmap n'est pas correcte, les informations suivantes suppriment des informations supplémentaires pour/f "tokens = 2" %% A dans (nmap_temp.txt) echo %% A >> nmap_temp2.txt supprime l’espace caché à la fin de l’IP (nécessite que "repl" soit dans le répertoire du fichier de commandes ) tapez "nmap_temp2.txt" | repl "" "">% IPFILE% : RUNCACHE set/p KEYCACHE = Balayer et mettre en cache la clé SSH (y/n)? si% KEYCACHE % == n GOTO SCRIPT : CACHEKEY rem Exécute toutes les adresses IP pour mettre en cache la clé d’hôte SSH s’il n’a pas déjà été mis en cache pour/F "tokens = * "%% A dans (% IPFILE%) do (echo y |" C:\Program Files\PuTTY\pscp.exe "-l racine -i" C:\Program Files\PuTTY\SSH.ppk "-touch %% A:/tmp/test) : SCRIPT Pour/F "jetons = 1" %% A dans (% IPFILE%) faire ("C:\Program Files\PuTTY\putty.exe "-ssh %% A -t -l racine -i" C:\Program Files\PuTTY\SSH.ppk "-m" C:\Program Files\PuTTY\scripts \% SCRIPT% ") s'il existe nmap_temp.txt (del nmap_temp.txt) s'il existe nmap_temp2.txt (del nmap_temp2.txt) set/p runagain = "Appuyez sur Entrée pour terminer ou sur y pour relancer " si% runagain% == y GOTO OPTION
Si vous utilisez Windows 10, sachez que Microsoft aurait apparemment une version bêta de OpenSSH (client ) et serveur):
[…] Allez dans "Gérer les fonctionnalités optionnelles" puis + "Ajouter une fonctionnalité". Vous pouvez ensuite faire défiler la liste et trouver les fonctionnalités OpenSSH Client (Beta) et OpenSSH Server (Beta) dans Windows. L’idée d’exécuter un autre service distant sous Windows peut être décourageante. Nous ne vous en voulons donc pas si vous ne souhaitez pas installer le serveur.
Une fois installé, vous pouvez simplement lancer votre ligne de commande et utiliser le client OpenSSH en tapant ssh suivi de la commande telle que
ssh ubuntu@someIP
.Voici le guide d'utilisation actuel de la commande
ssh
(en date du 28 novembre 2017) obtenu avec le client Windows OpenSSH:C:\WINDOWS\system32>ssh usage: ssh [-46AaCfGgKkMNnqsTtVvXxYy] [-b bind_address] [-c cipher_spec] [-D [bind_address:]port] [-E log_file] [-e escape_char] [-F configfile] [-I pkcs11] [-i identity_file] [-J [user@]Host[:port]] [-L address] [-l login_name] [-m mac_spec] [-O ctl_cmd] [-o option] [-p port] [-Q query_option] [-R address] [-S ctl_path] [-W Host:port] [-w local_tun[:remote_tun]] [user@]hostname [command] C:\WINDOWS\system32>
Si cela fonctionne, vous devriez pouvoir utiliser ssh
comme vous le feriez sur un * Nix:
C:\WINDOWS\system32>ssh user@Host "ls -l ~"
Vous pouvez également consulter des logiciels tels que mRemoteNG, MOBAxTerm ou SecureCRT, qui gèreront vos connexions SSH. Ces liens sont également liés aux sessions PuTTY enregistrées pour vous permettre d'appliquer un modèle à la session.
C'est le "CMD" final que je peux simplement enregistrer sur mon serveur de fichiers et créer un raccourci sur mon bureau.
::FreeSoftwareServers
::Automated Opening of SSH Tunnel & Execute CMD on Remote Host
::https://superuser.com/questions/1278434/create-a-batch-file-or-shortcut-to-PuTTY-ssh-that-opens-a-session-and-runs-a-c
set puttydir="C:\Program Files\PuTTY"
set exe=plink.exe
::Profile must exist in PuTTY
set remotehost=FileServer
set remotecmd="chmod 777 /mnt/mdadm/torrents -R"
cd %puttydir%
%exe% %remotehost% %remotecmd%
::Test First Manually in CMD Prompt
::Note Remote Host does NOT have access to BashRC Alias's
::start "C:\Program Files\PuTTY\" plink.exe -ssh FileServer touch /tmp/testfile
::start "C:\Program Files\PuTTY\" plink.exe -ssh FileServer ~/script.sh