GNU/Linux >> Tutoriels Linux >  >> Linux

Comment configurer un profil d'onglet dans Windows Terminal pour SSH automatiquement dans une machine Linux

J'espère maintenant que vous avez installé Windows Terminal. Sinon, vas-y, j'attendrai. Il est temps.

Vous pouvez également personnaliser vos paramètres. Si vous avez essayé le terminal il y a quelques versions et que vous n'y êtes pas retourné, il est également temps de laisser le terminal Windows vous générer un joli nouveau profiles.json (fichier de paramètres). C'est OK pour mettre à zéro/supprimer le vôtre. Le terminal Windows le régénérera au prochain démarrage.

J'ai un certain nombre de choses dans la liste déroulante de mon terminal. Il ressemble à ceci.

Cependant, j'aimerais pouvoir avoir un profil ssh sur les machines Linux que j'utilise régulièrement. Peut-être que ces machines distantes peuvent avoir leur propre élément de menu sympa ? Voyons à quoi cela ressemblerait et comment nous le ferions.

Ajouter un nouveau profil au terminal Windows

Cliquez sur la flèche vers le bas dans la barre d'onglets supérieure du terminal Windows. Notez qu'il existe une tonne de paramètres intéressants et utiles, alors explorez le schéma des paramètres et, lorsque vous modifiez les paramètres, assurez-vous que Visual Studio Code est défini comme votre gestionnaire par défaut pour les fichiers .json. C'est important car le profile.json des paramètres du terminal Windows inclut un schéma JSON et vous souhaiterez que vos paramètres aient une saisie semi-automatique/intellisense. Cela facilitera la création et la découverte de nouveaux paramètres.

Je vais ajouter un profil au tableau "profils". Pour commencer, et pour apprendre, ajoutons le profil le plus simple possible ! J'ajoute simplement le { } en tant qu'élément de tableau dans les profils plus grands [] et lui donne un nom.

"profiles": [
{
"name": "This is a name"
},

Cela créera un nouvel élément de menu dans Windows Terminal avec le même nom. Il n'aura pas d'icône et il lancera cmd.exe comme shell par défaut car je n'ai défini aucune autre ligne de commande ! Si je l'ajoute en haut (en tant que premier) élément du tableau des profils, il apparaîtra également en premier dans le menu et aura le raccourci clavier Ctrl + Maj + 1.

C'est boiteux, alors ajoutons-en plus. Je vais ajouter un tabTitle et un commandline .

    {
"name": "This is a name",
"tabTitle": "This is a tab title",
"commandline": "powershell"
},

Cet élément de menu apparaîtra sous la forme "Ceci est un nom" dans le menu, mais l'onglet s'appellera "Ceci est un titre d'onglet". Il lancera powershell. Notez que je n'ai pas inclus .exe même si j'aurais pu. Je voulais m'assurer que vous compreniez bien que Windows Terminal s'appelle simplement Process.Start afin que vous puissiez définir un onglet de profil pour appeler n'importe quoi dans le PATH, ou vous pouvez être explicite. Je pourrais aussi ajouter "startingDirectory " et un tas d'autres options.

Puisque je peux appeler n'importe quoi dans le PATH, que puis-je faire d'autre ?

Utiliser OpenSSH sous Windows

Vous n'en avez peut-être pas entendu parler, mais OpenSSH est livré dans Windows depuis quelques années maintenant. Cela signifie que de nombreux utilitaires pour lesquels vous avez peut-être installé Putty sont déjà disponibles dans Windows. Vous pouvez ouvrir un PowerShell d'administration et exécuter une commande pour vous assurer que les applications clientes d'OpenSSH sont là :

Add-WindowsCapability -Online -Name OpenSSH.Client~~~~0.0.1.0

Cela installe le client, mais il y a aussi un serveur optionnel si vous le souhaitez.

Je vais me concentrer uniquement sur le client. Passez à la zone suivante si vous voulez faire votre SSH depuis Linux, pas Windows.

Voici ce qui est installé dans c:\windows\System32\OpenSSH

Ici, nous avons sftp, scp et, plus important encore, ssh.exe et ssh-agent. Étant donné que ssh est dans le PATH lorsqu'il est installé avec Windows, je peux modifier mon profil de terminal Windows pour qu'il ressemble à ceci et me connecter à mon Raspberry Pi 4.

{
"name": "ssh hanselPi4",
"tabTitle": "HanselPi4",
"commandline": "ssh pi@hanselpi4"
},

Notez que dans cette capture d'écran, la connexion ssh est répertoriée en haut et lorsque je clique dessus, elle ouvre ssh.exe et me demande un mot de passe. Je n'ai pas de clés ssh sur mon système qui permettraient la connexion automatique, donc le mot de passe est nécessaire.

Se connecter/se connecter automatiquement en SSH à une machine Linux à partir d'un profil de terminal Windows

Maintenant, c'est important, alors faites attention. Si vous avez déjà WSL ou WSL sur votre machine, vous pouvez certainement utiliser les clés SSH et les utilitaires inclus dans votre distribution Linux préférée.

Dans ce cas, votre ligne de commande dans votre profil Windows Terminal ressemblerait à :

wsl ssh pi@hanselpi4

ou si vous voulez une distribution spécifique, vous pouvez lancer une distribution et ssh à partir de là.

wsl -d Ubuntu-18.04 ssh pi@hanselpi4

Si vous connaissez Linux, vous savez comment configurer vos clés publiques pour autoriser cela. Cependant, la plupart des gens pensent que vous avez besoin de Putty ou d'un outil tiers pour le faire sous Windows, donc je vais me concentrer sur la façon de procéder ici.

Je veux pouvoir taper "ssh pi@hanselpi4" à partir de ma machine Windows et être automatiquement connecté. Plus précisément, je veux cliquer sur le profil et le faire fonctionner.

je vais

  • Faire une clé sur ma machine Windows. La machine FROM, dans ce cas, Windows. Ensuite, je veux ssh d'ici à la machine Linux distante.
  • Indiquez à la machine Linux (en la transférant) la partie publique de ma clé et ajoutez-la aux allow_keys d'un utilisateur spécifique.

Je vais exécuter ssh-keygen pour créer une clé à partir de ma ligne de commande sous Windows. J'appuie simplement sur Entrée pour le générer, mais vous pouvez créer votre propre nom de fichier si vous le souhaitez, utilisez simplement le chemin complet et assurez-vous de garder une trace de l'endroit où se trouvent les choses. Les valeurs par défaut sont généralement les meilleures.

>ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (C:\Users\scott/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in hanselpi4.
Your public key has been saved in hanselpi4.pub.

N'oubliez pas que le chemin est c:\users\votrenom car c'est l'équivalent Windows du dossier ~ home et que les clés sont dans c:\users\votrenom\.ssh.

Maintenant, je veux transférer ce qui se trouve dans id_rsa.pub sur mon Raspberry Pi. Vous pouvez scp (copie sécurisée) si vous le souhaitez, mais il est préférable d'ajouter la clé au fichier authorized_keys sur la machine de destination.

REMARQUE:je tape (cat sous Linux est type sous Windows) ce fichier texte et le dirige vers SSH où je me connecte à cette machine distante avec l'utilisateur pi et je cat (côté Linux maintenant) et j'ajoute>> ce texte dans le dossier .ssh/authorized_keys. Le dossier ~ est implicite mais peut être ajouté si vous le souhaitez.

Exécutez cette commande une fois sur Windows pour sortir votre clé et la rediriger vers, et l'ajouter, au bon fichier sur votre machine Linux distante. Vous serez invité à entrer votre mot de passe une fois.

type c:\users\scott\.ssh\id_rsa.pub | ssh pi@hanselpi4 'cat >> .ssh/authorized_keys'

Assurez-vous de comprendre ce qui se passe dans la ligne ci-dessus.

Ajout d'une icône de profil - la framboise en haut

À ce stade, je peux cliquer sur l'élément de menu dans le terminal Windows et être automatiquement connecté/connecté au terminal distant. Mais, scandaleusement, l'élément de menu Terminal n'a pas d'icône. C'est clairement inacceptable M$sft craint, non ? Je vais chercher une belle icône Raspberry Pi 32x32 et la mettre quelque part. Vous pouvez placer les vôtres dans une Dropbox ou OneDrive afin qu'ils soient disponibles partout où vous allez.

Maintenant, mon profil ressemble à ceci :

"profiles": [
{
"name": "ssh hanselPi4",
"tabTitle": "HanselPi4",
"commandline": "ssh pi@hanselpi4",
"icon": "c:/users/scott/downloads/icons8-raspberry-pi-32.png"
},

Qu'est-ce que c'est beau ?

Ça a l'air bien, a un joli titre et une belle icône, et je peux utiliser un raccourci clavier pour SSH automatiquement sur ma machine distante.

Une dernière note, vous avez déjà Azure Cloud Shell dans le terminal Windows (vous pouvez y accéder gratuitement à http://shell.azure.com dans votre navigateur et accéder à un conteneur Linux gratuit n'importe où et n'importe quand avec un lecteur cloud persistant ) mais vous pouvez maintenant suivre les instructions de cet article et configurer SSH en un clic vers n'importe où.

J'espère que cela vous sera utile !

Parrain : Le parrain de cette semaine, c'est... moi ! Ce blog et mon podcast sont un travail d'amour depuis plus de 18 ans. Votre parrainage paie mes factures d'hébergement pour les deux ET me permet d'acheter des gadgets à revoir ET le taco occasionnel. Rejoignez-moi !


Linux
  1. Comment définir une bannière d'avertissement SSH personnalisée ou un MOTD sous Linux

  2. Comment définir les paramètres proxy sur la ligne de commande ou le terminal Linux

  3. Comment définir le titre d'une fenêtre sous Linux

  4. Comment SCP du serveur Linux au client Windows

  5. Comment partager Internet avec Windows depuis ma machine Linux ?

Comment se connecter en SSH à votre serveur Linux à partir de Windows

Comment me connecter à Linux VPS via SSH depuis Linux et Windows OS ?

Comment se connecter en SSH à WSL2 sur Windows 10 à partir d'une machine externe

Comment se connecter en SSH à une machine Windows 10 depuis Linux OU Windows OU n'importe où

Comment utiliser SSH pour se connecter à un serveur distant sous Linux ou Windows

Comment monter un dossier Linux distant dans Windows via SSH ?