Je rencontre des problèmes pour configurer OpenSSH pour Windows en utilisant l'authentification par clé publique.
Je travaille sur mon bureau local et je peux utiliser SSH avec une clé de machines Unix ou d’autres machines OpenSSH pour Windows.
J'ai répliqué la construction sur un serveur, l'authentification par mot de passe fonctionne correctement, mais lorsque j'utilise les clés, le problème suivant s'affiche:
debug1: Authentications that can continue: publickey,password,keyboard-interactive
debug3: start over, passed a different list publickey,password,keyboard-interactive
debug3: preferred publickey,keyboard-interactive,password
debug3: authmethod_lookup publickey
debug3: remaining preferred: keyboard-interactive,password
debug3: authmethod_is_enabled publickey
debug1: Next authentication method: publickey
debug1: Offering RSA public key: /cygdrive/c/sshusers/jsadmint2232/.ssh/id_rsa
debug3: send_pubkey_test
debug2: we sent a publickey packet, wait for reply
Connection closed by 127.0.0.1
Donc, dans le but de tester, je viens d'essayer de SSH à localhost, mais même quand essayé à distance, j'obtiens le même problème.
Encore plus étrange, c’est que lorsque le mot de passe et la clé publique sont activés dans sshd_config
, il essaiera uniquement d’utiliser des clés, puis s’envolera avec le message ci-dessus, sans même essayer d’utiliser un mot de passe.
Voici les mesures que j'ai prises:
Il semble que le serveur tue la connexion pour une raison quelconque?
J'ai résolu le problème ...
Il est lié au compte qui a démarré le service (il utilisait le compte système local), ce qui l’empêchait d’accéder à la clé de publication et au fichier allowed_keys.
Une fois que j'ai arrêté le service et commencé en tant qu'utilisateur auquel je tentais de me connecter, cela a fonctionné!
Donc, en gros, vous devez commencer par un compte de service, puis les utilisateurs externes se connectent en tant que cet utilisateur.
Voici les étapes de configuration d'OpenSSH livré avec Windows 10 v.1803 (mise à jour d'avril 2018). Voir les commentaires dans cet article, il est possible que cela ne fonctionne pas avec 1809).
Configuration du serveur (PowerShell élevé):
Installez le serveur OpenSSH: Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0
.
Démarrer l'agent et les services sshd: Start-Service ssh-agent; Start-Service sshd
(ceci générera automatiquement les clés de l'hôte et la configuration par défaut dans $env:ProgramData\ssh
).
[Facultatif] Installez le module OpenSSHUtils powershell: Install-Module -Force OpenSSHUtils
Configuration du client (PowerShell non élevé):
Générez la clé utilisateur: cd $env:USERPROFILE\.ssh; ssh-keygen.exe
, suivez les instructions et acceptez l'emplacement de fichier suggéré par défaut. Cela créera 2 fichiers: id_rsa
et id_rsa.pub
;
[Facultatif] ajoutez la clé à l'agent d'authentification afin d'éviter de saisir un mot de passe à chaque utilisation: ssh-add .\id_rsa
(ou le fichier généré);
Configuration du serveur poursuivie (PowerShell non élevé):
cd $env:USERPROFILE; mkdir .ssh; cd .ssh; New-Item authorized_keys
;id_rsa.pub
du client dans le fichier .ssh\authorized_keys
de l'étape précédente.start .
pour ouvrir l'Explorateur avec le dossier actuel ($env:USERPROFILE\.ssh
);authorized_keys
, allez à Properties -> Security -> Advanced
SYSTEM
et de vous-même. Il doit y avoir exactement deux entrées de permission sur le fichier. Certains guides suggèrent d’exécuter le Repair-AuthorizedKeyPermission $env:USERPROFILE\.ssh\authorized_keys
- ceci essayera d’ajouter l’utilisateur sshd
à la liste des permissions et il sera rompra l’authentification, donc ne le faites pas, ou du moins ne vous mettez pas d’accord pour ajouter l’utilisateur sshd
) . SYSTEM
et vous-même devriez avoir le plein contrôle du fichier.Client:
ssh <serverusername>@<serverhostname>
. Cela devrait fonctionner à ce stade.J'ai essayé avec Windows 10 en tant que serveur et les deux et avec Debian Linux en tant que client.
EDIT: (voir la section commentaire ci-dessous) La construction actuelle de Windows nécessite également de commenter ce qui suit dans
PS C:\ProgramData\ssh> bash -c 'vim sshd_config'
# Match Group administrators
# AuthorizedKeysFile __PROGRAMDATA__/ssh/administrators_authorized_keys
Si vous utilisez la version d'OpenSSH de mls-software.com, voici une autre remarque.
Si vous installez à l'aide du compte SSHD_SERVER et de la séparation des privilèges, vous pourrez utiliser l'authentification par clé publique (selon http://www.mls-software.com/opensshd-pki.html ). Toutefois, si le contrôle de compte d'utilisateur est activé, l'installation ne sera pas réussie. Les utilisateurs ne seront pas créés correctement et le service ne sera pas créé. Il est très difficile d’essayer manuellement d’obtenir ces articles après coup. Désactiver simplement le contrôle de compte d'utilisateur avant l'installation permettra au processus d'installation de créer correctement le ou les utilisateurs et le service. Après l'installation, vous pouvez réactiver le contrôle de compte d'utilisateur.
Lorsque j'ai créé le compte SSHD_SERVER manuellement, l'authentification a réussi lors de l'utilisation de l'authentification par mot de passe, mais le client a mis fin à la connexion avec "/ bin/bash: opération non autorisée". L'authentification avec les clés publiques a été fermée par le serveur (erreur originale signalée par Cambolie).
Je l'ai résolu par: