GNU/Linux >> Tutoriels Linux >  >> Linux

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

J'ai chutté partout ces derniers temps. Je me connecte en SSH à Linux à partir de Windows à l'aide du client OpenSSH intégré que Windows 10 a livré pendant des années que vous ne connaissiez pas.;) Vous n'avez pas besoin de Putty pour SSH avec Windows (à moins que cela ne vous rende heureux, alors mastiquez-vous, mon ami.)

Ajout du serveur OpenSSH à Windows

À partir d'un PowerShell administratif, je verrai ce que j'ai activé avec OpenSSH. Je peux également le faire en tapant "Fonctionnalités Windows" dans le menu Démarrer.

> Get-WindowsCapability -Online | ? Name -like 'OpenSSH*'

Name : OpenSSH.Client~~~~0.0.1.0
State : Installed

Name : OpenSSH.Server~~~~0.0.1.0
State : NotPresent

On dirait que j'ai le client OpenSSH mais pas le serveur. Je peux SSH depuis Windows, mais pas.

Je vais l'ajouter avec une commande similaire avec la version super bizarre mais apparemment nécessaire à la fin :

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

Démarrer SSHD sur Windows en tant que service

Une fois que cela est terminé (et vous pouvez bien sûr l'exécuter avec OpenSSH.Client également pour obtenir les deux côtés si vous ne l'aviez pas fait), vous pouvez démarrer le serveur SSH (en tant que service Windows) avec cela, puis vous assurer qu'il fonctionne.

Start-Service sshd
Get-Service sshd

Puisqu'il s'agit d'un service Windows, vous pouvez le voir comme "OpenSSH SSH Server" dans services.msc et le configurer pour qu'il démarre automatiquement au démarrage si vous le souhaitez. Vous pouvez le refaire, à partir de PowerShell si vous préférez

Set-Service -Name sshd -StartupType 'Automatic'

N'oubliez pas que nous SSH sur le port 22, vous aurez donc une règle de pare-feu entrant sur 22 à ce stade. C'est à vous d'être conscient de la sécurité. Peut-être que vous n'autorisez le SSH sur votre machine Windows qu'avec des clés publiques (pas de mot de passe) ou peut-être que cela ne vous dérange pas. Sachez simplement que c'est sur vous, pas sur moi.

Maintenant, depuis n'importe quelle machine Linux (ou Windows), je peux me connecter en SSH à ma machine Windows comme un pro ! Notez que j'utilise le suffixe de domaine .local pour m'assurer que je n'ai pas de machine sur mon VPN (en restant dans mon sous-réseau local)

$ ssh [email protected]
Microsoft Windows [Version 10.0.19041.113]
(c) 2020 Microsoft Corporation. All rights reserved.

scott@IRONHEART C:\Users\scott>pwsh
PowerShell 7.0.0
Copyright (c) Microsoft Corporation. All rights reserved.

https://aka.ms/powershell
Type 'help' to get help.

Loading personal and system profiles took 1385ms.
⚡ scott@IRONHEART>

Notez que lorsque je me suis connecté en SSH à Windows, j'ai obtenu le shell cmd.exe par défaut. Rappelez-vous aussi qu'il y a une différence entre une console, un terminal et un shell ! Je peux ssh avec n'importe quel terminal sur n'importe quelle machine et finir sur n'importe quel shell. Dans ce cas, le DEFAULT était cmd.exe, ce qui n'est pas optimal.

Configuration du shell par défaut pour OpenSSH sous Windows

Sur mon serveur (la machine Windows sur laquelle je me connecte en SSH), je vais définir une clé de registre pour définir le shell par défaut. Dans ce cas, j'utiliserai PowerShell Core multiplateforme open source. Vous pouvez utiliser tout ce qui vous rend heureux.

New-ItemProperty -Path "HKLM:\SOFTWARE\OpenSSH" -Name DefaultShell -Value "C:\Program Files\PowerShell\7\pwsh.exe" -PropertyType String -Force

Désormais, lorsque je me connecte en ssh à ma machine Windows depuis un autre emplacement (même mon iPad !), j'obtiens le shell que je veux :

$ ssh [email protected]
PowerShell 7.0.0
Copyright (c) Microsoft Corporation. All rights reserved.

https://aka.ms/powershell
Type 'help' to get help.

Loading personal and system profiles took 1854ms.
⚡ scott@IRONHEART>

Mieux encore, si je voulais ajouter un élément de menu (profil) à mon terminal Windows avec une entrée pour ma machine Windows qui me connecterait automatiquement à partir d'ailleurs à l'aide de clés publiques, je pourrais le faire aussi !

De plus, maintenant que cela est configuré, je peux utiliser WinSCP (disponible sur le Windows Store) ainsi que scp (Secure Copy) pour transférer des fichiers.

Bien sûr, vous pouvez également utiliser WinRM ou PowerShell Remoting via SSH, mais pour mon petit réseau interne, j'ai trouvé ce mécanisme simple et propre. Maintenant, mon silence est non confessionnel !

Parrain : Avez-vous déjà essayé de développer dans Rider ? Cet IDE multiplateforme rapide et riche en fonctionnalités améliore votre code pour les applications .NET, ASP.NET, .NET Core, Xamarin et Unity sous Windows, Mac et Linux.


Linux
  1. Comment SSH sur Linux à partir d'Android

  2. Ssh - Accéder au serveur Linux à partir d'une machine Windows en mode graphique via Ssh ?

  3. Arrêter la machine Windows à partir du terminal Linux

  4. Comment SCP du serveur Linux au client Windows

  5. Comment coller dans nano à partir du presse-papiers ?

Comment SSH dans un répertoire particulier sous Linux

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

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

LA FAÇON FACILE comment SSH dans Bash et WSL2 sur Windows 10 à partir d'une machine externe

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

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