La configuration d'OpenSSH pour Windows à l'aide de l'authentification par clé publique
Je vais avoir des problèmes de configuration d'OpenSSH pour Windows, à l'aide de l'authentification par clé publique.
J'ai ce travail sur mon poste de travail local et peut ssh avec une touche de machines Unix ou autres OpenSSH pour les machines Windows.
J'ai répliqué le construire sur un serveur, je peux obtenir le mot de passe d'authentification fonctionne bien, mais lorsque j'utilise les touches-je obtenir le problème suivant:
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, pour les fins de test, j'ai été juste essayer de SSH localhost, mais même lorsqu'on l'a essayé à distance, je reçois le même problème.
Encore plus étrange, c'est que lorsque j'ai à la fois le mot de passe & clé publique activé dans sshd_config
, il ne tentera d'utiliser les touches et puis la bombe avec le message ci-dessus et n'essaye même pas d'utiliser un mot de passe.
Voici les étapes que j'ai prises:
- Installer OpenSSH pour Windows
- mkgroup -l >>..\etc\groupe (ajouté groupes locaux)
- mkgroup -d >>..\etc\groupe (ajouté les groupes de domaine)
- mkpasswd -L-u openssh >>..\passwd (ajouté mon utilisateur local)
- mkpasswd -D-u jsadmint2232 >>..\passwd (ajouté mon nom de domaine de l'utilisateur)
- Édité le homedir dans passwd pour point de c:\sshusers\%USER% - où %UTILISATEUR% est le nom d'utilisateur
- Activé le mot de passe auth, clé handicapés auth
- Créé des clés ssh pour les deux jsadmint2232 /openssh et veillé à ce que les fichiers ont été créés dans les homedirs
- Ajouté des fichiers authorized_keys .ssh dirs pour chaque utilisateur et des touches supplémentaires pour la réception de la connexion des utilisateurs
- net stop opensshd /net start opensshd
- Test Mot de passe auth fonctionne à la fois localement et à distance
- Mis à jour sshd_config, à la clé d'activation auth - redémarrer opensshd
- Test de connexion et à obtenir l'erreur ci-dessus, aussi n'essayez même pas de mot de passe auth?
- Mis à jour sshd_config, pour désactiver le mot de passe auth complètement redémarrage opensshd
- Test de connexion et encore obtenir l'erreur ci-dessus
Il semble que le serveur est en train de tuer la connexion pour une raison quelconque?
OriginalL'auteur Cambolie | 2013-04-25
Vous devez vous connecter pour publier un commentaire.
Suivantes sont des étapes d'installation de OpenSSH livré avec Windows 10 v. 1803 (avril 2018 mise à jour. Voir les commentaires à ce post, il ne pourrait pas travailler avec 1809).
La configuration du serveur (élevée powershell):
Installer OpenSSH server:
Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0
.Début de l'agent et sshd services:
Start-Service ssh-agent; Start-Service sshd
(cela va générer des clés d'hôte et configuration par défaut automatiquement dans$env:ProgramData\ssh
).[Facultatif] Installer OpenSSHUtils module powershell:
Install-Module -Force OpenSSHUtils
D'installation du Client (non élevés powershell):
Générer de l'utilisateur de la clé:
cd $env:USERPROFILE\.ssh; ssh-keygen.exe
, suivez les invites, acceptez la valeur par défaut suggéré l'emplacement du fichier. Cela va créer 2 fichiers:id_rsa
etid_rsa.pub
;[Facultatif] ajouter une clé d'authentification de l'agent, de sorte que vous n'avez pas à entrer de mot de passe chaque fois que vous l'utilisez:
ssh-add .\id_rsa
(ou ce fichier a été généré);L'installation du serveur continue (non élevés powershell):
cd $env:USERPROFILE; mkdir .ssh; cd .ssh; New-Item authorized_keys
;id_rsa.pub
fichier du client vers le.ssh\authorized_keys
fichier à partir de l'étape précédente.start .
pour ouvrir l'explorateur avec le dossier en cours ($env:USERPROFILE\.ssh
);authorized_keys
, allez à laProperties -> Security -> Advanced
SYSTEM
et vous-même. Il doit y avoir exactement deux entrées d'autorisations sur le fichier. Certains guides suggèrent l'exécution de laRepair-AuthorizedKeyPermission $env:USERPROFILE\.ssh\authorized_keys
- ce qui va essayer d'ajouter lesshd
utilisateur à la liste d'autorisation et il sera briser l'authentification, donc, ne faites pas cela, ou au moins ne sont pas d'accord sur l'ajout de l'sshd
de l'utilisateur). Les deuxSYSTEM
et vous-même devrait avoir le plein contrôle sur le fichier.Client:
ssh <serverusername>@<serverhostname>
. Il devrait fonctionner à ce point.Essayé avec Windows 10 en tant que serveur et à la fois elle-même et une Debian Linux en tant que client.
EDIT: (voir la section commentaire ci-dessous)
Windows actuel construire nécessitent également le commentaire de la manière suivante dans
PS C:\ProgramData\ssh> bash -c 'vim sshd_config'
Merci!!!! J'ai eu affaire avec ce problème pendant un long moment jusqu'à ce que j'ai lu votre réponse!
Ne fonctionne pas pour moi. J'ai exactement suivi le serveur les instructions de configuration. J'ai donc ce fichier authorized_keys avec seulement de l'Utilisateur du Système et de moi-même dans la liste des autorisations comme décrit, mais SSHing au serveur de windows ne fonctionne pas avec la clé SSH. Seulement avec le mot de passe. Il fonctionne très bien avec un serveur linux en tant que cible avec le même fichier authorized_keys.
Un autre suivi et une solution pour mon problème: Dans Windows 10 1809, il est une nouvelle config entrée dans
C:\ProgramData\ssh\sshd_config
qui définit que pour les utilisateurs admin les touches sont lues à partir de__PROGRAMDATA__/ssh/administrators_authorized_keys
. De nouveau ce fichier a besoin de permissions spéciales. Seul le système de l'utilisateur et du groupe des administrateurs doivent y avoir accès.Je peux confirmer en 1809 que la solution de @kayahr présenté était ce que j'avais à faire pour l'authentification par clé publique, en raison du fait de mon utilisateur est un administrateur. Merci @kayahr!
OriginalL'auteur n0rd
J'ai résolu le problème...
Il est lié au compte qui a démarré le service de ses été en utilisant le compte Système Local - c'était de l'arrêter d'accéder à la pub de la clé et le fichier authorized_keys.
Une fois que j'ai arrêté le service et a commencé en tant qu'utilisateur, j'ai été d'essayer de se connecter, il a travaillé!
Donc, fondamentalement, vous avez besoin pour commencer avec un compte de service et puis externe aux utilisateurs de se connecter en tant qu'utilisateur.
vous vous rendez compte ce n'est pas un Unix? il n'y a pas de chmod, pas de /etc, pas de /var, etc
Que voulez-vous dire que vous "arrêté le service et a commencé en tant qu'utilisateur, j'ai été d'essayer de se connecter?" Je ne pense pas que vous voulez dire-je utiliser mon compte d'utilisateur de domaine. Alors vous me conseillez de commencer avec un compte de service, mais lequel?
OriginalL'auteur Cambolie
Si vous utilisez mls-software.com's version d'OpenSSH voici une autre note.
Si vous installez à l'aide de la SSHD_SERVER compte et la séparation des privilèges, vous serez en mesure d'utiliser l'authentification par clé publique (par http://www.mls-software.com/opensshd-pki.html). Toutefois, si l'UAC est activé, vous ne serez pas réussi à l'installer. Utilisateur(s) ne sera pas créé correctement et que le service ne sera pas créé. Manuellement en essayant d'obtenir ces articles après le fait est très difficile. Simplement désactiver l'UAC avant installation le processus d'installation va créer correctement les utilisateur(s) et le service. Après l'installation, vous pouvez réactiver le contrôle de compte d'utilisateur.
Quand j'ai créé le SSHD_SERVER compte manuellement l'authentification de réussir lorsque l'authentification par mot de passe, mais le client de la résiliation de la relation avec les "/bin/bash": Opération non permise". L'authentification avec les clés publiques a été fermée par le serveur (erreur d'origine posté par Cambolie).
Pourquoi est-il important pour la MLS OpenSSH? Pourquoi ne peut-il pas s'exécuter en tant que Système Local (ou d'une autre, même domaine, le compte?)
OriginalL'auteur Dustin
Je l'ai résolu en:
OriginalL'auteur Mikhail Orlov