Dans un
article de blog Remote SSH précédent, nous avons expliqué comment configurer une machine virtuelle Linux et se connecter à la machine virtuelle à l'aide de l'
extension Remote-SSH dans Visual Studio Code. Dans cet article de blog, nous aborderons quelques trucs et astuces que vous pouvez utiliser pour tirer le meilleur parti de votre configuration à distance.

Se connecter à l'aide de SSH distant
L'extension Visual Studio Code Remote - SSH vous permet de vous connecter à une machine ou une machine virtuelle distante à l'aide de SSH, le tout depuis VS Code. Si l'extension n'est pas déjà installée, vous pouvez rechercher «ssh distant» dans la vue Extensions (⇧⌘X).

Après avoir installé l'extension, vous remarquerez un indicateur dans le coin inférieur gauche de la barre d'état. Cet indicateur vous indique dans quel contexte VS Code s'exécute (local ou distant). Cliquez sur l'indicateur pour faire apparaître une liste de commandes d'extension à distance.

Fichier de configuration SSH
Dans le précédent article de blog Remote SSH, nous ne nous sommes connectés qu'à une seule machine et nous l'avons fait en entrant "user @ host" lorsque cela nous était demandé. Si vous vous connectez régulièrement à plusieurs serveurs distants ou machines virtuelles locales, il existe un meilleur moyen de se connecter sans avoir à se souvenir de tous les noms d'utilisateur, adresses et options de configuration supplémentaires.
OpenSSH prend en charge l'utilisation d'un
fichier de configuration pour stocker toutes vos différentes connexions SSH. Pour utiliser un fichier de configuration SSH, cliquez sur l'indicateur distant pour faire apparaître les commandes distantes, choisissez Ouvrir le fichier de configuration et sélectionnez le fichier qui suit le chemin "Utilisateurs / {votre nom d'utilisateur} /. Ssh / config".

Voici un exemple de fichier de configuration SSH:
# Read more about SSH config files: https://linux.die.net/man/5/ssh_config Host python-linux-vm HostName <vm address> User sana IdentityFile ~/.ssh/id_python_vm Host node-vm HostName <vm address> User sana Port 5522 IdentityFile ~/.ssh/id_node_vm
Il existe de nombreuses autres
options de configuration que vous pouvez spécifier dans le format de fichier de configuration SSH. Vous obtiendrez des complétions et des colorisations dans ce fichier et vous pouvez appuyer sur (⌃Espace) pour IntelliSense pour en savoir plus sur les options de configuration.
Les options utilisées ci-dessus sont:
Vous pouvez ajouter les informations pour tous les hôtes que vous avez. Une fois que vous avez enregistré le fichier de configuration, vous pourrez voir ces hôtes dans l'explorateur distant, ainsi que tous les dossiers que vous avez ouverts sur cet hôte. Vous pouvez sélectionner l'icône à côté de chaque hôte ou dossier et il lancera une nouvelle fenêtre VS Code (instance) et vous connectera à cet hôte. Dans la capture d'écran ci-dessous, je suis connecté à ma machine distante "python-linux-vm" et l'Explorateur distant me montre les dossiers auxquels je me suis connecté par le passé, ainsi que tous les ports transférés depuis la machine distante.

Proxycommand
Parfois, vous devrez peut-être vous connecter depuis votre ordinateur de bureau ou portable à une machine distante via l'intranet de votre entreprise ou derrière un pare-feu. Dans ce cas, vous utilisez peut-être un serveur intermédiaire ou une
boîte de saut . Ce type de configuration est utile si vous travaillez dans un système sécurisé configuré pour accepter uniquement les connexions SSH à partir d'un ensemble fixe d'hôtes.
Pour utiliser une configuration de boîte de saut avec l'extension Remote - SSH, vous pouvez utiliser l'option de configuration
ProxyCommand
. Cette configuration ouvrira une connexion SSH d'arrière-plan à la boîte de saut, puis se connectera via une adresse IP privée à la cible.
Vous pouvez définir l'option de configuration
ProxyCommand
dans le fichier de configuration SSH comme ceci:
# Jump box with public IP address Host jump-box HostName 52.179.157.97 User sana IdentityFile ~/.ssh/jumpbox # Target machine with private IP address Host target-box HostName <IP address of target> User sana IdentityFile ~/.ssh/target ProxyCommand ssh -q -W %h:%p jump-box
Controlmaster
Si vous vous connectez à un hôte SSH distant en utilisant d'autres méthodes d'authentification en plus de l'authentification par clé, comme une clé à deux facteurs, un mot de passe ou une clé SSH avec une phrase de passe, vous devrez peut-être saisir les informations requises plusieurs fois.
Au lieu d'ouvrir plusieurs connexions SSH, vous pouvez utiliser l'option
ControlMaster
(uniquement sur les clients macOS / Linux) pour réutiliser une connexion existante et réduire le nombre de fois que vous devez saisir votre phrase secrète.
Pour utiliser cette fonctionnalité, ajoutez ce qui suit à votre fichier de configuration SSH:
Host * ControlMaster auto ControlPath ~/.ssh/sockets/%r@%h-%p ControlPersist 600
Machine distante hors ligne
Si vous êtes limité par un pare-feu ou que votre entreprise verrouille vos machines virtuelles et qu'elles ne peuvent pas se connecter à Internet, l'extension Remote - SSH ne pourra pas se connecter à votre machine virtuelle car VS Code doit télécharger un composant appelé VS Code Server à la machine distante.
Cependant, vous pouvez désormais résoudre ce problème en
définissant un nouveau
paramètre utilisateur dans l'extension Remote - SSH. Si vous activez le paramètre
remote.SSH.allowLocalServerDownload
, l'extension installera d'abord VS Code Server sur le client, puis le copiera sur le serveur via SCP.
Remarque: Il s'agit actuellement d'une fonctionnalité expérimentale mais elle sera activée par défaut dans la prochaine version.
Télécommande - Extension SSH Nightly
Si vous souhaitez tester de nouvelles mises à jour et fonctionnalités expérimentales dès qu'elles sont disponibles, installez l'
extension Remote - SSH Nightly (désinstallez d'abord l'extension stable Remote-SSH). Il s'agit de la version nocturne de l'extension où nous expérimentons de nouvelles fonctionnalités et de nouveaux paramètres avant de les publier dans la version stable.