GNU/Linux >> Tutoriels Linux >  >> Linux

Établir une connexion SSH entre Windows et Linux

Le protocole shell sécurisé (SSH) est la méthode la plus courante pour contrôler des machines distantes via la ligne de commande dans le monde Linux. SSH est un véritable original Linux, et il gagne également en popularité dans le monde Windows. Il existe même une documentation Windows officielle pour SSH, qui couvre le contrôle des machines Windows à l'aide d'OpenSSH.

Cet article décrit comment établir une connexion SSH d'une machine Windows à un système Linux Fedora 33 à l'aide de l'outil open source populaire PuTTY.

Manières d'utiliser SSH

Plus de ressources Linux

  • Aide-mémoire des commandes Linux
  • Aide-mémoire des commandes Linux avancées
  • Cours en ligne gratuit :Présentation technique de RHEL
  • Aide-mémoire sur le réseau Linux
  • Aide-mémoire SELinux
  • Aide-mémoire sur les commandes courantes de Linux
  • Que sont les conteneurs Linux ?
  • Nos derniers articles Linux

SSH utilise une architecture client-serveur, où un client SSH établit une connexion à un serveur SSH. Le serveur SSH fonctionne généralement comme un démon système, il est donc souvent appelé SSHD. Vous pouvez difficilement trouver une distribution Linux qui ne soit pas livrée avec le démon SSH. Dans Fedora 33, le démon SSH est installé mais pas activé.

Vous pouvez utiliser SSH pour contrôler presque n'importe quelle machine Linux, qu'elle s'exécute en tant que machine virtuelle ou en tant que périphérique physique sur votre réseau. Un cas d'utilisation courant est la configuration sans tête d'appareils embarqués, y compris le Raspberry Pi. SSH peut également être utilisé pour tunneler d'autres services réseau. Étant donné que le trafic SSH est chiffré, vous pouvez utiliser SSH comme couche de transport pour tout protocole qui ne fournit pas de chiffrement par défaut.

Dans cet article, j'expliquerai quatre manières d'utiliser SSH :1. comment configurer le démon SSH côté Linux, 2. comment configurer une connexion à une console distante, 3. comment copier des fichiers sur le réseau, et 4. . comment tunneliser un certain protocole sur SSH.

1. Configurer SSHD

Le système Linux (Fedora 33 dans mon cas) agit comme le serveur SSH qui permet au client PuTTY SSH de se connecter. Tout d'abord, vérifiez la configuration SSH du démon. Le fichier de configuration se trouve dans /etc/ssh/sshd_config et contient de nombreux commutateurs qui peuvent être activés en commentant les lignes associées :

#       $OpenBSD: sshd_config,v 1.100 2016/08/15 12:32:04 naddy Exp $

# This is the sshd server system-wide configuration file.  See
# sshd_config(5) for more information.

# This sshd was compiled with PATH=/usr/local/sbin:/usr/sbin:/sbin:/usr/local/bin:/usr/bin:/bin

# The strategy used for options in the default sshd_config shipped with
# OpenSSH is to specify options with their default value where
# possible, but leave them commented.  Uncommented options override the
# default value.

Include /etc/ssh/sshd_config.d/*.conf

#Port 22
#AddressFamily any
#ListenAddress 0.0.0.0
#ListenAddress ::

La configuration par défaut, où aucune ligne n'est décommentée, devrait fonctionner pour cet exemple. Vérifiez si le démon SSH est déjà en cours d'exécution en tapant systemctl status sshd :

$ systemctl status sshd
● sshd.service - OpenSSH server daemon
   Loaded: loaded (/usr/lib/systemd/system/sshd.service; enabled; vendor preset: enabled)
   Active: active (running) since Fri 2018-06-22 11:12:05 UTC; 2 years 11 months ago
     Docs: man:sshd(8)
           man:sshd_config(5)
 Main PID: 577 (sshd)
    Tasks: 1 (limit: 26213)
   CGroup: /system.slice/sshd.service
           └─577 /usr/sbin/sshd -D [email protected],chacha20-[...]

S'il est inactif, démarrez-le avec le systemctl start sshd commande.

2. Configurer une console distante

Sous Windows, téléchargez le programme d'installation de PuTTY, puis installez-le et ouvrez-le. Vous devriez voir une fenêtre comme celle-ci :

Dans le Nom d'hôte (ou adresse IP) champ de saisie, entrez les informations de connexion pour votre système Linux. Dans cet exemple, j'ai configuré une machine virtuelle Fedora 33 avec une carte réseau pontée que je peux utiliser pour contacter le système à l'adresse IP 192.168.1.60 . Cliquez sur Ouvrir , et une fenêtre comme celle-ci devrait s'ouvrir :

Il s'agit d'un mécanisme de sécurité SSH pour empêcher une attaque de l'homme du milieu. L'empreinte digitale dans le message doit correspondre à la clé sur le système Linux à /etc/ssh/ssh_host_ed25519_key.pub. . PuTTY imprime la clé sous forme de hachage MD5. Pour vérifier son authenticité, passez au système Linux, ouvrez un shell de commande et entrez :

ssh-keygen -l -E md5 -f /etc/ssh/ssh_host_ed25519_key.pub

La sortie doit correspondre à l'empreinte affichée par PuTTY :

$ ssh-keygen -l -E md5 -f /etc/ssh/ssh_host_ed25519_key.pub
256 MD5:E4:5F:01:05:D0:F7:DC:A6:32 no comment (ED25519)

Confirmez l'alerte de sécurité PuTTY en cliquant sur Oui . L'empreinte digitale du système hôte se trouve maintenant dans la liste de confiance de PuTTY, qui se trouve dans le registre Windows sous :

HKEY_CURRENT_USER\SOFTWARE\SimonTatham\PuTTY\SshHostKeys

Entrez vos identifiants de connexion corrects et vous devriez être sur la console dans votre répertoire personnel :

3. Copier des fichiers sur le réseau

En plus de la console distante, vous pouvez utiliser PuTTY pour transférer des fichiers via SSH. Regardez dans le dossier d'installation sous C:\\Program Files (x86)\\PuTTY et trouvez pscp.exe . Vous pouvez l'utiliser pour copier des fichiers vers et depuis un système Linux.

Ouvrez une invite de commande avec Windows + R et entrez cmd . Copiez le fichier MyFile.txt depuis votre répertoire d'accueil utilisateur Linux vers votre répertoire d'accueil Windows en saisissant :

C:\"Program Files (x86)"\PuTTY\pscp.exe [email protected]:/home/stephan/MyFile.txt .

Pour copier un fichier du répertoire d'accueil de Windows vers le répertoire d'accueil de l'utilisateur Linux, saisissez :

C:\"Program Files (x86)"\PuTTY\pscp.exe MyFile.txt [email protected]:/home/stephan/

Comme vous l'avez peut-être déjà compris, la structure générale de la commande de copie est la suivante :

pscp.exe <source> <target>

4. Tunnel un protocole

Imaginez que vous ayez une machine Linux qui exécute un service basé sur HTTP pour une application arbitraire. Vous souhaitez accéder à ce service HTTP à partir de votre machine Windows via Internet. Bien entendu, vous ne pouvez pas exposer le port TCP associé au public car :

  1. Le serveur exécute HTTP, pas HTTPS
  2. Il n'y a pas de gestion des utilisateurs ni de connexion du tout

À première vue, il semble impossible de mettre en place cette architecture sans produire une horrible faille de sécurité. Mais SSH permet de configurer relativement facilement une solution sûre pour ce scénario.

Je vais démontrer cette procédure avec mon projet logiciel Pythonic. S'exécutant en tant que conteneur, Pythonic expose deux ports TCP :le port TCP 7000 (éditeur principal) et le port TCP 8000 (l'éditeur de code source du serveur de code).

Pour installer Pythonic sur une machine Linux, exécutez :

podman pull pythonicautomation/pythonic
podman run -d -p 7000:7000 -p 8000:8000 pythonic

Basculez vers votre ordinateur Windows, ouvrez PuTTY et accédez à Connexion -> SSH -> Tunnels . Ajoutez les deux ports TCP que vous souhaitez rediriger :

  • Source :7000 / Destination :localhost:7000
  • Source :8000 / Destination :localhost:8000

Revenez ensuite à la Session section et établissez une connexion SSH comme vous l'avez fait auparavant. Ouvrez un navigateur et accédez à http://localhost:7000; vous devriez voir un écran comme celui-ci :

Vous avez configuré avec succès la redirection de port !

Avertissement :Si vous exposez le port TCP 22 au public, n'utilisez pas d'identifiants de connexion faciles à deviner. Vous recevrez des tentatives de connexion du monde entier essayant d'accéder à votre machine Linux avec des informations d'identification standard communes. Au lieu de cela, autorisez uniquement les clients connus à se connecter. Cette restriction de connexion peut être obtenue à l'aide de la cryptographie à clé publique, qui utilise une paire de clés dans laquelle la clé publique est stockée sur la machine hôte SSH et la clé privée reste sur le client.

Débogage

Si vous avez du mal à vous connecter à votre machine Linux, vous pouvez suivre les processus de votre démon SSH avec :

journalctl -f -u sshd

Voici à quoi ressemble un processus de connexion ordinaire avec LogLevel DEBUG :

En savoir plus

Cet article a à peine effleuré la surface des façons d'utiliser SSH. Si vous recherchez des informations sur un cas d'utilisation spécifique, vous pouvez probablement le trouver parmi les tonnes de tutoriels SSH sur Internet. J'utilise beaucoup PuTTY au travail car sa configuration facile et sa bonne interopérabilité entre les systèmes d'exploitation en font un outil de couteau suisse pour les solutions de connectivité.


Linux
  1. Comment configurer le serveur SAMBA et transférer des fichiers entre Linux et Windows

  2. Interopérabilité Windows et Linux :un regard sur Samba

  3. Windows - Dossier partagé entre l'invité Windows Qemu et l'hôte Linux ?

  4. Différence entre GNUWin32 et cygwin

  5. Comment configurer une connexion Wifi-Direct entre Android et Linux

Partagez facilement des fichiers entre Linux, Windows et Mac à l'aide de NitroShare

Comment partager des fichiers de jeu Steam entre Linux et Windows

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

Un gars Windows dans un monde Linux :VS Code et SSH distant

Partage de fichiers entre Linux Mint et Windows 10

différence entre netstat et ss sous linux?